diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
index c15766519..9cb07801c 100644
--- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
+++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
@@ -904,6 +904,42 @@ namespace IRaCIS.Core.API.Controllers
}
+ ///
+ /// 下载项目临床数据文件
+ ///
+ ///
+ ///
+ ///
+ [AllowAnonymous]
+ [HttpGet("CommonDocument/DownloadTrialClinicalFile")]
+ public async Task DownloadTrialClinicalFile(Guid clinicalDataTrialSetId, [FromServices] IRepository _clinicalDataTrialSetRepository)
+ {
+ var (filePath, fileName) = await FileStoreHelper.GetTrialClinicalPathAsync(_hostEnvironment, _clinicalDataTrialSetRepository, clinicalDataTrialSetId);
+
+ new FileExtensionContentTypeProvider().Mappings.TryGetValue(Path.GetExtension(filePath), out var contentType);
+
+ return File(System.IO.File.OpenRead(filePath), contentType ?? "application/octet-stream", fileName);
+
+ }
+
+
+ ///
+ /// 下载系统临床数据文件
+ ///
+ ///
+ ///
+ ///
+ [AllowAnonymous]
+ [HttpGet("CommonDocument/DownloadSystemClinicalFile")]
+ public async Task DownloadSystemClinicalFile(Guid clinicalDataSystemSetId, [FromServices] IRepository _clinicalDataSystemSetRepository)
+ {
+ var (filePath, fileName) = await FileStoreHelper.GetSystemClinicalPathAsync(_hostEnvironment, _clinicalDataSystemSetRepository, clinicalDataSystemSetId);
+
+ new FileExtensionContentTypeProvider().Mappings.TryGetValue(Path.GetExtension(filePath), out var contentType);
+
+ return File(System.IO.File.OpenRead(filePath), contentType ?? "application/octet-stream", fileName);
+
+ }
///
///上传项目签名文档
diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml
index c3467624c..c22fa9ddf 100644
--- a/IRaCIS.Core.API/IRaCIS.Core.API.xml
+++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml
@@ -272,6 +272,14 @@
通用文件下载
+
+
+ 下载项目临床数据文件
+
+
+
+
+
上传项目签名文档
diff --git a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs
index 055907a1b..22ca09d11 100644
--- a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs
+++ b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs
@@ -59,6 +59,60 @@ public static class FileStoreHelper
return physicalFilePath;
}
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task<(string PhysicalPath, string FileName)> GetSystemClinicalPathAsync(IWebHostEnvironment _hostEnvironment, IRepository _clinicalDataTrialSetRepository, Guid id)
+ {
+ var systemClinicalData = await _clinicalDataTrialSetRepository.FirstOrDefaultAsync(t => t.Id == id);
+
+ if (systemClinicalData == null || systemClinicalData.Path == string.Empty)
+ {
+ throw new BusinessValidationFailedException("数据库没有找到对应的数据模板文件,请联系系统运维人员。");
+ }
+
+ var filePath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, systemClinicalData.Path);
+
+ if (!System.IO.File.Exists(filePath))
+ {
+ throw new BusinessValidationFailedException("数据模板文件存储路径上未找对应文件,请联系系统运维人员。");
+ }
+
+ return (filePath, systemClinicalData.FileName);
+ }
+
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task<(string PhysicalPath, string FileName)> GetTrialClinicalPathAsync(IWebHostEnvironment _hostEnvironment, IRepository _clinicalDataTrialSetRepository, Guid id)
+ {
+ var trialClinicalData = await _clinicalDataTrialSetRepository.FirstOrDefaultAsync(t => t.Id == id);
+
+ if (trialClinicalData == null|| trialClinicalData.Path==string.Empty)
+ {
+ throw new BusinessValidationFailedException("数据库没有找到对应的数据模板文件,请联系系统运维人员。");
+ }
+
+ var filePath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, trialClinicalData.Path);
+
+ if (!System.IO.File.Exists(filePath))
+ {
+ throw new BusinessValidationFailedException("数据模板文件存储路径上未找对应文件,请联系系统运维人员。");
+ }
+
+ return (filePath, trialClinicalData.FileName);
+ }
//通过编码获取通用文档具体物理路径
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 6341ac511..6f454c02d 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -1285,6 +1285,16 @@
上传方式名称
+
+
+ 模板文件名称
+
+
+
+
+ 文件路径
+
+
返回对象
@@ -2078,6 +2088,16 @@
+
+
+
+
+
+
+
+
+
+
写文件导到磁盘
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs
index 0ed375cfb..b1391b727 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs
@@ -432,6 +432,17 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string ClinicalUploadTypeName { get; set; }
+ ///
+ /// 模板文件名称
+ ///
+ public string FileName { get; set; }
+
+ ///
+ /// 文件路径
+ ///
+ public string Path { get; set; }
+
+
}
}
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs
index 20c315267..99cc734cd 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs
@@ -253,6 +253,8 @@ namespace IRaCIS.Application.Services
ClinicalDataLevel = x.ClinicalDataLevel,
ClinicalDataSetName = x.ClinicalDataSetName,
ClinicalUploadType = x.ClinicalUploadType,
+ FileName=x.FileName,
+ Path=x.Path,
Id = x.Id
}).ToListAsync() ;
return clinicalList;
diff --git a/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs b/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs
index ac697437a..9bf93553d 100644
--- a/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs
+++ b/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs
@@ -1,6 +1,7 @@
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Domain.Share;
+using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
@@ -8,12 +9,19 @@ using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using Microsoft.AspNetCore.Hosting;
namespace IRaCIS.Core.Infra.EFCore.Common
{
public static class ReadingCommon
{
-
+
+
+ //public static FileStreamResult GetFileStreamResult(IWebHostEnvironment webHostEnvironment, string path,string FileName)
+ //{
+
+ //}
+
public static bool IsNullOrEmpty(this string value)
{
if (value == null || value == string.Empty)