diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index 00dab14f5..e525453c3 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -116,6 +116,8 @@ namespace IRaCIS.Core.Application.ViewModel public bool IsAssignDoctorApplyedTask => DoctorUserList.All(t=>t.IsAssignDoctorApplyedTask); + public List DoctorUserIdList => DoctorUserList.Select(t => t.DoctorUserId).ToList(); + public List DoctorUserList { get; set; } = new List(); } @@ -123,6 +125,8 @@ namespace IRaCIS.Core.Application.ViewModel public class AssignDoctorView { + public Guid DoctorUserId { get; set; } + public string UserCode { get; set; } public string UserName { get; set; } public string FullName { get; set; } diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 933957956..2151f27e8 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -43,7 +43,7 @@ namespace IRaCIS.Core.Application.Service } [HttpPost] - public async Task<(PageOutput,object)> GetVisitTaskList(VisitTaskQuery queryVisitTask, [FromServices] IVisitTaskHelpeService _visitTaskCommonService) + public async Task<(PageOutput, object)> GetVisitTaskList(VisitTaskQuery queryVisitTask, [FromServices] IVisitTaskHelpeService _visitTaskCommonService) { //以前访视未产生任务的,在查询这里要产生 var svIdList = await _subjectVisitRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.CheckState == CheckStateEnum.CVPassed && t.IsVisitTaskGenerated == false).Select(t => t.Id).ToListAsync(); @@ -69,7 +69,7 @@ namespace IRaCIS.Core.Application.Service var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray); var trialTaskConfig = _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); - return (pageList,trialTaskConfig); + return (pageList, trialTaskConfig); } @@ -85,7 +85,7 @@ namespace IRaCIS.Core.Application.Service .WhereIf(querySubjectAssign.SubjectId != null, t => t.Id == querySubjectAssign.SubjectId) .WhereIf(querySubjectAssign.IsHaveAssigned != null && querySubjectAssign.IsHaveAssigned == true, t => t.SubjectDoctorList.Count() > 0) .WhereIf(querySubjectAssign.IsHaveAssigned != null && querySubjectAssign.IsHaveAssigned == false, t => !t.SubjectDoctorList.Any()) - .WhereIf(querySubjectAssign.IsHaveApplyedTask != null && querySubjectAssign.IsHaveApplyedTask==true, t => t.SubjectDoctorList.SelectMany(t=>t.Subject.SubjectVisitTaskList).All(u=>u.DoctorUserId!=null) ) + .WhereIf(querySubjectAssign.IsHaveApplyedTask != null && querySubjectAssign.IsHaveApplyedTask == true, t => t.SubjectDoctorList.SelectMany(t => t.Subject.SubjectVisitTaskList).All(u => u.DoctorUserId != null)) .WhereIf(querySubjectAssign.IsHaveApplyedTask != null && querySubjectAssign.IsHaveApplyedTask == false, t => t.SubjectDoctorList.SelectMany(t => t.Subject.SubjectVisitTaskList).Any(u => u.DoctorUserId == null)) .WhereIf(querySubjectAssign.DoctorUserId != null, t => t.SubjectDoctorList.Any(t => t.DoctorUserId == querySubjectAssign.DoctorUserId)) .ProjectTo(_mapper.ConfigurationProvider); @@ -153,18 +153,39 @@ namespace IRaCIS.Core.Application.Service [UnitOfWork] public async Task ManualAssignDoctorApplyTask(AssignConfirmCommand assignConfirmCommand) { - //需要确认的Subject + var trialId= assignConfirmCommand.TrialId; + + //获取项目配置 判断应该分配几个医生 + //var trialConfig = (await _trialRepository.Where(t => t.Id == trialId).Select(t => new { TrialId = t.Id, t.ReadingType, t.IsFollowVisitAutoAssign, t.IsFollowGlobalVisitAutoAssign, t.FollowGlobalVisitAutoAssignDefaultState, t.TaskAllocateObjEnum }).FirstOrDefaultAsync()).IfNullThrowException(); + + + + //需要确认的Subject var subjectIdList = assignConfirmCommand.SubjectDoctorUserList.Select(t => t.SubjectId).ToList(); var taskList = _visitTaskRepository.Where(t => t.TrialId == assignConfirmCommand.TrialId && t.DoctorUserId == null, true) - .WhereIf(subjectIdList.Count() > 0, t => subjectIdList.Contains(t.SubjectId)).ToList(); + .WhereIf(subjectIdList.Count() > 0 /*&& trialConfig.ReadingType==ReadingMethod.Double*/, t => subjectIdList.Contains(t.SubjectId) && t.Subject.SubjectDoctorList.Any()) + .ToList(); foreach (var subjectTaskGroup in taskList.GroupBy(t => t.SubjectId)) { var subjectId = subjectTaskGroup.Key; - var subjectDoctorIdList = assignConfirmCommand.SubjectDoctorUserList.Where(t => t.SubjectId == subjectId).First().DoctorUserIdList; + //如果数据为空 那么就是确认所有已分配的 + List subjectDoctorIdList = new List(); + + if (assignConfirmCommand.SubjectDoctorUserList.Count == 0) + { + + subjectDoctorIdList = _subjectUserRepository.Where(t => t.SubjectId == subjectId).Select(t => t.DoctorUserId).ToList(); + } + else + { + subjectDoctorIdList = assignConfirmCommand.SubjectDoctorUserList.Where(t => t.SubjectId == subjectId).First().DoctorUserIdList; + + } + foreach (var task in subjectTaskGroup.OrderBy(t => t.ArmEnum).ToList()) { @@ -197,6 +218,9 @@ namespace IRaCIS.Core.Application.Service task.TaskState = TaskState.Allocated; } } + + + await _visitTaskRepository.SaveChangesAsync(); return ResponseOutput.Ok(); @@ -411,7 +435,7 @@ namespace IRaCIS.Core.Application.Service [UnitOfWork] public async Task AssignSubjectTaskToDoctor(AssignSubjectTaskToDoctorCommand assignSubjectTaskToDoctorCommand) { - var visitTask= await _visitTaskRepository.FirstOrDefaultAsync(t => t.Id == assignSubjectTaskToDoctorCommand.Id); + var visitTask = await _visitTaskRepository.FirstOrDefaultAsync(t => t.Id == assignSubjectTaskToDoctorCommand.Id); if (assignSubjectTaskToDoctorCommand.TaskOptType == TaskOptType.Assign || assignSubjectTaskToDoctorCommand.TaskOptType == TaskOptType.ReAssign) {