修改分配任务
parent
a058f7e47f
commit
9c634f8a61
|
@ -40,7 +40,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.ProjectTo<TaskAllocationRuleView>(_mapper.ConfigurationProvider);
|
.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);
|
return (await taskAllocationRuleQueryable.ToListAsync(), trialTaskConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
var verifyExp1 = new EntityVerifyExp<TaskAllocationRule>()
|
var verifyExp1 = new EntityVerifyExp<TaskAllocationRule>()
|
||||||
{
|
{
|
||||||
VerifyExp = t => t.DoctorUserId == addOrEditTaskAllocationRule.DoctorUserId,
|
VerifyExp = t => t.DoctorUserId == addOrEditTaskAllocationRule.DoctorUserId && t.TrialId== addOrEditTaskAllocationRule.TrialId,
|
||||||
VerifyMsg = "已有该医生配置,不允许继续增加"
|
VerifyMsg = "已有该医生配置,不允许继续增加"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,12 +16,12 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName))
|
.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.FullName, t => t.MapFrom(u => u.DoctorUser.FullName))
|
||||||
.ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.DoctorUser.UserTypeRole.UserTypeShortName))
|
.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.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)));
|
.ForMember(o => o.SelfTaskCount, t => t.MapFrom(u => u.Trial.VisitTaskList.Count(t=>t.DoctorUserId==u.DoctorUserId)));
|
||||||
|
|
||||||
CreateMap<TaskAllocationRule, AllocateInfo>()
|
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.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)));
|
.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 否则就是待核查
|
// 不一致性核查 就CVPassed ToForward 否则就是待核查
|
||||||
dbSubjectVisit.CheckState = trialConfig.IsImageConsistencyVerification ? CheckStateEnum.ToCheck : CheckStateEnum.CVPassed;
|
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;
|
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)
|
if (trialConfig.TaskAllocateObjEnum == TaskAllocateObj.Subject)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -115,25 +126,25 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
if (allocateStat.Any(t => t.ArmList.Any(t => t == 1)))
|
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
|
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的医生
|
//是否有做过Arm2的医生
|
||||||
if (allocateStat.Any(t => t.ArmList.Any(t => t == 2)))
|
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
|
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
|
else
|
||||||
{
|
{
|
||||||
|
@ -143,7 +154,7 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
}
|
}
|
||||||
|
|
||||||
//手动分配的时候 如果只分配了Arm1 没有分配Arm2 就会有问题
|
//手动分配的时候 如果只分配了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 ");
|
throw new BusinessValidationFailedException("请确认是否改了配置,或者手动分配时,只分配了一个Arm ");
|
||||||
}
|
}
|
||||||
|
@ -153,7 +164,8 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
task2.DoctorUserId = allocateSubjectArmList.FirstOrDefault(t => t.ArmEnum == 2).DoctorUserId;
|
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,
|
NotAllocate = 0,
|
||||||
|
|
||||||
|
|
||||||
|
InitAllocated = 1,
|
||||||
|
|
||||||
//已分配
|
//已分配
|
||||||
Allocated = 2,
|
Allocated = 2,
|
||||||
|
|
Loading…
Reference in New Issue