修改一版

Uat_Study
he 2022-06-28 13:45:22 +08:00
parent bee6c8a7c5
commit c801f24726
7 changed files with 140 additions and 1 deletions

View File

@ -904,6 +904,42 @@ namespace IRaCIS.Core.API.Controllers
}
/// <summary>
/// 下载项目临床数据文件
/// </summary>
/// <param name="clinicalDataTrialSetId"></param>
/// <param name="_clinicalDataTrialSetRepository"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpGet("CommonDocument/DownloadTrialClinicalFile")]
public async Task<IActionResult> DownloadTrialClinicalFile(Guid clinicalDataTrialSetId, [FromServices] IRepository<ClinicalDataTrialSet> _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);
}
/// <summary>
/// 下载系统临床数据文件
/// </summary>
/// <param name="clinicalDataSystemSetId"></param>
/// <param name="_clinicalDataSystemSetRepository"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpGet("CommonDocument/DownloadSystemClinicalFile")]
public async Task<IActionResult> DownloadSystemClinicalFile(Guid clinicalDataSystemSetId, [FromServices] IRepository<ClinicalDataSystemSet> _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);
}
/// <summary>
///上传项目签名文档

View File

@ -272,6 +272,14 @@
<member name="M:IRaCIS.Core.API.Controllers.UploadDownLoadController.DownloadCommonFile(System.String,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument})">
<summary> 通用文件下载 </summary>
</member>
<member name="M:IRaCIS.Core.API.Controllers.UploadDownLoadController.DownloadTrialClinicalFile(System.Guid,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ClinicalDataTrialSet})">
<summary>
下载项目临床数据文件
</summary>
<param name="Id"></param>
<param name="_clinicalDataTrialSetRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.API.Controllers.UploadDownLoadController.UploadTrialDoc(System.Guid)">
<summary>
上传项目签名文档

View File

@ -59,6 +59,60 @@ public static class FileStoreHelper
return physicalFilePath;
}
/// <summary>
///
/// </summary>
/// <param name="_hostEnvironment"></param>
/// <param name="_clinicalDataTrialSetRepository"></param>
/// <param name="id"></param>
/// <returns></returns>
/// <exception cref="BusinessValidationFailedException"></exception>
public static async Task<(string PhysicalPath, string FileName)> GetSystemClinicalPathAsync(IWebHostEnvironment _hostEnvironment, IRepository<ClinicalDataSystemSet> _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);
}
/// <summary>
///
/// </summary>
/// <param name="_hostEnvironment"></param>
/// <param name="_clinicalDataTrialSetRepository"></param>
/// <param name="id"></param>
/// <returns></returns>
/// <exception cref="BusinessValidationFailedException"></exception>
public static async Task<(string PhysicalPath, string FileName)> GetTrialClinicalPathAsync(IWebHostEnvironment _hostEnvironment, IRepository<ClinicalDataTrialSet> _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);
}
//通过编码获取通用文档具体物理路径

View File

@ -1285,6 +1285,16 @@
上传方式名称
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetTrialClinicalDataSelectOutDto.FileName">
<summary>
模板文件名称
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetTrialClinicalDataSelectOutDto.Path">
<summary>
文件路径
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Service.Reading.Dto.GetTrialConfirmCriterionListOutDto">
<summary>
返回对象
@ -2078,6 +2088,16 @@
<param name="trialExternalUserId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Helper.FileStoreHelper.GetTrialClinicalPathAsync(Microsoft.AspNetCore.Hosting.IWebHostEnvironment,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ClinicalDataTrialSet},System.Guid)">
<summary>
</summary>
<param name="_hostEnvironment"></param>
<param name="_commonDocumentRepository"></param>
<param name="code"></param>
<returns></returns>
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
</member>
<member name="M:IRaCIS.Core.Application.Helper.FileStoreHelper.WriteFileAsync(System.IO.Stream,System.String)">
<summary>
写文件导到磁盘

View File

@ -432,6 +432,17 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string ClinicalUploadTypeName { get; set; }
/// <summary>
/// 模板文件名称
/// </summary>
public string FileName { get; set; }
/// <summary>
/// 文件路径
/// </summary>
public string Path { get; set; }
}
}

View File

@ -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;

View File

@ -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)