diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index b78d10701..ae6382bd8 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -268,11 +268,8 @@ namespace IRaCIS.Core.Application.Image.QA qaReply.UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt; - var dbQCChallenge = await _repository.FirstOrDefaultAsync(t => t.Id == qaDialogCommand.QCChallengeId); - - - if (dbQCChallenge == null) return Null404NotFound(dbQCChallenge); - + var dbQCChallenge = (await _repository.FirstOrDefaultAsync(t => t.Id == qaDialogCommand.QCChallengeId)).IfNullThrowException(); + dbQCChallenge.LatestMsgTime = DateTime.Now; @@ -1271,22 +1268,22 @@ namespace IRaCIS.Core.Application.Image.QA { var sv = dbSubjectVisitList[0]; - var existObj = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.SubjectId == sv.SubjectId && t.SubmitState != SubmitStateEnum.Submitted && t.VisitNum < sv.VisitNum); + var nameList = await _subjectVisitRepository.Where(t => t.SubjectId == sv.SubjectId && t.SubmitState != SubmitStateEnum.Submitted && t.VisitNum < sv.VisitNum).Select(t=>t.VisitName).ToListAsync()??new List(); if (sv.PDState == PDStateEnum.PDProgress) { - if (existObj != null) + if (nameList.Count()>0) { - return ResponseOutput.NotOk($"系统检测发现该受试者当前访视之前的访视:{existObj.VisitName},未提交,疾病进展确认对阅片时限要求很高,请将上述访视提交或标记失访后,再提交当前访视!", 1,ApiResponseCodeEnum.NeedTips); + return ResponseOutput.NotOk($"系统检测发现该受试者当前访视之前的访视:{string.Join('、',nameList)},未提交,疾病进展确认对阅片时限要求很高,请将上述访视提交或标记失访后,再提交当前访视!", 1,ApiResponseCodeEnum.NeedTips); } } else { - if (existObj != null) + if (nameList.Count() > 0) { - return ResponseOutput.NotOk($"系统检测发现该受试者当前访视之前的访视:{existObj.VisitName},未提交。请在该访视提交后,尽快完成上述访视的影像上传和提交。", 0, ApiResponseCodeEnum.NeedTips); + return ResponseOutput.NotOk($"系统检测发现该受试者当前访视之前的访视:{string.Join('、', nameList)},未提交。请在该访视提交后,尽快完成上述访视的影像上传和提交。", 0, ApiResponseCodeEnum.NeedTips); } } } @@ -1981,6 +1978,8 @@ namespace IRaCIS.Core.Application.Image.QA [HttpPost("{trialId:guid}")] public async Task ForwardSVDicomImage(Guid[] subjectVisitIdList) { + + bool isSuccess = false; List datas = new List(); foreach (var subjectVisitId in subjectVisitIdList) @@ -2033,9 +2032,11 @@ namespace IRaCIS.Core.Application.Image.QA foreach (var studyFolder in studyFolders) { - if (!session.FileExists(Path.Combine(targetPath, studyFolder.Name))) + var targetFolder = Path.Combine(targetPath, studyFolder.Name); + + if (!session.FileExists(targetFolder)) { - session.CreateDirectory(targetPath); + session.CreateDirectory(targetFolder); } foreach (var file in studyFolder.GetFiles()) @@ -2043,7 +2044,7 @@ namespace IRaCIS.Core.Application.Image.QA if (file.Extension.Contains("dcm", StringComparison.OrdinalIgnoreCase)) { string remoteFilePath = - RemotePath.TranslateLocalPathToRemote(file.FullName, studyFolder.FullName, targetPath); + RemotePath.TranslateLocalPathToRemote(file.FullName, studyFolder.FullName, targetFolder); var result = session.PutFiles(file.FullName, remoteFilePath, false); @@ -2062,6 +2063,7 @@ namespace IRaCIS.Core.Application.Image.QA await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded, ForwardUserId = _userInfo.Id, ForwardTime = DateTime.Now }); + isSuccess = true; keyValuePairs["ForwardState"] = ForwardStateEnum.Forwarded; } catch (Exception e) @@ -2070,6 +2072,8 @@ namespace IRaCIS.Core.Application.Image.QA await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed }); keyValuePairs["ForwardState"] = ForwardStateEnum.ForwardFailed; + + return ResponseOutput.NotOk("转发失败 "+e.Message); } @@ -2083,7 +2087,7 @@ namespace IRaCIS.Core.Application.Image.QA await _subjectVisitRepository.SaveChangesAsync(); - return ResponseOutput.Ok(); + return isSuccess?ResponseOutput.Ok():ResponseOutput.NotOk("转发失败"); } diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs index f394078b8..55df3c514 100644 --- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs @@ -196,7 +196,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName)) .ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName)) .ForMember(d => d.CurrentActionUserId, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUserId)) - .ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUser.UserName)) + .ForMember(d => d.CurrentActionUserName, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUser.UserName)) .ForMember(d => d.SubjectId, u => u.MapFrom(t => t.SubjectVisit.SubjectId )) .ForMember(d => d.ChallengeCode, u => u.MapFrom(s => "Q" + s.ChallengeCode.ToString("D5"))); diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs index 278680ef2..22d530d64 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs @@ -32,9 +32,10 @@ namespace IRaCIS.Core.Application.Triggers { if (context.Entity.IsFinalVisit) { - if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum && t.SubmitState == SubmitStateEnum.ToSubmit)) + if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum && + (t.SubmitState == SubmitStateEnum.ToSubmit|| t.SubmitState==SubmitStateEnum.Submitted))) { - throw new BusinessValidationFailedException("该受试者此访视后有影像上传,该访视不允许设置为末次访视"); + throw new BusinessValidationFailedException("该受试者已有后续访视已上传影像或已提交,该访视不允许设置为末次访视"); } await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisit.SubjectId, @@ -42,7 +43,8 @@ namespace IRaCIS.Core.Application.Triggers //末次访视后的 访视设置为不可用 - await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable }); + await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum && + t.VisitExecuted==VisitExecutedEnum.UnExecuted, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable }); } else {