From 4235e6025a0286cdbc950c67a4296128dd2a04c0 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Tue, 27 May 2025 13:15:38 +0800
Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E9=A1=B9=E7=9B=AE=E5=BD=B1?=
=?UTF-8?q?=E5=83=8F=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Service/Common/BackDownloadService.cs | 51 ++++++++++---------
1 file changed, 27 insertions(+), 24 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/Common/BackDownloadService.cs b/IRaCIS.Core.Application/Service/Common/BackDownloadService.cs
index 603b88601..05a2af38c 100644
--- a/IRaCIS.Core.Application/Service/Common/BackDownloadService.cs
+++ b/IRaCIS.Core.Application/Service/Common/BackDownloadService.cs
@@ -2,12 +2,14 @@
using FellowOakDicom;
using IRaCIS.Core.Application.Helper;
using MassTransit;
+using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web;
using static IRaCIS.Core.Domain.Share.StaticData;
@@ -20,6 +22,7 @@ namespace IRaCIS.Core.Application.Service
///
///
///
+ [AllowAnonymous]
[ApiExplorerSettings(GroupName = "Common")]
public class BackDownloadService(IRepository _trialRepository, IOSSService _oSSService, IWebHostEnvironment _hostEnvironment) : BaseService
{
@@ -73,13 +76,23 @@ namespace IRaCIS.Core.Application.Service
}).FirstOrDefault();
+ var count = downloadInfo.VisitList.SelectMany(t => t.NoneDicomStudyList).SelectMany(t => t.FileList).Count();
+
if (downloadInfo != null)
{
var rootFolder = FileStoreHelper.GetDonwnloadImageFolder(_hostEnvironment);
+ // 获取无效字符(系统定义的)
+ string invalidChars = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());
+
+ // 用正则表达式替换所有非法字符为下划线或空字符
+ string pattern = $"[{Regex.Escape(invalidChars)}]";
+
+ var regexNo = Regex.Replace(downloadInfo.ResearchProgramNo, pattern, "_");
+
// 创建一个临时文件夹来存放文件
- string trialFolderPath = Path.Combine(rootFolder, $"{downloadInfo.ResearchProgramNo}_{NewId.NextGuid()}");
+ string trialFolderPath = Path.Combine(rootFolder, $"{regexNo}_{NewId.NextGuid()}");
Directory.CreateDirectory(trialFolderPath);
foreach (var visitItem in downloadInfo.VisitList)
@@ -97,18 +110,6 @@ namespace IRaCIS.Core.Application.Service
Directory.CreateDirectory(siteFolderPath);
}
- //var subjectDicomFolderPath = Path.Combine(siteFolderPath, $"{visitItem.SubjectCode}_{visitItem.VisitName}_DICOM");
- //var subjectNoneDicomFolderPath = Path.Combine(siteFolderPath, $"{visitItem.SubjectCode}_{visitItem.VisitName}_Non-DICOM");
-
- //if (visitItem.NoneDicomStudyList.Count() > 0)
- //{
- // Directory.CreateDirectory(subjectNoneDicomFolderPath);
- //}
- //if (visitItem.StudyList.Count() > 0)
- //{
- // Directory.CreateDirectory(subjectDicomFolderPath);
- //}
-
#endregion
@@ -133,19 +134,21 @@ namespace IRaCIS.Core.Application.Service
}
}
- foreach (var noneDicomStudy in visitItem.NoneDicomStudyList)
+
+ }
+
+ foreach (var noneDicomStudy in visitItem.NoneDicomStudyList)
+ {
+ string studyNoneDicomFolderPath = Path.Combine(siteFolderPath, $"{visitItem.SubjectCode}_{visitItem.VisitName}_Non-DICOM", $"{noneDicomStudy.StudyCode}_{noneDicomStudy.ImageDate.ToString("yyyy-MM-dd")}_{noneDicomStudy.Modality}");
+
+ Directory.CreateDirectory(studyNoneDicomFolderPath);
+
+ foreach (var file in noneDicomStudy.FileList)
{
- string studyNoneDicomFolderPath = Path.Combine(siteFolderPath, $"{visitItem.SubjectCode}_{visitItem.VisitName}_Non-DICOM", $"{noneDicomStudy.StudyCode}_{noneDicomStudy.ImageDate.ToString("yyyy-MM-dd")}_{noneDicomStudy.Modality}");
+ string destinationPath = Path.Combine(studyNoneDicomFolderPath, Path.GetFileName(file.FileName));
- Directory.CreateDirectory(studyNoneDicomFolderPath);
-
- foreach (var file in noneDicomStudy.FileList)
- {
- string destinationPath = Path.Combine(studyNoneDicomFolderPath, Path.GetFileName(file.FileName));
-
- //下载到当前目录
- await _oSSService.DownLoadFromOSSAsync(HttpUtility.UrlDecode(file.Path), destinationPath);
- }
+ //下载到当前目录
+ await _oSSService.DownLoadFromOSSAsync(HttpUtility.UrlDecode(file.Path), destinationPath);
}
}