diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index f653f3d69..001c01716 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -1551,168 +1551,135 @@ namespace IRaCIS.Core.Application.Service.Common var addReadingPeriodNum = isGlobalReading ? ReadingCommon.TaskNumDic[ReadingCategory.Global] : 0; - if (subjectJudgeList.Count > 0) + + //已完成的全局数量 + var finishedGlobalCount = resultExceptJudgeList.Where(t => t.SubjectCode == visitItem.SubjectCode && t.ReadingCategory == ReadingCategory.Global) + .GroupBy(t => t.VisitTaskNum).Where(g => g.Count() == 2).Select(g => g.Key).Count(); + + + visitItem.IsJudgeSelect = null; + visitItem.IsTrigerJudge = null; + + if (finishedGlobalCount != 0) { + //最大的全局是否产生裁判 - //访视的标记先都默认为null - visitItem.IsTrigerJudge = null; - visitItem.IsJudgeSelect = null; + var subjectMaxFinishedGlobalTaskNum = resultExceptJudgeList.Where(t => t.SubjectCode == visitItem.SubjectCode && t.ReadingCategory == ReadingCategory.Global) + .GroupBy(t => t.VisitTaskNum).Where(g => g.Count() == 2).Select(g => g.Key).DefaultIfEmpty().Max(); - - var maxFinishedJudge = subjectJudgeList.Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned).OrderByDescending(t => t.VisitTaskNum).FirstOrDefault(); - - var maxNotFinishedJudge = subjectJudgeList.Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned).OrderByDescending(t => t.VisitTaskNum).FirstOrDefault(); - - //找到<= 完成最大访视任务号最近的阅片期号 - var latestFinishedReadingPeriodTaskNum = subjectReadingPeriondVisitNumList.Select(t => t + addReadingPeriodNum).Where(t => t <= subjectMaxFinishedTaskNum).Max(); - - - //n个裁判任务都未完成 - if (maxFinishedJudge == null && maxNotFinishedJudge != null) + //最大的完成的全局是否产生裁判 + if (subjectJudgeList.Any(t => t.VisitTaskNum == (subjectMaxFinishedGlobalTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Judge]))) { - if (visitItem.VisitTaskNum < maxNotFinishedJudge.VisitTaskNum) + + var maxJudge = subjectJudgeList.FirstOrDefault(t => t.VisitTaskNum == (subjectMaxFinishedGlobalTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Judge])); + + //最大裁判完成了 + if (maxJudge.ReadingTaskState == ReadingTaskState.HaveSigned) { - visitItem.IsTrigerJudge = false; - visitItem.IsJudgeSelect = null; - } - //大于当前未完成的全局裁判 后续可能有已完成的未产生裁判的全局 设置默认选择R1 - else if (visitItem.VisitTaskNum <= latestFinishedReadingPeriodTaskNum) - { - //不存在裁判 将R1设置 - if (visitItem.ArmEnum == Arm.DoubleReadingArm1) + if (visitItem.VisitTaskNum < maxJudge.VisitTaskNum) { - visitItem.IsJudgeSelect = true; - visitItem.IsTrigerJudge = false; + //触发裁判 + visitItem.IsTrigerJudge = true; - } - else - { - visitItem.IsJudgeSelect = false; - visitItem.IsTrigerJudge = false; - } - } - else - { - visitItem.IsTrigerJudge = null; - visitItem.IsJudgeSelect = null; - } - - } - //n个全局裁判都完成了,那么以最后一次裁判选择的为准 - else if (maxFinishedJudge != null && maxNotFinishedJudge == null) - { - if (visitItem.ArmEnum == maxFinishedJudge.JudgeArmEnum && visitItem.VisitTaskNum < maxFinishedJudge.VisitTaskNum) - { - visitItem.IsJudgeSelect = true; - visitItem.JudgeNote = maxFinishedJudge.JudgeNote; - } - //裁判没选择的人设置为false - else if (visitItem.VisitTaskNum < maxFinishedJudge.VisitTaskNum) - { - visitItem.IsJudgeSelect = false; - } - //裁判都完成的后续 可能有已完成全局,但是没有产生裁判 - else if (visitItem.VisitTaskNum <= latestFinishedReadingPeriodTaskNum) - { - //不存在裁判 将R1设置 - if (visitItem.ArmEnum == Arm.DoubleReadingArm1) - { - visitItem.IsJudgeSelect = true; - visitItem.IsTrigerJudge = false; - - } - else - { - visitItem.IsJudgeSelect = false; - visitItem.IsTrigerJudge = false; - } - } - else - { - visitItem.IsTrigerJudge = null; - visitItem.IsJudgeSelect = null; - } - } - //n个完成 m个未完成 - else - { - //两个都不为null 肯定是不同的裁判 - - //在未完成裁判之后的 - if (visitItem.VisitTaskNum > maxNotFinishedJudge.VisitTaskNum) - { - visitItem.IsTrigerJudge = null; - visitItem.IsJudgeSelect = null; - } - //完成裁判之后的 ,和未完成裁判之前的 - else if (visitItem.VisitTaskNum < maxNotFinishedJudge.VisitTaskNum && visitItem.VisitTaskNum > maxFinishedJudge.VisitTaskNum) - { - visitItem.IsTrigerJudge = true; - visitItem.IsJudgeSelect = null; - } - else if (visitItem.ArmEnum == maxFinishedJudge.JudgeArmEnum && visitItem.VisitTaskNum < maxFinishedJudge.VisitTaskNum) - { - visitItem.IsJudgeSelect = true; - visitItem.JudgeNote = maxFinishedJudge.JudgeNote; - } - else if (visitItem.VisitTaskNum < maxFinishedJudge.VisitTaskNum) - { - visitItem.IsJudgeSelect = false; - } - - } - } - else - { - - //没有产生裁判 有可能一个人没做完,也有可能做完了没产生裁判 - //两个人都做了(1、两个人都阅片完,确实没产生,2、两个人都阅片完,还没到阅片期,没产生裁判) - - //默认都设置为null 仅仅处理 阅片期读完了没产生裁判 裁判选择标记需要设置的访视 - visitItem.IsJudgeSelect = null; - visitItem.IsTrigerJudge = null; - - - if (subjectReadingPeriondVisitNumList != null && subjectReadingPeriondVisitNumList.Count() > 0) - { - var minReadingPeriodTaskNum = subjectReadingPeriondVisitNumList.Min() + addReadingPeriodNum; - - //有阅片期读完了 肯定要读到最小阅片期号后面 - - if (subjectMaxFinishedTaskNum >= minReadingPeriodTaskNum) - { - //找到<= 完成最大访视任务号最近的阅片期号 - var latestFinishedReadingPeriodTaskNum = subjectReadingPeriondVisitNumList.Select(t => t + addReadingPeriodNum).Where(t => t <= subjectMaxFinishedTaskNum).Max(); - - //小于已完成的阅片期的访视 设置触发裁判标志为否 并设置默认的裁判选择标记 (两个人肯定做完了) - if (visitItem.VisitTaskNum <= latestFinishedReadingPeriodTaskNum) - { - - //不存在裁判 将R1设置 - if (visitItem.ArmEnum == Arm.DoubleReadingArm1) + if (visitItem.ArmEnum == maxJudge.JudgeArmEnum) { visitItem.IsJudgeSelect = true; - visitItem.IsTrigerJudge = false; - + visitItem.JudgeNote = maxJudge.JudgeNote; } + //裁判没选择的人设置为false else { visitItem.IsJudgeSelect = false; - visitItem.IsTrigerJudge = false; + } + } + else + { + //后续访视 未知 默认都是null + + } + } + else + { + //找到当前未阅最大裁判之前的已完成的最大裁判任务 + var maxFinishedJudge = subjectJudgeList.Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned).OrderByDescending(t => t.VisitTaskNum).FirstOrDefault(); + + if (maxFinishedJudge == null) + { + // 为空 裁判选择标记默认就是null 不用处理 + + if (visitItem.VisitTaskNum < maxJudge.VisitTaskNum) + { + visitItem.IsTrigerJudge = true; } + } + else + { + if (visitItem.VisitTaskNum < maxFinishedJudge.VisitTaskNum) + { + visitItem.IsTrigerJudge = true; + + if (visitItem.ArmEnum == maxFinishedJudge.JudgeArmEnum) + { + visitItem.IsJudgeSelect = true; + visitItem.JudgeNote = maxFinishedJudge.JudgeNote; + } + //裁判没选择的人设置为false + else + { + visitItem.IsJudgeSelect = false; + } + } + else if (visitItem.VisitTaskNum > maxFinishedJudge.VisitTaskNum && visitItem.VisitTaskNum < maxJudge.VisitTaskNum) + { + //完成裁判 和未完成裁判之间的 裁判选择标记默认是null + + visitItem.IsTrigerJudge = true; + } + else + { + //在未完成全局裁判之后的访视 未知 默认都是null + + + } } - } + + + } + else + { + //最大的完成的全局未产生裁判 + + if (visitItem.VisitTaskNum < subjectMaxFinishedGlobalTaskNum) + { + visitItem.IsTrigerJudge = false; + + if (visitItem.ArmEnum == Arm.DoubleReadingArm1) + { + visitItem.IsJudgeSelect = true; + + } + else + { + visitItem.IsJudgeSelect = false; + } + } + else + { + //未产生裁判的全局之后的访视 两个标记都是null (后续可能还有全局,但是全局两个人没做完) + } + + } - - - } + + + } } else @@ -2452,7 +2419,7 @@ namespace IRaCIS.Core.Application.Service.Common // G-2 G-4 可能选择的是不同的医生,要以最后一次选择的为准 JudgeAgreeCount = g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.JudgeVisitTaskId != null - && t.JudgeVisitTask.JudgeResultTaskId == t.Id && t.VisitTaskNum== g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.JudgeVisitTaskId != null).Max(t => t.VisitTaskNum)) + && t.JudgeVisitTask.JudgeResultTaskId == t.Id && t.VisitTaskNum == g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.JudgeVisitTaskId != null).Max(t => t.VisitTaskNum)) .Select(t => t.SubjectId).Distinct().Count(), }).ToList();