diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index f50e8e922..eb6d0cd0b 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -928,9 +928,13 @@ namespace IRaCIS.Core.Application.Image.QA return new GetNextIQCQualityOutDto() { }; break; case TrialQCProcess.SingleAudit: - visitList = await _subjectVisitRepository.Where(x => x.SubmitState == SubmitStateEnum.Submitted && x.TrialId == inDto.TrialId && x.PreliminaryAuditUserId!= _userInfo.Id&&(x.CurrentActionUserId == _userInfo.Id || (x.AuditState != AuditStateEnum.PrimaryQCPassed && !x.IsTake))).Include(x => x.Subject).ToListAsync(); + visitList = await _subjectVisitRepository.Where(x => x.SubmitState == SubmitStateEnum.Submitted + && x.TrialId == inDto.TrialId && x.PreliminaryAuditUserId!= _userInfo.Id&&(x.CurrentActionUserId == _userInfo.Id || (x.AuditState != AuditStateEnum.PrimaryQCPassed && !x.IsTake))).Include(x => x.Subject).ToListAsync(); - subjectVisit = visitList.Where(x => x.SubjectId == inDto.SubjectId).OrderBy(x=>x.VisitNum).FirstOrDefault(); + subjectVisit = visitList.Where(x => x.SubjectId == inDto.SubjectId) + .Where(x=>x.QCChallengeDialogList.Count() > 0 && x.QCChallengeDialogList.OrderByDescending(x => x.CreateTime).FirstOrDefault().UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator) + + .OrderBy(x=>x.VisitNum).FirstOrDefault(); if(subjectVisit!=null) { return new GetNextIQCQualityOutDto() { @@ -957,7 +961,9 @@ namespace IRaCIS.Core.Application.Image.QA visitList = await _subjectVisitRepository.Where(x => x.SubmitState == SubmitStateEnum.Submitted && x.TrialId == inDto.TrialId && ((x.CurrentActionUserId == _userInfo.Id)||(!x.IsTake&& x.AuditState != AuditStateEnum.QCPassed&& (x.PreliminaryAuditUserId != _userInfo.Id))) - ).Include(x => x.Subject).ToListAsync(); + ) + .Where(x => x.QCChallengeDialogList.Count() > 0 && x.QCChallengeDialogList.OrderByDescending(x => x.CreateTime).FirstOrDefault().UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator) + .Include(x => x.Subject).ToListAsync(); if (subjectVisit != null) { return new GetNextIQCQualityOutDto() diff --git a/IRaCIS.Core.Domain.Share/QC/AuditStateEnum.cs b/IRaCIS.Core.Domain.Share/QC/AuditStateEnum.cs index 3e32a2761..35f4dc763 100644 --- a/IRaCIS.Core.Domain.Share/QC/AuditStateEnum.cs +++ b/IRaCIS.Core.Domain.Share/QC/AuditStateEnum.cs @@ -14,6 +14,9 @@ namespace IRaCIS.Core.Domain.Share //1st QC进行了操作 InPrimaryQC = 4, + /// + /// 单审通过 + /// PrimaryQCPassed = 5, //2nd QC进行操作 diff --git a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs index e5e6edaca..1073f3b12 100644 --- a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs +++ b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs @@ -84,7 +84,9 @@ namespace IRaCIS.Core.Domain.Models public Guid? ForwardUserId { get; set; } public DateTime? ForwardTime { get; set; } - // 质控领取人 + /// + /// 当前质控领取人 + /// public Guid? CurrentActionUserId { get; set; } public DateTime? CurrentActionUserExpireTime { get; set; }