减少压缩包访视层级,同时处理单个非dicom 特殊情况压缩包处理
continuous-integration/drone/push Build is passing Details

hang 2024-07-15 16:55:21 +08:00
parent 67e710eac0
commit cd2007c4fd
1 changed files with 33 additions and 23 deletions

View File

@ -502,6 +502,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
var subjectVisit = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId); 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; var packState = isDicom ? subjectVisit.PackState : subjectVisit.NoDicomPackState;
if (packState == PackState.WaitPack) if (packState == PackState.WaitPack)
@ -522,10 +524,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
await _subjectVisitRepository.SaveChangesAsync(); 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" });
} }
@ -617,7 +619,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
// 遍历 Series // 遍历 Series
foreach (var seriesInfo in studyInfo.SeriesList) 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); Directory.CreateDirectory(studyDicomFolderPath);
@ -707,12 +709,20 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
File.Delete(zipDicomPath); File.Delete(zipDicomPath);
} }
else else
{
var relativeNoneDicomPath = string.Empty;
if (info.NoneDicomStudyList.Count() == 1 && info.NoneDicomStudyList.SelectMany(t => t.FileList).Count() == 1)
{
relativeNoneDicomPath = info.NoneDicomStudyList.First().FileList.First().Path;
}
else
{ {
//非dicom 处理 //非dicom 处理
foreach (var noneDicomStudy in info.NoneDicomStudyList) foreach (var noneDicomStudy in info.NoneDicomStudyList)
{ {
string studyNoneDicomFolderPath = Path.Combine(tempFolderPath, "NoneDicom", $"{info.SubjectCode}_{info.VisitName}", $"{noneDicomStudy.StudyCode}_{noneDicomStudy.ImageDate.ToString("yyyy-MM-dd")}_{noneDicomStudy.Modality}"); string studyNoneDicomFolderPath = Path.Combine(tempFolderPath, "NoneDicom", /*$"{info.SubjectCode}_{info.VisitName}",*/ $"{noneDicomStudy.StudyCode}_{noneDicomStudy.ImageDate.ToString("yyyy-MM-dd")}_{noneDicomStudy.Modality}");
Directory.CreateDirectory(studyNoneDicomFolderPath); Directory.CreateDirectory(studyNoneDicomFolderPath);
@ -725,12 +735,12 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
} }
} }
var zipNoneDicomPath = Path.Combine(Directory.GetCurrentDirectory(), $"{info.SubjectCode}_{info.VisitName}_ImageStudy_NoneDicom.zip"); var zipNoneDicomPath = Path.Combine(Directory.GetCurrentDirectory(), $"{info.SubjectCode}_{info.VisitName}_ImageStudy_NoneDicom.zip");
ZipFile.CreateFromDirectory(Path.Combine(tempFolderPath, "NoneDicom"), zipNoneDicomPath); ZipFile.CreateFromDirectory(Path.Combine(tempFolderPath, "NoneDicom"), zipNoneDicomPath);
var relativeNoneDicomPath = await _oSSService.UploadToOSSAsync(zipNoneDicomPath, $"download_zip", false); relativeNoneDicomPath = await _oSSService.UploadToOSSAsync(zipNoneDicomPath, $"download_zip", false);
File.Delete(zipNoneDicomPath); 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 });