既往缓存代码修改,缓存key 整理

This commit is contained in:
2024-08-22 09:30:57 +08:00
parent 6a41c33d34
commit e5c35f7fab
18 changed files with 146 additions and 374 deletions
@@ -2,6 +2,7 @@
using IRaCIS.Application.Contracts;
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Filter;
using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.Service.Third_partyProject.DTO;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain.Share;
@@ -14,6 +15,7 @@ using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using ZiggyCreatures.Caching.Fusion;
namespace IRaCIS.Core.Application.Service.Third_partyProject
{
@@ -84,7 +86,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject
[HttpPost]
public async Task<PageOutput<VisitTaskDTO_UltrasonicDicom>> GetVisitTaskList(VisitTaskQuery_UltrasonicDicom queryVisitTask)
{
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false && t.TaskState == TaskState.Effect &&t.TaskAllocationState==TaskAllocationState.Allocated && t.SourceSubjectVisitId != null)
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false && t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated && t.SourceSubjectVisitId != null)
.WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId)
.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
@@ -193,7 +195,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject
[HttpPost]
public async Task<List<InstancePathDTO>> GetStudyModalityOSSPath(List<Guid> seriesIdList, [FromServices] IRepository<DicomSeries> _dicomSeriesRepository)
{
return await _dicomSeriesRepository.Where(t => seriesIdList.Contains(t.Id)).SelectMany(t => t.DicomInstanceList).Select(t => new InstancePathDTO() {InstancePath= t.Path,StudyCode=t.DicomStudy.StudyCode , SopInstanceUid = t.SopInstanceUid, StudyInstanceUid = t.StudyInstanceUid} ).ToListAsync();
return await _dicomSeriesRepository.Where(t => seriesIdList.Contains(t.Id)).SelectMany(t => t.DicomInstanceList).Select(t => new InstancePathDTO() { InstancePath = t.Path, StudyCode = t.DicomStudy.StudyCode, SopInstanceUid = t.SopInstanceUid, StudyInstanceUid = t.StudyInstanceUid }).ToListAsync();
}
@@ -203,7 +205,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject
/// <param name="incommand"></param>
/// <param name="_studyMonitorRepository"></param>
/// <param name="_distributedLockProvider"></param>
/// <param name="_provider"></param>
/// <param name="_fusionCache"></param>
/// <param name="_dicomSeriesRepository"></param>
/// <param name="_dicomInstanceRepository"></param>
/// <returns></returns>
@@ -212,7 +214,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject
public async Task<IResponseOutput> AddOrUpdateArchiveStudy(NewArchiveStudyCommand incommand,
[FromServices] IRepository<StudyMonitor> _studyMonitorRepository,
[FromServices] IDistributedLockProvider _distributedLockProvider,
[FromServices] IEasyCachingProvider _provider,
[FromServices] IFusionCache _fusionCache,
[FromServices] IRepository<DicomSeries> _dicomSeriesRepository,
[FromServices] IRepository<DicomInstance> _dicomInstanceRepository)
{
@@ -241,14 +243,14 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject
var dbStudyCodeIntMax = _studyRepository.Where(s => s.TrialId == trialId).Select(t => t.Code).DefaultIfEmpty().Max();
//获取缓存中的值 并发的时候,需要记录,已被占用的值 这样其他线程在此占用的最大的值上递增
var cacheMaxCodeInt = _provider.Get<int>($"{trialId}_{StaticData.CacheKey.StudyMaxCode}").Value;
var cacheMaxCodeInt = await _fusionCache.GetOrDefaultAsync<int>(CacheKeys.TrialStudyMaxCode(trialId));
int currentNextCodeInt = cacheMaxCodeInt > dbStudyCodeIntMax ? cacheMaxCodeInt + 1 : dbStudyCodeIntMax + 1;
study.Code = currentNextCodeInt;
study.StudyCode = AppSettings.GetCodeStr(currentNextCodeInt, nameof(DicomStudy));
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.StudyMaxCode}", study.Code, TimeSpan.FromMinutes(30));
await _fusionCache.SetAsync<int>(CacheKeys.TrialStudyMaxCode(trialId), study.Code, TimeSpan.FromMinutes(30));
}
@@ -389,7 +391,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject
}
finally
{
_provider.Remove($"StudyUid_{incommand.TrialId}_{incommand.Study.StudyInstanceUid}");
await _fusionCache.RemoveAsync(CacheKeys.TrialStudyUidUploading(incommand.TrialId,incommand.Study.StudyInstanceUid));
}