forked from ddrilling/AsbCloudServer
replace CacheDb in OperationsStatService by IMemoryCache
This commit is contained in:
parent
e8ae5674c1
commit
e837baf5e7
@ -1,9 +1,9 @@
|
|||||||
using AsbCloudApp.Data;
|
using AsbCloudApp.Data;
|
||||||
using AsbCloudApp.Services;
|
using AsbCloudApp.Services;
|
||||||
using AsbCloudDb.Model;
|
using AsbCloudDb.Model;
|
||||||
using AsbCloudInfrastructure.Services.Cache;
|
|
||||||
using Mapster;
|
using Mapster;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -15,18 +15,14 @@ namespace AsbCloudInfrastructure.Services.WellOperationService
|
|||||||
public class OperationsStatService : IOperationsStatService
|
public class OperationsStatService : IOperationsStatService
|
||||||
{
|
{
|
||||||
private readonly IAsbCloudDbContext db;
|
private readonly IAsbCloudDbContext db;
|
||||||
|
private readonly IMemoryCache memoryCache;
|
||||||
private readonly IWellService wellService;
|
private readonly IWellService wellService;
|
||||||
private readonly CacheTable<WellSectionType> cacheSectionsTypes;
|
|
||||||
private readonly CacheTable<WellType> cacheWellType;
|
|
||||||
private readonly CacheTable<Cluster> cacheCluster;
|
|
||||||
|
|
||||||
public OperationsStatService(IAsbCloudDbContext db, CacheDb cache, IWellService wellService)
|
public OperationsStatService(IAsbCloudDbContext db, IMemoryCache memoryCache, IWellService wellService)
|
||||||
{
|
{
|
||||||
this.db = db;
|
this.db = db;
|
||||||
|
this.memoryCache = memoryCache;
|
||||||
this.wellService = wellService;
|
this.wellService = wellService;
|
||||||
cacheSectionsTypes = cache.GetCachedTable<WellSectionType>((DbContext)db);
|
|
||||||
cacheWellType = cache.GetCachedTable<WellType>((DbContext)db);
|
|
||||||
cacheCluster = cache.GetCachedTable<Cluster>((DbContext)db);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<StatClusterDto> GetStatClusterAsync(int idCluster, int idCompany, CancellationToken token = default)
|
public async Task<StatClusterDto> GetStatClusterAsync(int idCluster, int idCompany, CancellationToken token = default)
|
||||||
@ -44,7 +40,9 @@ namespace AsbCloudInfrastructure.Services.WellOperationService
|
|||||||
|
|
||||||
var statsWells = await GetWellsStatAsync(wells, token).ConfigureAwait(false);
|
var statsWells = await GetWellsStatAsync(wells, token).ConfigureAwait(false);
|
||||||
|
|
||||||
var cluster = await cacheCluster.FirstOrDefaultAsync(c => c.Id == idCluster, token);
|
var cluster = (await memoryCache
|
||||||
|
.GetOrCreateBasicAsync<Cluster>(db, token))
|
||||||
|
.FirstOrDefault(c => c.Id == idCluster);
|
||||||
var statClusterDto = new StatClusterDto
|
var statClusterDto = new StatClusterDto
|
||||||
{
|
{
|
||||||
Id = idCluster,
|
Id = idCluster,
|
||||||
@ -133,7 +131,9 @@ namespace AsbCloudInfrastructure.Services.WellOperationService
|
|||||||
|
|
||||||
private async Task<StatWellDto> CalcWellStatAsync(Well well, CancellationToken token = default)
|
private async Task<StatWellDto> CalcWellStatAsync(Well well, CancellationToken token = default)
|
||||||
{
|
{
|
||||||
var wellType = await cacheWellType.FirstOrDefaultAsync(t => t.Id == well.IdWellType, token);
|
var wellType = (await memoryCache
|
||||||
|
.GetOrCreateBasicAsync<WellType>(db, token))
|
||||||
|
.FirstOrDefault(t => t.Id == well.IdWellType);
|
||||||
var statWellDto = new StatWellDto()
|
var statWellDto = new StatWellDto()
|
||||||
{
|
{
|
||||||
Id = well.Id,
|
Id = well.Id,
|
||||||
@ -169,7 +169,8 @@ namespace AsbCloudInfrastructure.Services.WellOperationService
|
|||||||
.Select(o => o.IdWellSectionType)
|
.Select(o => o.IdWellSectionType)
|
||||||
.Distinct();
|
.Distinct();
|
||||||
|
|
||||||
var sectionTypes = cacheSectionsTypes
|
var sectionTypes = memoryCache
|
||||||
|
.GetOrCreateBasic<WellSectionType>(db)
|
||||||
.Where(s => sectionTypeIds.Contains(s.Id))
|
.Where(s => sectionTypeIds.Contains(s.Id))
|
||||||
.ToDictionary(s => s.Id);
|
.ToDictionary(s => s.Id);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user