diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index fe0feed5a..51bf23ad6 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -579,7 +579,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc /// [HttpGet("{subjectVisitId:guid}")] [AllowAnonymous] - public IResponseOutput> GetAllRelationStudyList(Guid subjectVisitId) + public IResponseOutput> GetAllRelationStudyList(Guid subjectVisitId,bool? isReading) { #region 废弃 //var studylist = _studyRepository.Where(u => u.SubjectVisitId == subjectVisitId && u.IsDeleted == false).Select(t => new { StudyId = t.Id, t.SubjectId, t.TrialId }).ToList(); @@ -607,10 +607,18 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var studyInfo = _dicomStudyRepository.Where(u => u.SubjectVisitId == subjectVisitId).Select(t => new { t.SubjectId, t.TrialId }).FirstOrDefault().IfNullThrowException(); - var query = _dicomStudyRepository.Where(t => t.SubjectVisitId != subjectVisitId && t.TrialId == studyInfo.TrialId && t.SubjectId == studyInfo.SubjectId) - .ProjectTo(_mapper.ConfigurationProvider).ToList(); + var list = _dicomStudyRepository.Where(t => t.SubjectVisitId != subjectVisitId && t.TrialId == studyInfo.TrialId && t.SubjectId == studyInfo.SubjectId) + .Select(t=> new RelationStudyDTO() + { + StudyId = t.Id, + StudyCode = t.StudyCode, + VisitName = t.SubjectVisit.VisitName, + Modalities = t.Modalities, + Description = t.Description, + SeriesCount = t.SeriesList.Where(t=> isReading==true? t.IsReading==true:true).Count() + }) .ToList(); - var list = query.OrderBy(u => u.VisitName).ThenBy(s => s.StudyCode).ToList(); + list = list.Where(t=>t.SeriesCount>0).OrderBy(u => u.VisitName).ThenBy(s => s.StudyCode).ToList(); return ResponseOutput.Ok(list); } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index e9ca04d77..3d1c4ab83 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -865,6 +865,23 @@ namespace IRaCIS.Core.Application } else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialQCQuestionConfirmUpdate).ToString()) { + var trialConfirmTime = _trialRepository.Where(t => t.Id == signConfirmDTO.TrialId).Select(t => t.QCQuestionConfirmedTime).FirstOrDefault(); + + if (trialConfirmTime != null) + { + //删除复审中间临时数据 + await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.SecondReviewState == SecondReviewState.WaitAudit + && t.CurrentQCEnum == CurrentQC.SecondReview && t.UpdateTime > trialConfirmTime); + + //删除质控中 临时保存的问题答案 (因为添加那里只会新增 和全部更新,如果不处理,那么有新增,也有更新,稽查那里也会有问题) + await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.AuditState == AuditStateEnum.InPrimaryQC + && t.CurrentQCEnum == CurrentQC.First); + + await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.AuditState == AuditStateEnum.InSecondaryQC + && t.CurrentQCEnum == CurrentQC.Second); + + } + await _trialRepository.UpdatePartialFromQueryAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { QCQuestionConfirmedTime = null, QCQuestionConfirmedUserId = null, IsQCQuestionConfirmed = false }); } else if (signConfirmDTO.SignCode == ((int)SignEnum.SecondReviewConfirm).ToString()) @@ -873,15 +890,15 @@ namespace IRaCIS.Core.Application if (trialConfirmTime != null) { - //删除复审中间临时数据 - await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.SecondReviewState == SecondReviewState.WaitAudit - && t.CurrentQCEnum == CurrentQC.SecondReview && t.UpdateTime> trialConfirmTime); + //删除复审中间临时数据--没重置,一直点生成复核任务 + await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.SecondReviewState == SecondReviewState.WaitAudit + && t.CurrentQCEnum == CurrentQC.SecondReview && t.UpdateTime > trialConfirmTime); //重复二次复核签名 await _subjectVisitRepository.UpdatePartialFromQueryAsync(t => t.TrialId == signConfirmDTO.TrialId && t.AuditState == AuditStateEnum.QCPassed && !t.TrialQCQuestionAnswerList.Any(t => t.SecondReviewTime == trialConfirmTime), u => new SubjectVisit() { SecondReviewState = SecondReviewState.WaitAudit }); - + } }