修改分配任务
parent
a058f7e47f
commit
9c634f8a61
|
@ -40,7 +40,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
.ProjectTo<TaskAllocationRuleView>(_mapper.ConfigurationProvider);
|
||||
|
||||
|
||||
var trialTaskConfig= _trialRepository.Where(t=>t.Id==queryTaskAllocationRule.TrialId).ProjectTo<TrialTaskConfig>(_mapper.ConfigurationProvider);
|
||||
var trialTaskConfig= _trialRepository.Where(t=>t.Id==queryTaskAllocationRule.TrialId).ProjectTo<TrialTaskConfig>(_mapper.ConfigurationProvider).FirstOrDefault();
|
||||
return (await taskAllocationRuleQueryable.ToListAsync(), trialTaskConfig);
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
{
|
||||
var verifyExp1 = new EntityVerifyExp<TaskAllocationRule>()
|
||||
{
|
||||
VerifyExp = t => t.DoctorUserId == addOrEditTaskAllocationRule.DoctorUserId,
|
||||
VerifyExp = t => t.DoctorUserId == addOrEditTaskAllocationRule.DoctorUserId && t.TrialId== addOrEditTaskAllocationRule.TrialId,
|
||||
VerifyMsg = "已有该医生配置,不允许继续增加"
|
||||
};
|
||||
|
||||
|
|
|
@ -16,12 +16,12 @@ namespace IRaCIS.Core.Application.Service
|
|||
.ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName))
|
||||
.ForMember(o => o.FullName, t => t.MapFrom(u => u.DoctorUser.FullName))
|
||||
.ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.DoctorUser.UserTypeRole.UserTypeShortName))
|
||||
.ForMember(o => o.ArmList, t => t.MapFrom(u => u.VisitTaskList.Select(t=>t.ArmEnum).Distinct()))
|
||||
.ForMember(o => o.ArmList, t => t.MapFrom(u => u.VisitTaskList.Where(c=>c.TrialId==u.TrialId).Select(t=>t.ArmEnum).Distinct()))
|
||||
.ForMember(o => o.TotalTaskCount, t => t.MapFrom(u => u.Trial.VisitTaskList.Count()))
|
||||
.ForMember(o => o.SelfTaskCount, t => t.MapFrom(u => u.Trial.VisitTaskList.Count(t=>t.DoctorUserId==u.DoctorUserId)));
|
||||
|
||||
CreateMap<TaskAllocationRule, AllocateInfo>()
|
||||
.ForMember(o => o.ArmList, t => t.MapFrom(u => u.VisitTaskList.Select(t => t.ArmEnum).Distinct()))
|
||||
.ForMember(o => o.ArmList, t => t.MapFrom(u => u.VisitTaskList.Where(c => c.TrialId == u.TrialId).Select(t => t.ArmEnum).Distinct()))
|
||||
.ForMember(o => o.TotalTaskCount, t => t.MapFrom(u => u.Trial.VisitTaskList.Count()))
|
||||
|
||||
.ForMember(o => o.SelfTaskCount, t => t.MapFrom(u => u.Trial.VisitTaskList.Count(t => t.DoctorUserId == u.DoctorUserId)));
|
||||
|
|
|
@ -1159,6 +1159,11 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
// 不一致性核查 就CVPassed ToForward 否则就是待核查
|
||||
dbSubjectVisit.CheckState = trialConfig.IsImageConsistencyVerification ? CheckStateEnum.ToCheck : CheckStateEnum.CVPassed;
|
||||
|
||||
if(dbSubjectVisit.CheckState== CheckStateEnum.CVPassed)
|
||||
{
|
||||
dbSubjectVisit.CheckPassedTime = DateTime.Now;
|
||||
}
|
||||
|
||||
dbSubjectVisit.ForwardState = trialConfig.IsImageConsistencyVerification ? ForwardStateEnum.None : ForwardStateEnum.ToForward;
|
||||
|
||||
}
|
||||
|
|
|
@ -100,6 +100,17 @@ namespace IRaCIS.Core.Application.Triggers
|
|||
});
|
||||
|
||||
|
||||
if (trialConfig.TaskAllocateDefaultState == TaskAllocateDefaultState.Allocated)
|
||||
{
|
||||
task1.TaskState =TaskState.Allocated;
|
||||
task2.TaskState = TaskState.Allocated;
|
||||
}
|
||||
else if (trialConfig.TaskAllocateDefaultState == TaskAllocateDefaultState.InitAllocated)
|
||||
{
|
||||
task1.TaskState = TaskState.InitAllocated;
|
||||
task2.TaskState = TaskState.InitAllocated;
|
||||
}
|
||||
|
||||
if (trialConfig.TaskAllocateObjEnum == TaskAllocateObj.Subject)
|
||||
{
|
||||
|
||||
|
@ -115,25 +126,25 @@ namespace IRaCIS.Core.Application.Triggers
|
|||
if (allocateStat.Any(t => t.ArmList.Any(t => t == 1)))
|
||||
{
|
||||
//找到最优的需要分配任务的医生
|
||||
task1.DoctorUserId = allocateStat.Where(t => t.ArmList.Any(t => t == 1)).OrderByDescending(t => t.TotalTaskCount * t.PlanReadingRatio * 0.01 - t.TotalTaskCount).FirstOrDefault().DoctorUserId;
|
||||
task1.DoctorUserId = allocateStat.Where(t => t.ArmList.Any(t => t == 1)).OrderByDescending(t=>t.PlanReadingRatio).ThenBy(t => t.TotalTaskCount * t.PlanReadingRatio * 0.01 - t.TotalTaskCount).FirstOrDefault().DoctorUserId;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
task1.DoctorUserId = allocateStat.OrderByDescending(t => t.TotalTaskCount * t.PlanReadingRatio * 0.01 - t.TotalTaskCount).FirstOrDefault().DoctorUserId;
|
||||
task1.DoctorUserId = allocateStat.OrderByDescending(t => t.PlanReadingRatio).ThenBy(t => t.TotalTaskCount * t.PlanReadingRatio * 0.01 - t.TotalTaskCount).FirstOrDefault().DoctorUserId;
|
||||
}
|
||||
|
||||
//是否有做过Arm2的医生
|
||||
if (allocateStat.Any(t => t.ArmList.Any(t => t == 2)))
|
||||
{
|
||||
//找到最优的需要分配任务的医生
|
||||
task2.DoctorUserId = allocateStat.Where(t => t.ArmList.Any(t => t == 2)).OrderByDescending(t => t.TotalTaskCount * t.PlanReadingRatio * 0.01 - t.TotalTaskCount).FirstOrDefault().DoctorUserId;
|
||||
task2.DoctorUserId = allocateStat.Where(t => t.ArmList.Any(t => t == 2)).OrderByDescending(t => t.PlanReadingRatio).ThenBy(t => t.TotalTaskCount * t.PlanReadingRatio * 0.01 - t.TotalTaskCount).FirstOrDefault().DoctorUserId;
|
||||
}
|
||||
else
|
||||
{
|
||||
task2.DoctorUserId = allocateStat.OrderByDescending(t => t.TotalTaskCount * t.PlanReadingRatio * 0.01 - t.TotalTaskCount).Skip(1).FirstOrDefault().DoctorUserId;
|
||||
task2.DoctorUserId = allocateStat.OrderByDescending(t => t.PlanReadingRatio).ThenBy(t => t.TotalTaskCount * t.PlanReadingRatio * 0.01 - t.TotalTaskCount).Skip(1).FirstOrDefault().DoctorUserId;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -143,7 +154,7 @@ namespace IRaCIS.Core.Application.Triggers
|
|||
}
|
||||
|
||||
//手动分配的时候 如果只分配了Arm1 没有分配Arm2 就会有问题
|
||||
if (allocateSubjectArmList.Any(t => t.ArmEnum == 1) && allocateSubjectArmList.Any(t => t.ArmEnum == 2))
|
||||
if (!(allocateSubjectArmList.Any(t => t.ArmEnum == 1) && allocateSubjectArmList.Any(t => t.ArmEnum == 2)))
|
||||
{
|
||||
throw new BusinessValidationFailedException("请确认是否改了配置,或者手动分配时,只分配了一个Arm ");
|
||||
}
|
||||
|
@ -153,7 +164,8 @@ namespace IRaCIS.Core.Application.Triggers
|
|||
task2.DoctorUserId = allocateSubjectArmList.FirstOrDefault(t => t.ArmEnum == 2).DoctorUserId;
|
||||
}
|
||||
|
||||
|
||||
task1.AllocateTime = DateTime.Now;
|
||||
task2.AllocateTime = DateTime.Now;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ namespace IRaCIS.Core.Domain.Share
|
|||
NotAllocate = 0,
|
||||
|
||||
|
||||
|
||||
InitAllocated = 1,
|
||||
|
||||
//已分配
|
||||
Allocated = 2,
|
||||
|
|
Loading…
Reference in New Issue