修改统计 分步查询
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-12-11 00:01:58 +08:00
parent 91cde3f944
commit b14f3fb251
2 changed files with 81 additions and 25 deletions

View File

@ -78,7 +78,7 @@ public static class ExcelExportHelper
foreach (var itemValuePair in itemDic) foreach (var itemValuePair in itemDic)
{ {
// 临床数据 11 会变成2024-01-01 // 临床数据 11 会变成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); itemDic[itemValuePair.Key] = ExportExcelConverterDate.DateTimeInternationalToString(result);
} }
@ -338,7 +338,7 @@ public static class ExcelExportHelper
//处理集合里面时间类型,根据当前语言将时间转变为字符串 //处理集合里面时间类型,根据当前语言将时间转变为字符串
foreach (var itemValuePair in itemDic) 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); itemDic[itemValuePair.Key] = ExportExcelConverterDate.DateTimeInternationalToString(result);
} }

View File

@ -2445,10 +2445,10 @@ namespace IRaCIS.Core.Application.Service.Common
// .Count(); // .Count();
#endregion #endregion
// subjectG1 产生裁判 G2 不产生裁判 那么该患者不计入总量)
var subjectReadingPeriodList= _visitTaskRepository.Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) 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)) .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) .Where(g => g.Count() == 2)
.Select(g => new { g.Key.SubjectId, g.Key.VisitTaskNum, g.Key.JudgeVisitTaskId }) .Select(g => new { g.Key.SubjectId, g.Key.VisitTaskNum, g.Key.JudgeVisitTaskId })
.ToList(); .ToList();
@ -2458,31 +2458,87 @@ namespace IRaCIS.Core.Application.Service.Common
.Where(t => t.JudgeVisitTaskId != null) .Where(t => t.JudgeVisitTaskId != null)
.Count(); .Count();
var subjectReadingPeriodDoctorList = _visitTaskRepository.Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned)
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)) .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 }) .GroupBy(t => new { t.SubjectId, t.VisitTaskNum, t.JudgeVisitTaskId })
.Select(g => new DoctorJudgeRatio() .Where(g => g.Count() == 2)
.Select(g => new
{ {
DoctorUserId = g.Key.DoctorUserId, g.Key.SubjectId,
UserName = g.Key.UserName, g.Key.VisitTaskNum,
FullName = g.Key.FullName, g.Key.JudgeVisitTaskId,
//最后一个阅片期触发裁判 且裁判已阅 GlobalList = g.Select(t => new
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) t.Id,
.Max(t => t.VisitTaskNum)) t.VisitTaskNum,
.Select(t => t.SubjectId).Distinct().Count(), 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 #endregion