diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index d327c712f..6d7e499b6 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -870,7 +870,7 @@ namespace IRaCIS.Core.Application.Service //有可能仅仅只分配了一个Subject 未分配 那么 if (assignConfigList.Any(t => t.ArmEnum == Arm.DoubleReadingArm1) && task1 != null) - { + { arm1.TaskAllocationState = TaskAllocationState.Allocated; arm1.AllocateTime = DateTime.Now; arm1.DoctorUserId = task1.DoctorUserId; @@ -903,7 +903,7 @@ namespace IRaCIS.Core.Application.Service BlindTrialSiteCode = latestTask.BlindTrialSiteCode, IsAnalysisCreate = latestTask.IsAnalysisCreate, IsSelfAnalysis = latestTask.IsSelfAnalysis, - + TrialReadingCriterionId = latestTask.TrialReadingCriterionId, IsNeedClinicalDataSign = latestTask.IsNeedClinicalDataSign, IsClinicalDataSign = latestTask.IsClinicalDataSign @@ -913,10 +913,10 @@ namespace IRaCIS.Core.Application.Service { taskOne.TaskAllocationState = TaskAllocationState.Allocated; taskOne.AllocateTime = DateTime.Now; - taskOne. DoctorUserId = task1!.DoctorUserId; - taskOne. SuggesteFinishedTime = GetSuggessFinishTime(true, UrgentType.NotUrget); + taskOne.DoctorUserId = task1!.DoctorUserId; + taskOne.SuggesteFinishedTime = GetSuggessFinishTime(true, UrgentType.NotUrget); } - + currentMaxCodeInt = currentMaxCodeInt + 1; @@ -976,7 +976,7 @@ namespace IRaCIS.Core.Application.Service BlindTrialSiteCode = latestTask.BlindTrialSiteCode, IsAnalysisCreate = latestTask.IsAnalysisCreate, IsSelfAnalysis = latestTask.IsSelfAnalysis, - + TrialReadingCriterionId = latestTask.TrialReadingCriterionId, IsNeedClinicalDataSign = latestTask.IsNeedClinicalDataSign, IsClinicalDataSign = latestTask.IsClinicalDataSign @@ -1409,31 +1409,35 @@ namespace IRaCIS.Core.Application.Service .Where(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.PM || x.FileCount > 0) .Include(t => t.ReadingClinicalDataPDFList).Include(t => t.ClinicalDataTrialSet).ToList(); - - foreach (var clinicalData in clinicalDataList) + //防止多标准重复插入 + if (!_readingConsistentClinicalDataRepository.Any(t => t.SubjectId == subjectId)) { - var consistnentClinicalData = _mapper.Map(clinicalData); - var id = NewId.NextSequentialGuid(); - consistnentClinicalData.Id = id; - - if (consistnentClinicalData.ClinicalDataTrialSet.ClinicalUploadType == ClinicalUploadType.PDF) + foreach (var clinicalData in clinicalDataList) { - consistnentClinicalData.IsSign = false; - consistnentClinicalData.IsBlind = false; - consistnentClinicalData.IsComplete = true; - consistnentClinicalData.ReadingClinicalDataState = ReadingClinicalDataStatus.HaveUploaded; - consistnentClinicalData.ClinicalDataTrialSet = null; + var consistnentClinicalData = _mapper.Map(clinicalData); + var id = NewId.NextSequentialGuid(); + consistnentClinicalData.Id = id; + + if (consistnentClinicalData.ClinicalDataTrialSet.ClinicalUploadType == ClinicalUploadType.PDF) + { + consistnentClinicalData.IsSign = false; + consistnentClinicalData.IsBlind = false; + consistnentClinicalData.IsComplete = true; + consistnentClinicalData.ReadingClinicalDataState = ReadingClinicalDataStatus.HaveUploaded; + consistnentClinicalData.ClinicalDataTrialSet = null; + } + + var consistanClinicalDataPdfList = _mapper.Map>(clinicalData.ReadingClinicalDataPDFList); + + consistanClinicalDataPdfList.ForEach(t => { t.ReadingConsistentClinicalDataId = id; t.Id = Guid.Empty; }); + + consistnentClinicalData.ReadingClinicalDataPDFList = consistanClinicalDataPdfList; + + await _readingConsistentClinicalDataRepository.AddAsync(consistnentClinicalData); } - - var consistanClinicalDataPdfList = _mapper.Map>(clinicalData.ReadingClinicalDataPDFList); - - consistanClinicalDataPdfList.ForEach(t => { t.ReadingConsistentClinicalDataId = id; t.Id = Guid.Empty; }); - - consistnentClinicalData.ReadingClinicalDataPDFList = consistanClinicalDataPdfList; - - await _readingConsistentClinicalDataRepository.AddAsync(consistnentClinicalData); } + foreach (var task in generateTaskCommand.GenerataConsistentTaskList) { diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 3dc04ad1d..e897d4ed0 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -1360,12 +1360,25 @@ namespace IRaCIS.Core.Application.Image.QA case TrialQCProcess.SingleAudit: var visitList = await _subjectVisitRepository .Where(t => t.Subject.Status != SubjectStatus.EndOfVisit) + //区分类型,当前做的是复核任务 .WhereIf(isDistinguishType, t => isSecondReview == true ? t.SecondReviewState == SecondReviewState.WaitAudit : t.SecondReviewState == SecondReviewState.None) .WhereIf(isDistinguishType, t => ishaveQCChallenge == true ? t.QCChallengeList.Any() : !t.QCChallengeList.Any()) + + //区分类型,当前做的不是复核任务 + .WhereIf(isDistinguishType && isSecondReview == false, t => t.AuditState != AuditStateEnum.QCPassed) + + //不区分任务类型, 当前做完的任何类型都要默认满足下面条件 + .WhereIf(isDistinguishType == false, t => (t.SecondReviewState == SecondReviewState.WaitAudit && t.AuditState == AuditStateEnum.QCPassed) || (t.AuditState != AuditStateEnum.QCPassed)) + + ////不区分任务类型 当前不是复核任务 + //.WhereIf(isDistinguishType == false && isSecondReview == false, t => (t.SecondReviewState == SecondReviewState.WaitAudit && t.AuditState == AuditStateEnum.QCPassed) || (t.AuditState != AuditStateEnum.QCPassed)) + + ////不区分任务类型 当前是复核任务 + //.WhereIf(isDistinguishType == false && isSecondReview == true, t => (t.SecondReviewState == SecondReviewState.WaitAudit && t.AuditState == AuditStateEnum.QCPassed) || (t.AuditState != AuditStateEnum.QCPassed)) + .Where(x => !x.SubjectVisitImageBackRecordList.Any(t => t.ImageBackState == ImageBackStateEnum.None)) .Where(x => x.SubmitState == SubmitStateEnum.Submitted && x.TrialId == inDto.TrialId && x.CurrentActionUserId == null) //.WhereIf(isSecondReview, t => t.PreliminaryAuditUserId != null) - .WhereIf(isSecondReview == false, t => t.AuditState != AuditStateEnum.QCPassed) //.Where(x => x.QCChallengeList.Count() == 0 || x.QCChallengeList.Where(y => !y.IsClosed).OrderByDescending(x => x.CreateTime).FirstOrDefault().CreateUserId != _userInfo.UserRoleId) .Select(t => new { t.IsUrgent, SubjectCode = t.Subject.Code, t.SubjectId, t.Id, t.VisitNum, IshaveQCChallenge = t.QCChallengeList.Any(), t.SecondReviewState }) .OrderBy(t => t.IshaveQCChallenge).ThenBy(t => t.SecondReviewState).ThenBy(x => x.IsUrgent).ThenBy(x => x.SubjectCode).ThenBy(x => x.VisitNum).ToListAsync(); @@ -1401,10 +1414,18 @@ namespace IRaCIS.Core.Application.Image.QA .Where(t => t.Subject.Status != SubjectStatus.EndOfVisit) .WhereIf(isDistinguishType, t => isSecondReview == true ? t.SecondReviewState == SecondReviewState.WaitAudit : t.SecondReviewState == SecondReviewState.None) .WhereIf(isDistinguishType, t => ishaveQCChallenge == true ? t.QCChallengeList.Any() : !t.QCChallengeList.Any()) - .Where(x => !x.SubjectVisitImageBackRecordList.Any(t => t.ImageBackState == ImageBackStateEnum.None)) + //区分类型,当前做的不是复核任务 + .WhereIf(isDistinguishType && isSecondReview == false, t => t.AuditState != AuditStateEnum.QCPassed) + .WhereIf(isDistinguishType && isSecondReview == false, t => t.AuditState >= AuditStateEnum.PrimaryQCPassed ? t.PreliminaryAuditUserId != _userInfo.UserRoleId : true) + + //不区分任务类型, 当前做完的任何类型都要默认满足下面条件 + .WhereIf(isDistinguishType == false, t => (t.SecondReviewState == SecondReviewState.WaitAudit && t.AuditState == AuditStateEnum.QCPassed) || (t.AuditState != AuditStateEnum.QCPassed)) + + + .Where(x => !x.SubjectVisitImageBackRecordList.Any(t => t.ImageBackState == ImageBackStateEnum.None)) .Where(x => x.SubmitState == SubmitStateEnum.Submitted && x.TrialId == inDto.TrialId && x.CurrentActionUserId == null) - .WhereIf(isSecondReview == false, t => t.AuditState >= AuditStateEnum.PrimaryQCPassed ? t.PreliminaryAuditUserId != _userInfo.UserRoleId : true) - .WhereIf(isSecondReview == false, t => t.AuditState != AuditStateEnum.QCPassed) + + //.Where(x => x.QCChallengeList.Count() == 0 || x.QCChallengeList.Where(y => !y.IsClosed).OrderByDescending(x => x.CreateTime).FirstOrDefault().CreateUserId != _userInfo.UserRoleId) .Select(t => new { t.IsUrgent, SubjectCode = t.Subject.Code, t.SubjectId, t.Id, t.VisitNum, IshaveQCChallenge = t.QCChallengeList.Any(), t.SecondReviewState }) .OrderBy(t => t.IshaveQCChallenge).ThenBy(t => t.SecondReviewState).ThenBy(x => x.IsUrgent).ThenBy(x => x.SubjectCode).ThenBy(x => x.VisitNum).ToListAsync();