From 4a190c5297e797890a6ddc91b90e2e8711998f12 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 13 Jul 2022 10:46:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BC=8F=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Allocation/VisitTaskService.cs | 48 +++++++++++++++---- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 95fba669f..a0249f570 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -967,6 +967,16 @@ namespace IRaCIS.Core.Application.Service throw new BusinessValidationFailedException("访视重阅导致裁判任务重置的,不能申请重阅"); } + if (task.ReadingCategory == ReadingCategory.Oncology) + { + throw new BusinessValidationFailedException("肿瘤学任务只允许申请该阅片人最后一次完成裁判的任务进行重阅"); + } + + if (task.ReadingCategory == ReadingCategory.Judge && await _visitTaskRepository.AnyAsync(t => t.DoctorUserId == task.DoctorUserId && t.SubjectId == task.SubjectId && t.TaskState == TaskState.Effect && t.VisitTaskNum > task.VisitTaskNum)) + { + throw new BusinessValidationFailedException("只允许申请该阅片人最后一次完成裁判的任务重阅"); + } + task.ReReadingApplyState = ReReadingApplyState.HaveApplyed; @@ -990,7 +1000,7 @@ namespace IRaCIS.Core.Application.Service //产生新的任务 - + await _visitTaskRepository.SaveChangesAsync(); @@ -1436,10 +1446,7 @@ namespace IRaCIS.Core.Application.Service switch (filterObj.ReadingCategory) { case ReadingCategory.Visit: - case ReadingCategory.Global: - case ReadingCategory.Oncology: - - //影响当前医生 以及当前医生之后的 (1、访视任务 已经读完的,未读完的或者未读的 不处理) + //影响当前医生 以及当前医生之后的 1、访视任务 已经读完的,(未读完的或者未读的 不处理) //2、后续任务如果是全局、肿瘤学阅片任务,状态为阅片完成标记为重阅重置;若在阅片中,则标记为失效;若为待阅片,则标记为失效; //3、当前任务、后续访视任务或者全局任务触发了裁判任务,若裁判任务状态为阅片完成,则标记为重阅重置;若在阅片中或待阅片,则标记为失效 filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum && t.DoctorUserId == filterObj.DoctorUserId && @@ -1448,12 +1455,37 @@ namespace IRaCIS.Core.Application.Service t.ReadingCategory == ReadingCategory.Oncology || t.ReadingCategory == ReadingCategory.Judge) ); - break; + case ReadingCategory.Global: + // 1、后续任务如果是访视任务,均不处理; + //2、后续任务如果是全局、状态为阅片完成则标记为重阅重置,若阅片中或待阅片则不处理; + //3、当前任务或者全局任务触发了裁判任务,若裁判任务状态为阅片完成,则标记为重阅重置;若在阅片中或待阅片,则标记为失效 + //4、后续任务为肿瘤学阅片任务,状态为阅片完成标记为重阅重置;若在阅片中,则标记为失效;若为待阅片,则标记为失效; + + //全局不影响后续访视任务 + filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum && t.DoctorUserId == filterObj.DoctorUserId && + ( + t.ReadingCategory == ReadingCategory.Global || + t.ReadingCategory == ReadingCategory.Oncology || + t.ReadingCategory == ReadingCategory.Judge) + ); + break; + + case ReadingCategory.Oncology: + + //不允许申请,已做限制 + + throw new BusinessValidationFailedException("不支持的申请重阅任务类型"); + + + //(只允许申请该阅片人最后一次完成裁判的任务重阅)申请的时候做了限制 case ReadingCategory.Judge: + // 1、后续任务如果是访视任务、全局任务,均不处理; + //2、后续若有肿瘤学阅片,若肿瘤学阅片任务状态为阅片完成,则标记为重阅重置;若为阅片中则标记为失效,如为待阅片,则取消分配 + //裁判的影响自己 和后续肿瘤学阅片 filterExpression = filterExpression.And(t => (t.Id == filterObj.Id) || (t.VisitTaskNum > filterObj.VisitTaskNum && t.DoctorUserId == filterObj.DoctorUserId && t.ReadingCategory == ReadingCategory.Oncology)); @@ -1515,8 +1547,8 @@ namespace IRaCIS.Core.Application.Service { // 当前任务及其之后的所有访视任务 两个阅片人的 - //自己的后续任务 取消分配 - //另一个阅片人的任务根据任务进度自动进入PM退回或PM申请重阅() + // 1.后续访视不处理 + //2.当前任务未完成,不会产生全局任务。后续任务均为访视任务,且均为待阅片,取消分配; filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum); } //无序