From e11ab15e6c7493934a3860d54fde54b418386dbc Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Tue, 15 Jul 2025 17:27:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9QC=E5=A4=8D=E6=A0=B8=20-?= =?UTF-8?q?=E4=BA=8C=E6=AC=A1=E6=8F=90=E4=BA=A4-uat-9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/TrialSiteUser/TrialConfigService.cs | 15 ++++++++++----- IRaCIS.Core.Domain/Visit/SubjectVisit.cs | 2 ++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 94bfbd0b3..dce18c46f 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -6,6 +6,7 @@ using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Application.Interfaces; using IRaCIS.Core.Application.Service.Reading.Dto; using IRaCIS.Core.Application.ViewModel; +using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infra.EFCore.Common; using IRaCIS.Core.Infrastructure; @@ -868,10 +869,14 @@ namespace IRaCIS.Core.Application } else if (signConfirmDTO.SignCode == ((int)SignEnum.SecondReviewConfirm).ToString()) { - await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId && t.AuditState == AuditStateEnum.QCPassed, u => new SubjectVisit() { SecondReviewState = SecondReviewState.WaitAudit }); + var trialConfirmTime = _trialRepository.Where(t => t.Id == signConfirmDTO.TrialId).Select(t => t.QCQuestionConfirmedTime).FirstOrDefault(); + + //重复二次复核签名 + await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId && t.AuditState == AuditStateEnum.QCPassed + && !t.TrialQCQuestionAnswerList.Any(t => t.SecondReviewTime == trialConfirmTime), u => new SubjectVisit() { SecondReviewState = SecondReviewState.WaitAudit }); //删除复审中间临时数据 - await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.AuditState != AuditStateEnum.QCPassed && t.CurrentQCEnum == CurrentQC.SecondReview); + await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.SecondReviewState != SecondReviewState.AuditPassed && t.CurrentQCEnum == CurrentQC.SecondReview); } else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialQCQuestionConfirm).ToString()) { @@ -1288,7 +1293,7 @@ namespace IRaCIS.Core.Application [HttpGet("{trialId:guid}")] public async Task GetTrialConfigInfo(Guid trialId) { - var result= await _trialRepository.Where(t => t.Id == trialId).ProjectTo(_mapper.ConfigurationProvider, new + var result = await _trialRepository.Where(t => t.Id == trialId).ProjectTo(_mapper.ConfigurationProvider, new { isEn_Us = _userInfo.IsEn_Us @@ -1301,7 +1306,7 @@ namespace IRaCIS.Core.Application .Select(c => c.ModalityForEdit) .Distinct(), - DicomStudyNameList= t.StudyList.Where(t => t.StudyName != "") + DicomStudyNameList = t.StudyList.Where(t => t.StudyName != "") .Select(c => c.StudyName) .Distinct(), @@ -1315,7 +1320,7 @@ namespace IRaCIS.Core.Application }).FirstOrDefault(); - result.StudyUseModalityList= use.DicomModalityList.Union(use.NoneDicomModalityList).Distinct().ToList(); + result.StudyUseModalityList = use.DicomModalityList.Union(use.NoneDicomModalityList).Distinct().ToList(); result.StudyUseStudyNameList = use.DicomStudyNameList.Union(use.NoneDicomStudyNameList).Distinct().ToList(); diff --git a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs index 862560d79..5d0f5616a 100644 --- a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs +++ b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs @@ -6,6 +6,8 @@ namespace IRaCIS.Core.Domain.Models; public class SubjectVisit : BaseFullDeleteAuditEntity { #region 导航属性 + [JsonIgnore] + public List TrialQCQuestionAnswerList { get; set; } [JsonIgnore] public TrialSite TrialSite { get; set; }