修改裁判标记设置方法
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-12-10 10:18:25 +08:00
parent 86692d220a
commit eb77fcfa2f
1 changed files with 107 additions and 140 deletions

View File

@ -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();