diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index cf39669ea..f653f3d69 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -1554,6 +1554,11 @@ namespace IRaCIS.Core.Application.Service.Common if (subjectJudgeList.Count > 0) { + //访视的标记先都默认为null + visitItem.IsTrigerJudge = null; + visitItem.IsJudgeSelect = null; + + 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(); @@ -1567,16 +1572,31 @@ namespace IRaCIS.Core.Application.Service.Common { if (visitItem.VisitTaskNum < maxNotFinishedJudge.VisitTaskNum) { + visitItem.IsTrigerJudge = false; visitItem.IsJudgeSelect = null; } + //大于当前未完成的全局裁判 后续可能有已完成的未产生裁判的全局 设置默认选择R1 + 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个全局裁判都完成了,那么以最后一次裁判选择的为准 else if (maxFinishedJudge != null && maxNotFinishedJudge == null) @@ -1592,7 +1612,7 @@ namespace IRaCIS.Core.Application.Service.Common visitItem.IsJudgeSelect = false; } //裁判都完成的后续 可能有已完成全局,但是没有产生裁判 - else if(visitItem.VisitTaskNum <= latestFinishedReadingPeriodTaskNum) + else if (visitItem.VisitTaskNum <= latestFinishedReadingPeriodTaskNum) { //不存在裁判 将R1设置 if (visitItem.ArmEnum == Arm.DoubleReadingArm1) @@ -1653,7 +1673,7 @@ namespace IRaCIS.Core.Application.Service.Common visitItem.IsTrigerJudge = null; - if (subjectReadingPeriondVisitNumList != null && subjectReadingPeriondVisitNumList.Count()>0) + if (subjectReadingPeriondVisitNumList != null && subjectReadingPeriondVisitNumList.Count() > 0) { var minReadingPeriodTaskNum = subjectReadingPeriondVisitNumList.Min() + addReadingPeriodNum; @@ -2410,7 +2430,8 @@ namespace IRaCIS.Core.Application.Service.Common //2、总样本量N:R1,R2均完成阅片(至少一个阅片期)的受试者数量; exportInfo.SubjectCount = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId).Where(t => - t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Any(t => t.ReadingCategory == ReadingCategory.Global && t.ReadingTaskState == ReadingTaskState.HaveSigned) + t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingCategory == ReadingCategory.Global && t.ReadingTaskState == ReadingTaskState.HaveSigned) + .GroupBy(t => new { t.SubjectId, t.SouceReadModuleId }).Where(g => g.Count() == 2).Any() ).Count(); exportInfo.judgeSubjectCount = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId).Where(t => @@ -2429,7 +2450,10 @@ namespace IRaCIS.Core.Application.Service.Common //触发裁判的受试者数量 TotalJudgeCount = g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.JudgeVisitTaskId != null).Select(t => t.SubjectId).Distinct().Count(), - JudgeAgreeCount = g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.JudgeVisitTaskId != null && t.JudgeVisitTask.JudgeResultTaskId == t.Id).Select(t => t.SubjectId).Distinct().Count(), + // 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)) + .Select(t => t.SubjectId).Distinct().Count(), }).ToList();