diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs index 3fce9aba9..be2f846a7 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs @@ -110,64 +110,6 @@ namespace IRaCIS.Core.Application.Services } } - // 是否全局阅片 - var isGlobalReading = await _trialRepository.Where(x => x.Id == dbBeforeEntity.TrialId).Select(x => x.IsGlobalReading).FirstOrDefaultAsync(); - if (isGlobalReading) - { - // 末次访视添加全局阅片 - if (dbBeforeEntity.IsFinalVisit == false && svCommand.IsFinalVisit == true) - { - - ReadingPeriodSet? readingPeriodSet = await _readingPeriodSetRepository.FirstOrDefaultNoTrackingAsync(x => x.TrialId == dbBeforeEntity.TrialId && x.IsGlobal); - - if (readingPeriodSet == null) - { - readingPeriodSet = new ReadingPeriodSet() - { - Id = NewId.NextGuid(), - ReadingScope = ReadingScopeEnum.All, - ReadingSetType = ReadingSetType.ImageReading, - IsTakeEffect = ReadingPeriodStatus.TakeEffect, - ReadingPeriodName = "Global", - TrialId = dbBeforeEntity.TrialId, - - EffectOfTime = DateTime.Now, - IsGlobal = true, - }; - - - await _readingPeriodSetRepository.AddAsync(readingPeriodSet); - - } - - await _readingPeriodPlanRepository.AddAsync(new ReadingPeriodPlan() - { - SubjectVisitId = dbBeforeEntity.Id, - ReadingPeriodSetId = readingPeriodSet.Id, - }); - - - //var trialid = await _subjectVisitRepository.Where(x => x.Id == svCommand.Id).Select(x => x.TrialId).FirstOrDefaultAsync(); - - // 当前访视没有阅片期才添加 - if (!await _readModuleRepository.AnyAsync(x => x.SubjectVisitId == svCommand.Id && x.ReadingSetType == ReadingSetType.ImageReading)) - { - await _readModuleRepository.AddAsync(new ReadModule() - { - ReadingPeriodSetId = readingPeriodSet.Id, - IsUrgent = dbBeforeEntity.IsUrgent, - SubjectVisitId = svCommand.Id.Value, - Status = ReadModuleEnum.TaskAllocation, - SubjectId = dbBeforeEntity.SubjectId, - ModuleName = "Global",// 全局阅片 - ReadingSetType = ReadingSetType.ImageReading, - ModuleType = ModuleTypeEnum.Global, - TrialId= dbBeforeEntity.TrialId, - VisitNum= dbBeforeEntity.VisitNum, - }); - } - } - } } diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs index a12d3398b..40ba64e38 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs @@ -1,6 +1,8 @@ using EntityFrameworkCore.Triggered; using IRaCIS.Core.Domain.Share; +using IRaCIS.Core.Domain.Share.Reading; using IRaCIS.Core.Infrastructure; +using MassTransit; namespace IRaCIS.Core.Application.Triggers { @@ -11,11 +13,13 @@ namespace IRaCIS.Core.Application.Triggers { private readonly IRepository _subjectVisitRepository; private readonly IRepository _subjectRepository; + private readonly IRepository _repository; - public SubjectVisitFinalVisitTrigger(IRepository subjectVisitRepository, IRepository subjectRepository) + public SubjectVisitFinalVisitTrigger(IRepository subjectVisitRepository, IRepository subjectRepository, IRepository repository) { _subjectVisitRepository = subjectVisitRepository; _subjectRepository = subjectRepository; + _repository = repository; } public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) @@ -39,14 +43,14 @@ namespace IRaCIS.Core.Application.Triggers //回退 await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisit.SubjectId, - u => new Subject() { Status = SubjectStatus.OnVisit, FinalSubjectVisitId =null }); + u => new Subject() { Status = SubjectStatus.OnVisit, FinalSubjectVisitId = null }); await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitExecuted == VisitExecutedEnum.Unavailable, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.UnExecuted }); } } } - else if(context.ChangeType == ChangeType.Added && subjectVisit.IsFinalVisit) + else if (context.ChangeType == ChangeType.Added && subjectVisit.IsFinalVisit) { await VerifyDealFinalVisitAsync(subjectVisit); } @@ -56,7 +60,7 @@ namespace IRaCIS.Core.Application.Triggers } - private async Task VerifyDealFinalVisitAsync(SubjectVisit subjectVisit) + private async Task VerifyDealFinalVisitAsync(SubjectVisit subjectVisit) { if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum && (t.SubmitState == SubmitStateEnum.ToSubmit || t.SubmitState == SubmitStateEnum.Submitted))) @@ -71,8 +75,71 @@ namespace IRaCIS.Core.Application.Triggers //末次访视后的 访视设置为不可用 await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum && t.VisitExecuted == VisitExecutedEnum.UnExecuted, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable }); + + + var trialId = subjectVisit.TrialId; + var subjectVisitId= subjectVisit.Id; + // 是否全局阅片 + var isGlobalReading = await _repository.Where(x => x.Id == trialId).Select(x => x.IsGlobalReading).FirstOrDefaultAsync(); + + + if (isGlobalReading) + { + + if (!await _repository.AnyAsync(x => x.TrialId == trialId && x.IsGlobal)) + { + var readingPeriodSet = new ReadingPeriodSet() + { + Id = NewId.NextGuid(), + ReadingScope = ReadingScopeEnum.All, + ReadingSetType = ReadingSetType.ImageReading, + IsTakeEffect = ReadingPeriodStatus.TakeEffect, + ReadingPeriodName = "Global", + TrialId = trialId, + + EffectOfTime = DateTime.Now, + IsGlobal = true, + + }; + + readingPeriodSet.ReadingPeriodPlanList.Add(new ReadingPeriodPlan() + { + SubjectVisitId = subjectVisitId, + ReadingPeriodSetId = readingPeriodSet.Id, + }); + + + // 当前访视没有阅片期才添加 + if (!await _repository.AnyAsync(x => x.SubjectVisitId == subjectVisitId && x.ReadingSetType == ReadingSetType.ImageReading)) + { + await _repository.AddAsync(new ReadModule() + { + ReadingPeriodSetId = readingPeriodSet.Id, + IsUrgent = subjectVisit.IsUrgent, + SubjectVisitId = subjectVisitId, + Status = ReadModuleEnum.TaskAllocation, + SubjectId = subjectVisit.SubjectId, + ModuleName = "Global",// 全局阅片 + ReadingSetType = ReadingSetType.ImageReading, + ModuleType = ModuleTypeEnum.Global, + TrialId = subjectVisit.TrialId, + VisitNum = subjectVisit.VisitNum, + }); + } + + + await _repository.AddAsync(readingPeriodSet); + + } + + + + + + } } - - } + + +} } \ No newline at end of file