diff --git a/IRaCIS.Core.Application/Helper/FileDocProcess/ExcelExportHelper.cs b/IRaCIS.Core.Application/Helper/FileDocProcess/ExcelExportHelper.cs index b97c0e8b4..dc48dd66e 100644 --- a/IRaCIS.Core.Application/Helper/FileDocProcess/ExcelExportHelper.cs +++ b/IRaCIS.Core.Application/Helper/FileDocProcess/ExcelExportHelper.cs @@ -78,7 +78,7 @@ public static class ExcelExportHelper foreach (var itemValuePair in itemDic) { // 临床数据 1,1 会变成2024-01-01 - if (itemValuePair.Value?.ToString().Length > 4 && DateTime.TryParse(itemValuePair.Value?.ToString(), out DateTime result)) + if (itemValuePair.Value?.ToString().Length > 8 && DateTime.TryParse(itemValuePair.Value?.ToString(), out DateTime result)) { itemDic[itemValuePair.Key] = ExportExcelConverterDate.DateTimeInternationalToString(result); } @@ -338,7 +338,7 @@ public static class ExcelExportHelper //处理集合里面时间类型,根据当前语言将时间转变为字符串 foreach (var itemValuePair in itemDic) { - if (itemValuePair.Value?.ToString().Length > 4 && DateTime.TryParse(itemValuePair.Value?.ToString(), out DateTime result)) + if (itemValuePair.Value?.ToString().Length > 8 && DateTime.TryParse(itemValuePair.Value?.ToString(), out DateTime result)) { itemDic[itemValuePair.Key] = ExportExcelConverterDate.DateTimeInternationalToString(result); } diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 79b99ba7e..4677dfcc0 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -2445,10 +2445,10 @@ namespace IRaCIS.Core.Application.Service.Common // .Count(); #endregion - - var subjectReadingPeriodList= _visitTaskRepository.Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) + // subject(G1 产生裁判 G2 不产生裁判 那么该患者不计入总量) + var subjectReadingPeriodList = _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, t.JudgeVisitTaskId }) .Where(g => g.Count() == 2) .Select(g => new { g.Key.SubjectId, g.Key.VisitTaskNum, g.Key.JudgeVisitTaskId }) .ToList(); @@ -2458,31 +2458,87 @@ namespace IRaCIS.Core.Application.Service.Common .Where(t => t.JudgeVisitTaskId != null) .Count(); - - exportInfo.DoctorSubjectStatList = _visitTaskRepository.Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) - //筛选全局 已完成的任务 + 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.DoctorUserId, t.DoctorUser.UserName, t.DoctorUser.FullName }) - .Select(g => new DoctorJudgeRatio() + .GroupBy(t => new { t.SubjectId, t.VisitTaskNum, t.JudgeVisitTaskId }) + .Where(g => g.Count() == 2) + .Select(g => new { - DoctorUserId = g.Key.DoctorUserId, - UserName = g.Key.UserName, - FullName = g.Key.FullName, + g.Key.SubjectId, + g.Key.VisitTaskNum, + g.Key.JudgeVisitTaskId, - //最后一个阅片期触发裁判 且裁判已阅 - TotalJudgeCount = g.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned) - .Where(t => t.VisitTaskNum == g.Where(c => c.SubjectId == t.SubjectId && c.JudgeVisitTaskId != null && c.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned) - .Max(t => t.VisitTaskNum)) - .Select(t => t.SubjectId).Distinct().Count(), + GlobalList = g.Select(t => new + { + t.Id, + t.VisitTaskNum, + t.DoctorUserId, + t.DoctorUser.UserName, + t.DoctorUser.FullName, + t.JudgeVisitTask.JudgeResultTaskId + }).ToList() + }) + .ToList(); - // G-2 G-4 可能选择的是不同的医生,要以最后一次选择的为准 - JudgeAgreeCount = g.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned) - .Where(t => t.VisitTaskNum == g.Where(c => c.SubjectId == t.SubjectId && c.JudgeVisitTaskId != null && c.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned) - .Max(t => t.VisitTaskNum)) - .Where(t => t.JudgeVisitTask.JudgeResultTaskId == t.Id) - .Select(t => t.SubjectId).Distinct().Count(), - }).ToList(); + // 每个subject 仅仅留最后一个全局 + var filteredList = subjectReadingPeriodDoctorList.GroupBy(x => x.SubjectId) // 按 SubjectId 分组 + .Select(g => g.OrderByDescending(x => x.VisitTaskNum).First()) // 每组取 VisitTaskNum 最大的记录 + //最后一个全局没有产生裁判的subject要过滤掉 过滤后 + .Where(t => t.JudgeVisitTaskId != null) + .SelectMany(t => t.GlobalList.Select(u => new + { + t.SubjectId, + t.VisitTaskNum, + t.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() + { + DoctorUserId = g.Key.DoctorUserId, + UserName = g.Key.UserName, + FullName = g.Key.FullName, + + TotalJudgeCount = g.Count(), + + JudgeAgreeCount = g.Count(t=>t.JudgeResultTaskId==t.VisitTaskId) + + }).ToList(); + + + + + + //exportInfo.DoctorSubjectStatList = _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.DoctorUserId, t.DoctorUser.UserName, t.DoctorUser.FullName }) + // .Select(g => new DoctorJudgeRatio() + // { + // DoctorUserId = g.Key.DoctorUserId, + // UserName = g.Key.UserName, + // FullName = g.Key.FullName, + + // //最后一个阅片期触发裁判 且裁判已阅 + // TotalJudgeCount = g.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // .Where(t => t.VisitTaskNum == g.Where(c => c.SubjectId == t.SubjectId && c.JudgeVisitTaskId != null && c.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // .Max(t => t.VisitTaskNum)) + // .Select(t => t.SubjectId).Distinct().Count(), + + // // G-2 G-4 可能选择的是不同的医生,要以最后一次选择的为准 + // JudgeAgreeCount = g.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // .Where(t => t.VisitTaskNum == g.Where(c => c.SubjectId == t.SubjectId && c.JudgeVisitTaskId != null && c.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // .Max(t => t.VisitTaskNum)) + // .Where(t => t.JudgeVisitTask.JudgeResultTaskId == t.Id) + // .Select(t => t.SubjectId).Distinct().Count(), + + // }).ToList(); #endregion