修改裁判标记设置方法
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
86692d220a
commit
eb77fcfa2f
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue