diff --git a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs index 3a7df5742..f22e4d2f6 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs @@ -49,11 +49,14 @@ namespace IRaCIS.Core.API triggerOptions.AddTrigger(); //triggerOptions.AddTrigger(); triggerOptions.AddTrigger(); - + triggerOptions.AddTrigger(); + + + }); diff --git a/IRaCIS.Core.Application/Triggers/VisitTaskIAfterSignTrigger.cs b/IRaCIS.Core.Application/Triggers/VisitTaskIAfterSignTrigger.cs deleted file mode 100644 index ebff97d6e..000000000 --- a/IRaCIS.Core.Application/Triggers/VisitTaskIAfterSignTrigger.cs +++ /dev/null @@ -1,61 +0,0 @@ -//using AutoMapper; -//using EasyCaching.Core; -//using EntityFrameworkCore.Triggered; -//using IRaCIS.Core.Application.Service; -//using IRaCIS.Core.Application.ViewModel; -//using IRaCIS.Core.Domain.Share; -//using IRaCIS.Core.Infrastructure; -//using System.Linq.Expressions; - -//namespace IRaCIS.Core.Application.Triggers -//{ - -// public class VisitTaskIAfterSignTrigger : IAfterSaveTrigger -// { - -// private readonly IRepository _visitTaskRepository; - - -// public VisitTaskIAfterSignTrigger( - -// IRepository visitTaskRepository) -// { - -// _visitTaskRepository = visitTaskRepository; -// } - - -// //添加任务的时候 如果需要签名 并且已经签名了 那么要维护该标准 该Subject IsFrontTaskNeedSignButNotSign字段 -// public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) -// { -// var visitTask = context.Entity; - - -// if(visitTask.SignTime!=null && visitTask.ReadingTaskState == ReadingTaskState.HaveSigned) -// { -// switch (visitTask.ReadingCategory) -// { -// case ReadingCategory.Visit: - -// break; -// case ReadingCategory.Global: - -// break; -// case ReadingCategory.Judge: - -// break; -// case ReadingCategory.Oncology: - -// break; - -// default: -// break; -// } -// } - - -// } - - -// } -//} \ No newline at end of file diff --git a/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs b/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs new file mode 100644 index 000000000..9c7eec7ab --- /dev/null +++ b/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs @@ -0,0 +1,83 @@ +using AutoMapper; +using EasyCaching.Core; +using EntityFrameworkCore.Triggered; +using IRaCIS.Core.Application.Service; +using IRaCIS.Core.Application.ViewModel; +using IRaCIS.Core.Domain.Models; +using IRaCIS.Core.Domain.Share; +using IRaCIS.Core.Infrastructure; +using System.Linq.Expressions; + +namespace IRaCIS.Core.Application.Triggers +{ + + public class VisitTaskIbeforeTrigger : IBeforeSaveTrigger, IAfterSaveTrigger + { + + private readonly IRepository _visitTaskRepository; + private readonly IRepository _readingJudgeInfoRepository; + + public VisitTaskIbeforeTrigger( + + IRepository visitTaskRepository, IRepository readingJudgeInfoRepository) + { + + _visitTaskRepository = visitTaskRepository; + _readingJudgeInfoRepository = readingJudgeInfoRepository; + } + + /// + /// 因为维护状态先后顺序导致 裁判任务关联的 任务上的JudgeVisitTaskId==nulll 在这里需要重新设置下 + /// + /// 比如: 申请裁判任务重阅,事务里面本来设置了任务上的裁判id,但是因为下面的逻辑,导致设置的值又被清理了,只能重新设置下 + /// + /// + /// + /// + public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) + { + var visitTask = context.Entity; + //裁判任务维护,当裁判任务受到影响的时候,需要清理任务上关联的裁判任务id + if (context.ChangeType == ChangeType.Added && visitTask.ReadingCategory == ReadingCategory.Judge && visitTask.TaskState == TaskState.Effect) + { + + var find = _readingJudgeInfoRepository.Where(t => t.JudgeTaskId == visitTask.Id).FirstOrDefault(); + + if (find != null) + { + var ids = new Guid[] { find.TaskIdOne, find.TaskIdTwo }; + await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => ids.Contains(t.Id), u => new VisitTask() { JudgeVisitTaskId = visitTask.Id }); + } + + } + } + + /// + /// 比如 两个任务产生了裁判,然后其中一个人申请了重阅,影响了裁判,需要清理之前任务的上裁判id + /// + /// + /// 因为申请重阅,退回,里面分有序,无序,情况太多,所以不在那块逻辑修改,不然得加多个地方处理,在这里统一处理 + /// + /// + /// + /// + public async Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) + { + var visitTask = context.Entity; + //裁判任务维护,当裁判任务受到影响的时候,需要清理任务上关联的裁判任务id + if (context.ChangeType == ChangeType.Modified) + { + if (visitTask.ReadingCategory == ReadingCategory.Judge && (visitTask.TaskState == TaskState.Adbandon || visitTask.TaskState == TaskState.HaveReturned)) + { + var find = _readingJudgeInfoRepository.Where(t => t.JudgeTaskId == visitTask.Id).FirstOrDefault(); + + if (find != null) + { + var ids = new Guid[] { find.TaskIdOne, find.TaskIdTwo }; + await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => ids.Contains(t.Id), u => new VisitTask() { JudgeVisitTaskId = null }); + } + } + } + } + } +} \ No newline at end of file diff --git a/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs b/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs index 283a17b6c..1e2ef7ff0 100644 --- a/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs @@ -100,20 +100,9 @@ namespace IRaCIS.Core.Application.Triggers } - } - else if (context.ChangeType == ChangeType.Modified) - { - if (visitTask.ReadingCategory == ReadingCategory.Judge && (visitTask.TaskState == TaskState.Adbandon || visitTask.TaskState == TaskState.HaveReturned)) - { - var find = _readingJudgeInfoRepository.Where(t => t.JudgeTaskId == visitTask.Id).FirstOrDefault(); - if (find != null) - { - var ids = new Guid[] { find.TaskIdOne, find.TaskIdTwo }; - await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => ids.Contains(t.Id), u => new VisitTask() { JudgeVisitTaskId = null }); - } - } } + #region 附加评估 暂时废弃 // //从未签名状态 改为签名状态时 判断是否进行了附加评估,将附加评估的结果冗余 // if (context.ChangeType == ChangeType.Modified && visitTask.ReadingTaskState == ReadingTaskState.HaveSigned && context.UnmodifiedEntity.ReadingTaskState != ReadingTaskState.HaveSigned)