Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing Details

Uat_IRC_Net8
he 2025-08-01 16:46:27 +08:00
commit 9a1a4e3451
2 changed files with 55 additions and 30 deletions

View File

@ -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<ReadingConsistentClinicalData>(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<ReadingConsistentClinicalData>(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<List<ReadingConsistentClinicalDataPDF>>(clinicalData.ReadingClinicalDataPDFList);
consistanClinicalDataPdfList.ForEach(t => { t.ReadingConsistentClinicalDataId = id; t.Id = Guid.Empty; });
consistnentClinicalData.ReadingClinicalDataPDFList = consistanClinicalDataPdfList;
await _readingConsistentClinicalDataRepository.AddAsync(consistnentClinicalData);
}
var consistanClinicalDataPdfList = _mapper.Map<List<ReadingConsistentClinicalDataPDF>>(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)
{

View File

@ -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();