diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index 1bf154b8a..8baae9c30 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -65,8 +65,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc /// public async Task SubejctRandomReadingTaskNameDeal(Guid subjectId, Guid trialReadingCriterionId) { - //subject 随机阅片 才处理任务编号 - if (_visitTaskRepository.Any(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom)) + //subject 随机阅片 或者无序 有上传 才处理任务编号 + if (_visitTaskRepository.Any(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && + (t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom || + (t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.Random && t.TrialReadingCriterion.ImageUploadEnum != ReadingImageUpload.None)))) { //找到 非一致性分析,未签名,状态正常的 并且任务名称是TimePoint的 任务 var needDealTaskList = await _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false && t.DoctorUserId == _userInfo.Id @@ -754,12 +756,18 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc [HttpPost] public async Task> GetSubjectImageDownloadSelectList(IRReadingDownloadQuery inQuery) { + //要根据标准阅片顺序,确定是否查询单个任务的,还是查询所有的 + + var criterionInfo= await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId) + .Select(t => new { t.IsReadingTaskViewInOrder }).FirstNotNullAsync(); + + var doctorUserId = _userInfo.Id; var isAnalysisCreate = false; //医学审核查看下载按钮,这个时候需要知道医生 - if (inQuery.VisitTaskId != null && inQuery.VisitTaskId != Guid.Empty) + if (inQuery.VisitTaskId != null ) { var info = await _visitTaskRepository.Where(t => t.Id == inQuery.VisitTaskId).Select(t => new { t.DoctorUserId, t.IsAnalysisCreate }).FirstNotNullAsync(); @@ -769,6 +777,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var query = _visitTaskRepository.Where(t => t.SubjectId == inQuery.SubjectId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.SourceSubjectVisitId != null && t.DoctorUserId == doctorUserId && t.TaskState == TaskState.Effect) + //满足 有序,或者随机只看到当前任务的dicom 非dicom检查 + .WhereIf(criterionInfo.IsReadingTaskViewInOrder!=ReadingOrder.SubjectRandom && inQuery.VisitTaskId != null,t=>t.Id==inQuery.VisitTaskId) .ProjectTo(_mapper.ConfigurationProvider); //这里过滤是否是一致性分析的 @@ -838,7 +848,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc public async Task GetIRReadingDownloadStudyInfo(IRDownloadQuery inQuery) { var info = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId) - .Select(t => new { t.IsImageFilter, t.CriterionModalitys, t.TrialId }).FirstNotNullAsync(); + .Select(t => new { t.IsImageFilter, t.CriterionModalitys, t.TrialId,t.IsReadingTaskViewInOrder }).FirstNotNullAsync(); var isQueryDicom = inQuery.DicomStudyIdList.Count > 0; var isQueryNoneDicom = inQuery.NoneDicomStudyIdList.Count > 0; @@ -909,7 +919,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc Id = NewId.NextSequentialGuid(), TrialId = info.TrialId, SubjectCode = inQuery.SubjectCode, - IP=_userInfo.IP, + IP = _userInfo.IP, DownloadStartTime = DateTime.Now, IsSuccess = false, ImageType = imageType, @@ -921,8 +931,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc ) ?? 0 }; - await _trialImageDownloadRepository.AddAsync(preDownloadInfo,true); - return ResponseOutput.Ok(result, preDownloadInfo.Id); + await _trialImageDownloadRepository.AddAsync(preDownloadInfo, true); + + return ResponseOutput.Ok(result, new { PreDownloadId= preDownloadInfo.Id,info.IsReadingTaskViewInOrder } ); } ///