5.1前bug修复

Uat_Study
hang 2022-05-05 08:56:32 +08:00
parent 8bdc6d97d5
commit 18aca83cd7
3 changed files with 24 additions and 18 deletions

View File

@ -268,11 +268,8 @@ namespace IRaCIS.Core.Application.Image.QA
qaReply.UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt; qaReply.UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt;
var dbQCChallenge = await _repository.FirstOrDefaultAsync<QCChallenge>(t => t.Id == qaDialogCommand.QCChallengeId); var dbQCChallenge = (await _repository.FirstOrDefaultAsync<QCChallenge>(t => t.Id == qaDialogCommand.QCChallengeId)).IfNullThrowException();
if (dbQCChallenge == null) return Null404NotFound(dbQCChallenge);
dbQCChallenge.LatestMsgTime = DateTime.Now; dbQCChallenge.LatestMsgTime = DateTime.Now;
@ -1271,22 +1268,22 @@ namespace IRaCIS.Core.Application.Image.QA
{ {
var sv = dbSubjectVisitList[0]; 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<string>();
if (sv.PDState == PDStateEnum.PDProgress) 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 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}")] [HttpPost("{trialId:guid}")]
public async Task<IResponseOutput> ForwardSVDicomImage(Guid[] subjectVisitIdList) public async Task<IResponseOutput> ForwardSVDicomImage(Guid[] subjectVisitIdList)
{ {
bool isSuccess = false;
List<DataInspection> datas = new List<DataInspection>(); List<DataInspection> datas = new List<DataInspection>();
foreach (var subjectVisitId in subjectVisitIdList) foreach (var subjectVisitId in subjectVisitIdList)
@ -2033,9 +2032,11 @@ namespace IRaCIS.Core.Application.Image.QA
foreach (var studyFolder in studyFolders) 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()) foreach (var file in studyFolder.GetFiles())
@ -2043,7 +2044,7 @@ namespace IRaCIS.Core.Application.Image.QA
if (file.Extension.Contains("dcm", StringComparison.OrdinalIgnoreCase)) if (file.Extension.Contains("dcm", StringComparison.OrdinalIgnoreCase))
{ {
string remoteFilePath = string remoteFilePath =
RemotePath.TranslateLocalPathToRemote(file.FullName, studyFolder.FullName, targetPath); RemotePath.TranslateLocalPathToRemote(file.FullName, studyFolder.FullName, targetFolder);
var result = session.PutFiles(file.FullName, remoteFilePath, false); 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, await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded, ForwardUserId = _userInfo.Id, ForwardTime = DateTime.Now }); u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded, ForwardUserId = _userInfo.Id, ForwardTime = DateTime.Now });
isSuccess = true;
keyValuePairs["ForwardState"] = ForwardStateEnum.Forwarded; keyValuePairs["ForwardState"] = ForwardStateEnum.Forwarded;
} }
catch (Exception e) catch (Exception e)
@ -2070,6 +2072,8 @@ namespace IRaCIS.Core.Application.Image.QA
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed }); u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
keyValuePairs["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(); await _subjectVisitRepository.SaveChangesAsync();
return ResponseOutput.Ok(); return isSuccess?ResponseOutput.Ok():ResponseOutput.NotOk("转发失败");
} }

View File

@ -196,7 +196,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName)) .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.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName))
.ForMember(d => d.CurrentActionUserId, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUserId)) .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.SubjectId, u => u.MapFrom(t => t.SubjectVisit.SubjectId ))
.ForMember(d => d.ChallengeCode, u => u.MapFrom(s => "Q" + s.ChallengeCode.ToString("D5"))); .ForMember(d => d.ChallengeCode, u => u.MapFrom(s => "Q" + s.ChallengeCode.ToString("D5")));

View File

@ -32,9 +32,10 @@ namespace IRaCIS.Core.Application.Triggers
{ {
if (context.Entity.IsFinalVisit) 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, 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 else
{ {