diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 28a470140..9ca75207a 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -1255,8 +1255,8 @@ namespace IRaCIS.Core.Application.Service.Allocation // 有序 一个受试者访视重阅未处理完,不能申请其他的 if (trialConfig.IsReadingTaskViewInOrder) { - if (await _visitTaskReReadingRepository.AnyAsync(t => t.OriginalReReadingTask.TrialId == task.TrialId && t.OriginalReReadingTask.SubjectId == task.SubjectId && t.OriginalReReadingTask.TaskState == TaskState.Effect - && t.OriginalReReadingTask.TrialReadingCriterionId==task.TrialReadingCriterionId + if (await _visitTaskReReadingRepository.AnyAsync(t => t.OriginalReReadingTask.TrialId == task.TrialId && t.OriginalReReadingTask.SubjectId == task.SubjectId && t.OriginalReReadingTask.TaskState == TaskState.Effect + && t.OriginalReReadingTask.TrialReadingCriterionId == task.TrialReadingCriterionId && t.OriginalReReadingTask.ReadingTaskState == ReadingTaskState.HaveSigned && t.RequestReReadingType == RequestReReadingType.TrialGroupApply && t.RequestReReadingResultEnum == RequestReReadingResult.Default)) { return ResponseOutput.NotOk("当前为有序阅片,该受试者已有访视已申请重阅还未处理,暂不能继续申请重阅"); @@ -1287,7 +1287,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //在PM 的申请重阅的影响列表里也不能申请重阅 var pmApply = await _visitTaskReReadingRepository.Where(t => t.OriginalReReadingTask.TrialId == task.TrialId && t.OriginalReReadingTask.SubjectId == task.SubjectId && t.OriginalReReadingTask.TaskState == TaskState.Effect && t.OriginalReReadingTask.ReadingCategory == ReadingCategory.Visit - && t.OriginalReReadingTask.ReadingTaskState == ReadingTaskState.HaveSigned && t.RequestReReadingType == RequestReReadingType.TrialGroupApply && t.RequestReReadingResultEnum == RequestReReadingResult.Default).Include(t=>t.OriginalReReadingTask).FirstOrDefaultAsync(); + && t.OriginalReReadingTask.ReadingTaskState == ReadingTaskState.HaveSigned && t.RequestReReadingType == RequestReReadingType.TrialGroupApply && t.RequestReReadingResultEnum == RequestReReadingResult.Default).Include(t => t.OriginalReReadingTask).FirstOrDefaultAsync(); if (pmApply != null) { @@ -1298,12 +1298,12 @@ namespace IRaCIS.Core.Application.Service.Allocation { return ResponseOutput.NotOk("当前为有序阅片,影像存在问题,项目组已申请回退,暂不能申请重阅"); } - + } - Expression> filterExpression = t => t.TrialId == task.TrialId && t.SubjectId == task.SubjectId && t.TaskState == TaskState.Effect && t.TrialReadingCriterionId==task.TrialReadingCriterionId + Expression> filterExpression = t => t.TrialId == task.TrialId && t.SubjectId == task.SubjectId && t.TaskState == TaskState.Effect && t.TrialReadingCriterionId == task.TrialReadingCriterionId && t.ReadingTaskState == ReadingTaskState.HaveSigned && t.DoctorUserId == task.DoctorUserId && t.IsAnalysisCreate == false && t.VisitTaskNum > task.VisitTaskNum; @@ -1370,8 +1370,16 @@ namespace IRaCIS.Core.Application.Service.Allocation /// private void ReReadingTaskTrackingDeal(VisitTask origenalTask, ConfirmReReadingCommand agreeReReadingCommand) { - origenalTask.ReReadingApplyState = agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? ReReadingApplyState.Agree : ReReadingApplyState.Reject; - origenalTask.TaskState = agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? TaskState.HaveReturned : origenalTask.TaskState; + if (origenalTask.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed || origenalTask.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed) + { + origenalTask.ReReadingApplyState = agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? ReReadingApplyState.Agree : ReReadingApplyState.Reject; + origenalTask.TaskState = agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? TaskState.HaveReturned : origenalTask.TaskState; + } + else + { + throw new BusinessValidationFailedException("当前重阅任务状态不为已申请状态,不允许进行处理,请刷新页面"); + } + } private async Task SetMedicalReviewInvalidAsync(List influenceTaskList, bool isPMApply = true) @@ -1470,33 +1478,33 @@ namespace IRaCIS.Core.Application.Service.Allocation if (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree) - { + { //PM申请 SPM / CPM审批 回退访视,在此不生成访视任务 影响多个标准的任务 if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.TrialGroupApply && (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)) { #region PM 申请两个IR 同一访视,其他人的申请记录也设置为同意 不会出现,因为在未处理前 一个Subject只能申请一次 - // await _visitTaskReReadingRepository.BatchUpdateNoTrackingAsync(t => t.OriginalReReadingTask.SubjectId == origenalTask.SubjectId && - // t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed && - // t.RequestReReadingType == RequestReReadingType.TrialGroupApply && - //t.OriginalReReadingTask.VisitTaskNum == origenalTask.VisitTaskNum && - //t.Id != item.Id, u => new VisitTaskReReading() - //{ - // RequestReReadingConfirmUserId = _userInfo.Id, - // RequestReReadingResultEnum = RequestReReadingResult.Agree, - //}); + // await _visitTaskReReadingRepository.BatchUpdateNoTrackingAsync(t => t.OriginalReReadingTask.SubjectId == origenalTask.SubjectId && + // t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed && + // t.RequestReReadingType == RequestReReadingType.TrialGroupApply && + //t.OriginalReReadingTask.VisitTaskNum == origenalTask.VisitTaskNum && + //t.Id != item.Id, u => new VisitTaskReReading() + //{ + // RequestReReadingConfirmUserId = _userInfo.Id, + // RequestReReadingResultEnum = RequestReReadingResult.Agree, + //}); - // //只更新 PM 申请 同一访视的数据 - // await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == origenalTask.SubjectId && - // t.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed && - // t.TrialReadingCriterionId == origenalTask.TrialReadingCriterionId && - // t.IsAnalysisCreate == origenalTask.IsAnalysisCreate && - // t.VisitTaskNum == origenalTask.VisitTaskNum && - // t.Id != origenalTask.Id, u => new VisitTask() - // { - // ReReadingApplyState = ReReadingApplyState.Agree - // }); + // //只更新 PM 申请 同一访视的数据 + // await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == origenalTask.SubjectId && + // t.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed && + // t.TrialReadingCriterionId == origenalTask.TrialReadingCriterionId && + // t.IsAnalysisCreate == origenalTask.IsAnalysisCreate && + // t.VisitTaskNum == origenalTask.VisitTaskNum && + // t.Id != origenalTask.Id, u => new VisitTask() + // { + // ReReadingApplyState = ReReadingApplyState.Agree + // }); #endregion @@ -1986,10 +1994,19 @@ namespace IRaCIS.Core.Application.Service.Allocation } else if (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Reject) { - await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == origenalTask.Id, u => new VisitTask() + + if (origenalTask.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed || origenalTask.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed) { - ReReadingApplyState = ReReadingApplyState.Reject - }); + await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == origenalTask.Id, u => new VisitTask() + { + ReReadingApplyState = ReReadingApplyState.Reject + }); + } + else + { + throw new BusinessValidationFailedException("当前重阅任务状态不为已申请状态,不允许进行处理,请刷新页面"); + } + } }