diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 50bece4b2..d46947b92 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -2485,13 +2485,12 @@ namespace IRaCIS.Core.Application.Service.Common var subjectReadingPeriodDoctorList = _visitTaskRepository.Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) .Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum == (t.VisitTaskNum - addReadingPeriodNum) && c.TrialReadingCriterionId == trialReadingCriterionId)) - .GroupBy(t => new { t.SubjectId, t.VisitTaskNum, t.JudgeVisitTaskId }) + .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }) .Where(g => g.Count() == 2) .Select(g => new { g.Key.SubjectId, g.Key.VisitTaskNum, - g.Key.JudgeVisitTaskId, GlobalList = g.Select(t => new { @@ -2503,31 +2502,60 @@ namespace IRaCIS.Core.Application.Service.Common t.JudgeVisitTaskId, t.ReadingTaskState, t.JudgeVisitTask.JudgeResultTaskId, - JudgeTaskState = (ReadingTaskState?)t.JudgeVisitTask.ReadingTaskState + JudgeTaskState = (ReadingTaskState?)t.JudgeVisitTask.ReadingTaskState }).ToList() }) .ToList(); - + #region 调试注释 + //var cc = subjectReadingPeriodDoctorList.GroupBy(x => x.SubjectId) // 按 SubjectId 分组 + + // .Where(g => g.OrderByDescending(x => x.VisitTaskNum).First().GlobalList.Any(c => c.JudgeVisitTaskId != null)) + + // .ToList(); + + //var ss = subjectReadingPeriodDoctorList.GroupBy(x => x.SubjectId) // 按 SubjectId 分组 + // //最后一个全局没有产生裁判的subject要过滤掉 过滤后 + // .Where(g => g.OrderByDescending(x => x.VisitTaskNum).First().GlobalList.Any(c => c.JudgeVisitTaskId != null)) + + // .Select(g => g.Where(c => c.GlobalList.Any(k => k.JudgeTaskState == ReadingTaskState.HaveSigned)).OrderByDescending(c => c.VisitTaskNum).FirstOrDefault()) + + // .ToList(); + + + //var kk = subjectReadingPeriodDoctorList.GroupBy(x => x.SubjectId) // 按 SubjectId 分组 + // //最后一个全局没有产生裁判的subject要过滤掉 过滤后 + // .Where(g => g.OrderByDescending(x => x.VisitTaskNum).First().GlobalList.Any(c => c.JudgeVisitTaskId != null)) + // // 存在 已完成的全局裁判 + // .Where(subg => subg.Any(t => t.GlobalList.Any(c => c.JudgeTaskState == ReadingTaskState.HaveSigned))) + // .Select(g => g.Where(c => c.GlobalList.Any(k => k.JudgeTaskState == ReadingTaskState.HaveSigned)).OrderByDescending(c => c.VisitTaskNum).FirstOrDefault()) + + // .ToList(); + #endregion + + + var filteredList = subjectReadingPeriodDoctorList.GroupBy(x => x.SubjectId) // 按 SubjectId 分组 - //最后一个全局没有产生裁判的subject要过滤掉 过滤后 - .Where(g=>g.OrderByDescending(x=>x.VisitTaskNum).First().GlobalList.Any(c=>c.JudgeVisitTaskId != null)) - //找到最大完成裁判的阅片期 // 每个subject 仅仅留最后一个全局 - .Select(g => g.Where(c => c.GlobalList.Any(k => k.JudgeTaskState == ReadingTaskState.HaveSigned)).OrderByDescending(c => c.VisitTaskNum).First()) + //最后一个全局没有产生裁判的subject要过滤掉 过滤后 + .Where(g => g.OrderByDescending(x => x.VisitTaskNum).First().GlobalList.Any(c => c.JudgeVisitTaskId != null)) + // subject 存在 已完成的全局裁判 + .Where(subg => subg.Any(t => t.GlobalList.Any(c => c.JudgeTaskState == ReadingTaskState.HaveSigned))) + //找到最大完成裁判的阅片期 // 每个subject 仅仅留最后一个已完成的全局 + .Select(g => g.Where(c => c.GlobalList.Any(k => k.JudgeTaskState == ReadingTaskState.HaveSigned)).OrderByDescending(c => c.VisitTaskNum).FirstOrDefault()) .SelectMany(t => t.GlobalList.Select(u => new - { - t.SubjectId, - t.VisitTaskNum, - t.JudgeVisitTaskId, - u.DoctorUserId, - u.UserName, - u.FullName, - u.JudgeResultTaskId, - VisitTaskId = u.Id - })) + { + t.SubjectId, + t.VisitTaskNum, + u.JudgeVisitTaskId, + u.DoctorUserId, + u.UserName, + u.FullName, + u.JudgeResultTaskId, + VisitTaskId = u.Id + })) .ToList(); - exportInfo.DoctorSubjectStatList= filteredList.GroupBy(t => new { t.DoctorUserId, t.UserName, t.FullName }).Select(g=>new DoctorJudgeRatio() + exportInfo.DoctorSubjectStatList = filteredList.GroupBy(t => new { t.DoctorUserId, t.UserName, t.FullName }).Select(g => new DoctorJudgeRatio() { DoctorUserId = g.Key.DoctorUserId, UserName = g.Key.UserName, @@ -2535,7 +2563,7 @@ namespace IRaCIS.Core.Application.Service.Common TotalJudgeCount = g.Count(), - JudgeAgreeCount = g.Count(t=>t.JudgeResultTaskId==t.VisitTaskId) + JudgeAgreeCount = g.Count(t => t.JudgeResultTaskId == t.VisitTaskId) }).ToList();