From b77d2d916062bc70b2a53f0e3a5234741da536dd Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 15 Jul 2024 16:55:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=8F=E5=B0=91=E5=8E=8B=E7=BC=A9=E5=8C=85?= =?UTF-8?q?=E8=AE=BF=E8=A7=86=E5=B1=82=E7=BA=A7=EF=BC=8C=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=8D=95=E4=B8=AA=E9=9D=9Edicom=20=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E6=83=85=E5=86=B5=E5=8E=8B=E7=BC=A9=E5=8C=85=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImageAndDoc/DownloadAndUploadService.cs | 56 +++++++++++-------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index 56a9364f2..509cf43a3 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -493,15 +493,17 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc { var extralConfig = _repository.Where(t => t.Id == trialId).Select(t => t.TrialExtraConfigJsonStr).FirstOrDefault() ?? string.Empty; - var config= JsonConvert.DeserializeObject(extralConfig) ?? new TrialExtraConfig(); + var config = JsonConvert.DeserializeObject(extralConfig) ?? new TrialExtraConfig(); - if(config.IsSupportQCDownloadImage==false) + if (config.IsSupportQCDownloadImage == false) { throw new BusinessValidationFailedException("该项目不支持QC下载影像"); } var subjectVisit = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId); + var sujectCode = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => t.Subject.Code).FirstOrDefaultAsync(); + var packState = isDicom ? subjectVisit.PackState : subjectVisit.NoDicomPackState; if (packState == PackState.WaitPack) @@ -510,7 +512,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc if (isDicom) { subjectVisit.PackState = PackState.Packing; - HangfireJobHelper.NotImmediatelyOnceOnlyJob(t => t.PackageAndAnonymizImage(trialId, subjectVisitId,true, isAnonymize), TimeSpan.FromSeconds(1)); + HangfireJobHelper.NotImmediatelyOnceOnlyJob(t => t.PackageAndAnonymizImage(trialId, subjectVisitId, true, isAnonymize), TimeSpan.FromSeconds(1)); } else @@ -522,10 +524,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc await _subjectVisitRepository.SaveChangesAsync(); - } - return ResponseOutput.Ok(isDicom ? subjectVisit.VisitImageZipPath : subjectVisit.VisitNoDicomImageZipPath); + return ResponseOutput.Ok(isDicom ? subjectVisit.VisitImageZipPath : subjectVisit.VisitNoDicomImageZipPath, + new { FileName = $"{sujectCode}_{subjectVisit.VisitName}_ImageStudy_{(isDicom ? "Dicom" : "NoneDicom")}.zip" }); } @@ -650,7 +652,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc // 遍历 Series foreach (var seriesInfo in studyInfo.SeriesList) { - string studyDicomFolderPath = Path.Combine(tempFolderPath, "Dicom", $"{info.SubjectCode}_{info.VisitName}", $"{studyInfo.StudyCode}_{studyInfo.StudyTime?.ToString("yyyy-MM-dd")}_{seriesInfo.Modality}"); + string studyDicomFolderPath = Path.Combine(tempFolderPath, "Dicom",/* $"{info.SubjectCode}_{info.VisitName}",*/ $"{studyInfo.StudyCode}_{studyInfo.StudyTime?.ToString("yyyy-MM-dd")}_{seriesInfo.Modality}"); // 创建 影像 文件夹 Directory.CreateDirectory(studyDicomFolderPath); @@ -741,31 +743,39 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc } else { - //非dicom 处理 + var relativeNoneDicomPath = string.Empty; - foreach (var noneDicomStudy in info.NoneDicomStudyList) + if (info.NoneDicomStudyList.Count() == 1 && info.NoneDicomStudyList.SelectMany(t => t.FileList).Count() == 1) { - string studyNoneDicomFolderPath = Path.Combine(tempFolderPath, "NoneDicom", $"{info.SubjectCode}_{info.VisitName}", $"{noneDicomStudy.StudyCode}_{noneDicomStudy.ImageDate.ToString("yyyy-MM-dd")}_{noneDicomStudy.Modality}"); + relativeNoneDicomPath = info.NoneDicomStudyList.First().FileList.First().Path; + } + else + { + //非dicom 处理 - Directory.CreateDirectory(studyNoneDicomFolderPath); - - foreach (var file in noneDicomStudy.FileList) + foreach (var noneDicomStudy in info.NoneDicomStudyList) { - string destinationPath = Path.Combine(studyNoneDicomFolderPath, Path.GetFileName(file.FileName)); + string studyNoneDicomFolderPath = Path.Combine(tempFolderPath, "NoneDicom", /*$"{info.SubjectCode}_{info.VisitName}",*/ $"{noneDicomStudy.StudyCode}_{noneDicomStudy.ImageDate.ToString("yyyy-MM-dd")}_{noneDicomStudy.Modality}"); - //下载到当前目录 - await _oSSService.DownLoadFromOSSAsync(file.Path, destinationPath); + Directory.CreateDirectory(studyNoneDicomFolderPath); + + foreach (var file in noneDicomStudy.FileList) + { + string destinationPath = Path.Combine(studyNoneDicomFolderPath, Path.GetFileName(file.FileName)); + + //下载到当前目录 + await _oSSService.DownLoadFromOSSAsync(file.Path, destinationPath); + } } + + var zipNoneDicomPath = Path.Combine(Directory.GetCurrentDirectory(), $"{info.SubjectCode}_{info.VisitName}_ImageStudy_NoneDicom.zip"); + ZipFile.CreateFromDirectory(Path.Combine(tempFolderPath, "NoneDicom"), zipNoneDicomPath); + relativeNoneDicomPath = await _oSSService.UploadToOSSAsync(zipNoneDicomPath, $"download_zip", false); + + File.Delete(zipNoneDicomPath); } - - var zipNoneDicomPath = Path.Combine(Directory.GetCurrentDirectory(), $"{info.SubjectCode}_{info.VisitName}_ImageStudy_NoneDicom.zip"); - ZipFile.CreateFromDirectory(Path.Combine(tempFolderPath, "NoneDicom"), zipNoneDicomPath); - var relativeNoneDicomPath = await _oSSService.UploadToOSSAsync(zipNoneDicomPath, $"download_zip", false); - - File.Delete(zipNoneDicomPath); - - await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.Packed, VisitNoDicomImageZipPath = relativeNoneDicomPath }); + await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.Packed, VisitNoDicomImageZipPath = relativeNoneDicomPath }); }