From 5ec77b40c7216d1152b41376df048bcf60c4b28e Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Tue, 2 Aug 2022 10:02:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Allocation/VisitTaskService.cs | 67 +++++++++++-------- 1 file changed, 39 insertions(+), 28 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index a3a46cb8b..3e097529b 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -102,33 +102,12 @@ namespace IRaCIS.Core.Application.Service.Allocation if (inOrder) { - var notCheckPassedMinVisitNum = await _subjectVisitRepository.Where(t => t.SubjectId == subjectId && t.CheckState!=CheckStateEnum.CVPassed).OrderBy(t => t.VisitNum).Select(t => t.VisitNum).FirstOrDefaultAsync(); + var notCheckPassedMinVisitNum = await _subjectVisitRepository.Where(t => t.SubjectId == subjectId && t.CheckState != CheckStateEnum.CVPassed).OrderBy(t => t.VisitNum).Select(t => t.VisitNum).FirstOrDefaultAsync(); updateWhere = updateWhere.And(t => t.VisitTaskNum < notCheckPassedMinVisitNum); - ////找到未分配的最小的任务号 - //var minVisitTaskNum = _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.ArmEnum == doctorArm.ArmEnum && t.TrialId == command.TrialId && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.TaskState == TaskState.Effect).OrderBy(t => t.VisitTaskNum).Select(t => t.VisitTaskNum).FirstOrDefault(); - //var maxVisitTaskNum = _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.ArmEnum == doctorArm.ArmEnum && t.TrialId == command.TrialId && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.TaskState == TaskState.Effect).OrderByDescending(t => t.VisitTaskNum).Select(t => t.VisitTaskNum).FirstOrDefault(); - - - //if (_subjectVisitRepository.Where(t => t.SubjectId == subjectId && t.VisitNum < minVisitTaskNum).Any(t => t.CheckState != CheckStateEnum.CVPassed)) - //{ - // //throw new BusinessValidationFailedException("Subject 前序有访视未一致性核查通过,不允许分配任务"); - - - // //不分配 - // updateWhere = updateWhere.And(t => t.VisitTaskNum < minVisitTaskNum); - - //} - //else if(_subjectVisitRepository.Where(t => t.SubjectId == subjectId && t.VisitNum<=maxVisitTaskNum && t.VisitNum >= minVisitTaskNum).Any(t => t.CheckState != CheckStateEnum.CVPassed)) - //{ - // var notCheckPassedVisitNum= await _subjectVisitRepository.Where(t => t.SubjectId == subjectId && t.VisitNum <= maxVisitTaskNum && t.VisitNum >= minVisitTaskNum).OrderByDescending(t=>t.VisitNum).Select(t=>t.VisitNum).FirstOrDefaultAsync(); - - // //分配两者之间的任务 - // updateWhere = updateWhere.And(t => t.VisitTaskNum >= minVisitTaskNum && t.VisitTaskNum<= notCheckPassedVisitNum); - //} } @@ -1392,6 +1371,14 @@ namespace IRaCIS.Core.Application.Service.Allocation var origenalTask = (await _visitTaskRepository.Where(t => item.OriginalReReadingTaskId == t.Id).FirstOrDefaultAsync()).IfNullThrowException(); + + //更新申请信息 + var visitTaskReReadingAppply = await _visitTaskReReadingRepository.FirstOrDefaultAsync(t => t.Id == item.Id); + visitTaskReReadingAppply.RequestReReadingConfirmUserId = _userInfo.Id; + visitTaskReReadingAppply.RequestReReadingResultEnum = agreeReReadingCommand.RequestReReadingResultEnum; + visitTaskReReadingAppply.RequestReReadingRejectReason = agreeReReadingCommand.RequestReReadingRejectReason; + + // 当前访视之前 已有任务申请 if (trialConfig.IsReadingTaskViewInOrder) { @@ -1406,14 +1393,12 @@ namespace IRaCIS.Core.Application.Service.Allocation } + + } - //更新申请信息 - var visitTaskReReadingAppply = await _visitTaskReReadingRepository.FirstOrDefaultAsync(t => t.Id == item.Id); - visitTaskReReadingAppply.RequestReReadingConfirmUserId = _userInfo.Id; - visitTaskReReadingAppply.RequestReReadingResultEnum = agreeReReadingCommand.RequestReReadingResultEnum; - visitTaskReReadingAppply.RequestReReadingRejectReason = agreeReReadingCommand.RequestReReadingRejectReason; + Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == origenalTask.SubjectId && t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated; @@ -1424,7 +1409,7 @@ namespace IRaCIS.Core.Application.Service.Allocation if (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree) { - ////有序 如果先同意访视2 再同意访视3 把访视3改为同意 + ////有序 同一访视其他申请 //if (trialConfig.IsReadingTaskViewInOrder) //{ // await _visitTaskReReadingRepository.BatchUpdateNoTrackingAsync(t => t.OriginalReReadingTask.SubjectId == visitTaskReReadingAppply.OriginalReReadingTask.SubjectId && t.OriginalReReadingTask.VisitTaskNum > origenalTask.VisitTaskNum, u => new VisitTaskReReading() @@ -1436,6 +1421,32 @@ namespace IRaCIS.Core.Application.Service.Allocation + #region PM 申请双重阅片 同一访视 其他已申请的任务也修改为同意 + await _visitTaskReReadingRepository.BatchUpdateNoTrackingAsync(t => t.OriginalReReadingTask.SubjectId == visitTaskReReadingAppply.OriginalReReadingTask.SubjectId && + t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.HaveApplyed && + t.RequestReReadingType == RequestReReadingType.TrialGroupApply && + t.OriginalReReadingTask.VisitTaskNum == origenalTask.VisitTaskNum && + t.Id != item.Id, u => new VisitTaskReReading() + { + RequestReReadingConfirmUserId = _userInfo.Id, + RequestReReadingResultEnum = RequestReReadingResult.Agree, + }); + + await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == origenalTask.SubjectId && + t.ReReadingApplyState == ReReadingApplyState.HaveApplyed && + t.IsAnalysisCreate == origenalTask.IsAnalysisCreate && + t.VisitTaskNum == origenalTask.VisitTaskNum && + t.Id != origenalTask.Id, u => new VisitTask() + { + ReReadingApplyState = ReReadingApplyState.Agree + }); + + + #endregion + + + + //PM申请 SPM / CPM审批 回退访视,在此不生成访视任务 if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.TrialGroupApply && (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)) {