From 9524a31fe69dbec5d0a77fd1fbf51866ee8f6633 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 17 Jan 2024 14:33:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[=E9=87=8D=E9=98=85=E8=A3=81=E5=88=A4?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1bug=20]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs | 5 +- .../Triggers/VisitTaskIAfterSignTrigger.cs | 61 ---------------- .../Triggers/VisitTaskIbeforeTrigger.cs | 72 +++++++++++++++++++ ...askIsFrontTaskNeedSignButNotSignTrigger.cs | 13 +--- 4 files changed, 77 insertions(+), 74 deletions(-) delete mode 100644 IRaCIS.Core.Application/Triggers/VisitTaskIAfterSignTrigger.cs create mode 100644 IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs 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..5a97b8d54 --- /dev/null +++ b/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs @@ -0,0 +1,72 @@ +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 在这里需要重新设置下 + /// + /// + /// + /// + 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 }); + } + + } + } + + 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) From ff3796b7a011bd59f28a7ef799efff2f4f1af369 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 17 Jan 2024 14:49:18 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[=E4=BF=AE=E6=94=B9=E8=A3=81=E5=88=A4?= =?UTF-8?q?=E9=87=8D=E9=98=85=E9=80=BB=E8=BE=91=202]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Triggers/VisitTaskIbeforeTrigger.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs b/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs index 5a97b8d54..9c7eec7ab 100644 --- a/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs @@ -28,6 +28,8 @@ namespace IRaCIS.Core.Application.Triggers /// /// 因为维护状态先后顺序导致 裁判任务关联的 任务上的JudgeVisitTaskId==nulll 在这里需要重新设置下 + /// + /// 比如: 申请裁判任务重阅,事务里面本来设置了任务上的裁判id,但是因为下面的逻辑,导致设置的值又被清理了,只能重新设置下 /// /// /// @@ -50,6 +52,15 @@ namespace IRaCIS.Core.Application.Triggers } } + /// + /// 比如 两个任务产生了裁判,然后其中一个人申请了重阅,影响了裁判,需要清理之前任务的上裁判id + /// + /// + /// 因为申请重阅,退回,里面分有序,无序,情况太多,所以不在那块逻辑修改,不然得加多个地方处理,在这里统一处理 + /// + /// + /// + /// public async Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) { var visitTask = context.Entity;