Merge branch 'Test.IRC' of http://192.168.3.69:2000/XCKJ/irc-netcore-api into Test.IRC

IRC_NewDev
he 2023-10-24 17:27:36 +08:00
commit c7b32fd29a
9 changed files with 201 additions and 80 deletions

View File

@ -709,6 +709,38 @@ namespace IRaCIS.Core.API.Controllers
#region 医生文件上传下载 #region 医生文件上传下载
#region DTO
public class DoctorDownloadInfo
{
public Guid Id { get; set; }
public string Name { get; set; }
public string ReviewerCode { get; set; }
public List<DownloadFileInfo> FileList { get; set; }
}
public class DownloadFileInfo
{
public string FileName { get; set; }
public string Path { get; set; }
}
public class GetDoctorPathCommand
{
public int Language { get; set; }
public List<Guid> DoctorIdList { get; set; }
}
public class GetDoctoreAttachPathCommand
{
public Guid DoctorId { get; set; }
public List<Guid> AttachmentIdList { get; set; }
}
#endregion
/// <summary>医生文件上传下载</summary> /// <summary>医生文件上传下载</summary>
[ApiExplorerSettings(GroupName = "Common")] [ApiExplorerSettings(GroupName = "Common")]
[ApiController] [ApiController]
@ -723,55 +755,98 @@ namespace IRaCIS.Core.API.Controllers
private readonly IFileService _fileService; private readonly IFileService _fileService;
public FileController(IMapper mapper, IUserInfo userInfo, IWebHostEnvironment hostEnvironment, IFileService fileService) public FileController(IMapper mapper, IUserInfo userInfo, IWebHostEnvironment hostEnvironment, IFileService fileService)
{ {
_fileService = fileService; _fileService = fileService;
_hostEnvironment = hostEnvironment; _hostEnvironment = hostEnvironment;
_mapper = mapper; _mapper = mapper;
_userInfo = userInfo; _userInfo = userInfo;
} }
/// <summary> /// <summary>
/// 上传文件[FileUpload] /// New 医生首页 多选 获取多个医生信息+文件路径列表 医生压缩包名称 doctorCode + "_" + doctorName _(时间戳或者随机的Guid)
/// </summary> /// </summary>
/// <param name="attachmentType">附件类型</param> /// <returns></returns>
/// <param name="doctorId">医生Id</param> [HttpPost, Route("file/GetOfficialResume")]
/// <returns>返回文件信息</returns> public async Task<IResponseOutput<List<DoctorDownloadInfo>>> GetOfficialResume(GetDoctorPathCommand command,
[HttpPost, Route("file/UploadFile/{attachmentType}/{doctorId}")] [FromServices] IRepository<Attachment> _attachmentrepository)
[DisableFormValueModelBinding]
[DisableRequestSizeLimit]
public async Task<IResponseOutput> UploadOrdinaryFile(string attachmentType, Guid doctorId)
{ {
return await SingleFileUploadAsync((fileName) => FileStoreHelper.GetDoctorOrdinaryFilePath(_hostEnvironment, fileName, doctorId, attachmentType)); var list = await _attachmentrepository.Where(t => command.DoctorIdList.Contains(t.DoctorId) && command.Language==t.Language).GroupBy(t => new { Name = t.Doctor.FirstName + "_" + t.Doctor.LastName, ReviewerCode = t.Doctor.ReviewerCode, t.DoctorId })
.Select(g => new DoctorDownloadInfo()
{
Id = g.Key.DoctorId,
Name = g.Key.Name,
ReviewerCode = g.Key.ReviewerCode,
FileList = g.Select(t => new DownloadFileInfo() { FileName = t.FileName, Path = t.Path }).ToList()
}).ToListAsync();
return ResponseOutput.Ok(list);
} }
/// <summary> /// <summary>
/// 上传文件( 不是医生个人的文件)[FileUpload] /// New 项目入组 获取医生简历
/// 例如:阅片章程等
/// </summary> /// </summary>
/// <param name="type">文件类型</param> /// <param name="command"></param>
/// <param name="_doctorService"></param>
/// <param name="_attachmentrepository"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost,Route("file/GetTrialDoctorOfficialResume")]
[HttpPost, Route("file/UploadNonDoctorFile/{type}")] public async Task<IResponseOutput<List<DoctorDownloadInfo>>> GetTrialDoctorOfficialResume(GetDoctorPathCommand command,
[DisableFormValueModelBinding] [FromServices] IDoctorService _doctorService,
[DisableRequestSizeLimit] [FromServices] IRepository<Attachment> _attachmentrepository)
public async Task<IResponseOutput> UploadNonDoctorFile(string type)
{ {
return await SingleFileUploadAsync((fileName) => FileStoreHelper.GetNonDoctorFilePath(_hostEnvironment, fileName, type));
var list = await _attachmentrepository.Where(t => command.DoctorIdList.Contains(t.DoctorId) && command.Language == t.Language && t.IsOfficial && t.Type.Equals("Resume")).GroupBy(t => new { Name = t.Doctor.FirstName + "_" + t.Doctor.LastName, ReviewerCode = t.Doctor.ReviewerCode, t.DoctorId })
.Select(g => new DoctorDownloadInfo()
{
Id = g.Key.DoctorId,
Name = g.Key.Name,
ReviewerCode = g.Key.ReviewerCode,
FileList = g.Select(t => new DownloadFileInfo() { FileName = t.FileName, Path = t.Path }).ToList()
}).ToListAsync();
return ResponseOutput.Ok(list);
} }
/// <summary>
/// new 医生详情 下载指定简历
/// </summary>
/// <param name="command"></param>
/// <param name="_doctorService"></param>
/// <param name="_attachmentrepository"></param>
/// <returns></returns>
[HttpPost, Route("file/GetDoctorAttachment")]
public async Task<IResponseOutput<DoctorDownloadInfo>> GetDoctorAttachment(GetDoctoreAttachPathCommand command,
[FromServices] IDoctorService _doctorService,
[FromServices] IRepository<Attachment> _attachmentrepository)
{
var find = await _attachmentrepository.Where(t => command.DoctorId==t.DoctorId && command.AttachmentIdList.Contains(t.Id)).GroupBy(t => new { Name = t.Doctor.FirstName + "_" + t.Doctor.LastName, ReviewerCode = t.Doctor.ReviewerCode, t.DoctorId })
.Select(g => new DoctorDownloadInfo()
{
Id = g.Key.DoctorId,
Name = g.Key.Name,
ReviewerCode = g.Key.ReviewerCode,
FileList = g.Select(t => new DownloadFileInfo() { FileName = t.FileName, Path = t.Path }).ToList()
}).FirstOrDefaultAsync();
return ResponseOutput.Ok(find);
}
#region 废弃
/// <summary> /// <summary>
/// 下载多个医生的所有附件 /// 下载多个医生的所有附件
/// </summary> /// </summary>
/// <param name="doctorIds"></param> /// <param name="doctorIds"></param>
/// <returns></returns> /// <returns></returns>
[Obsolete]
[HttpPost, Route("file/downloadDoctorAttachments")] [HttpPost, Route("file/downloadDoctorAttachments")]
public async Task<IResponseOutput<UploadFileInfoDTO>> DownloadAttachment(Guid[] doctorIds) public async Task<IResponseOutput<UploadFileInfoDTO>> DownloadAttachment(Guid[] doctorIds)
{ {
@ -786,24 +861,6 @@ namespace IRaCIS.Core.API.Controllers
}); });
} }
/// <summary>
/// 下载医生官方简历
/// </summary>
/// <param name="language"></param>
/// <param name="doctorIds"></param>
/// <returns></returns>
[HttpPost, Route("file/downloadOfficialCV/{language}")]
public async Task<IResponseOutput<UploadFileInfoDTO>> DownloadOfficialResume(int language, Guid[] doctorIds)
{
var path = await _fileService.CreateDoctorsAllAttachmentZip(doctorIds);
return ResponseOutput.Ok(new UploadFileInfoDTO
{
FilePath = await _fileService.CreateOfficialResumeZip(language, doctorIds),
FullFilePath = path + "?access_token=" + HttpContext.Request.Headers["Authorization"].ToString().Substring(7)
});
}
/// <summary> /// <summary>
/// 下载指定医生的指定附件 /// 下载指定医生的指定附件
/// </summary> /// </summary>
@ -811,6 +868,7 @@ namespace IRaCIS.Core.API.Controllers
/// <param name="attachmentIds">要下载的附件Id</param> /// <param name="attachmentIds">要下载的附件Id</param>
/// <returns></returns> /// <returns></returns>
[HttpPost, Route("file/downloadByAttachmentId/{doctorId}")] [HttpPost, Route("file/downloadByAttachmentId/{doctorId}")]
[Obsolete]
public async Task<IResponseOutput<UploadFileInfoDTO>> DownloadAttachmentById(Guid doctorId, Guid[] attachmentIds) public async Task<IResponseOutput<UploadFileInfoDTO>> DownloadAttachmentById(Guid doctorId, Guid[] attachmentIds)
{ {
var path = await _fileService.CreateZipPackageByAttachment(doctorId, attachmentIds); var path = await _fileService.CreateZipPackageByAttachment(doctorId, attachmentIds);
@ -822,15 +880,47 @@ namespace IRaCIS.Core.API.Controllers
} }
/// <summary>
/// 下载医生官方简历 首页 区分 中文和英文
/// </summary>
/// <param name="language"></param>
/// <param name="doctorIds"></param>
/// <returns></returns>
[HttpPost, Route("file/downloadOfficialCV/{language}")]
[Obsolete]
public async Task<IResponseOutput<UploadFileInfoDTO>> DownloadOfficialResume(int language, Guid[] doctorIds)
{
var path = await _fileService.CreateDoctorsAllAttachmentZip(doctorIds);
return ResponseOutput.Ok(new UploadFileInfoDTO
{
FilePath = await _fileService.CreateOfficialResumeZip(language, doctorIds),
FullFilePath = path + "?access_token=" + HttpContext.Request.Headers["Authorization"].ToString().Substring(7)
});
}
/// <summary>
/// 入组 项目下载简历
/// </summary>
/// <param name="language"></param>
/// <param name="trialId"></param>
/// <param name="doctorIdArray"></param>
/// <returns></returns>
[HttpPost, Route("enroll/downloadResume/{trialId:guid}/{language}")] [HttpPost, Route("enroll/downloadResume/{trialId:guid}/{language}")]
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
[AllowAnonymous] [AllowAnonymous]
[Obsolete]
public async Task<IResponseOutput<string>> DownloadResume(int language, Guid trialId, Guid[] doctorIdArray) public async Task<IResponseOutput<string>> DownloadResume(int language, Guid trialId, Guid[] doctorIdArray)
{ {
var zipPath = await _fileService.CreateOfficialResumeZip(language, doctorIdArray); var zipPath = await _fileService.CreateOfficialResumeZip(language, doctorIdArray);
return ResponseOutput.Ok(zipPath); return ResponseOutput.Ok(zipPath);
} }
#endregion
} }
#endregion #endregion

View File

@ -285,20 +285,19 @@
<member name="T:IRaCIS.Core.API.Controllers.FileController"> <member name="T:IRaCIS.Core.API.Controllers.FileController">
<summary>医生文件上传下载</summary> <summary>医生文件上传下载</summary>
</member> </member>
<member name="M:IRaCIS.Core.API.Controllers.FileController.UploadOrdinaryFile(System.String,System.Guid)"> <member name="M:IRaCIS.Core.API.Controllers.FileController.GetOfficialResume(IRaCIS.Core.API.Controllers.GetDoctorPathCommand,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Attachment})">
<summary> <summary>
上传文件[FileUpload] New 医生首页 多选 获取多个医生信息+文件路径列表 医生压缩包名称 doctorCode + "_" + doctorName _(时间戳或者随机的Guid)
</summary> </summary>
<param name="attachmentType">附件类型</param> <returns></returns>
<param name="doctorId">医生Id</param>
<returns>返回文件信息</returns>
</member> </member>
<member name="M:IRaCIS.Core.API.Controllers.FileController.UploadNonDoctorFile(System.String)"> <member name="M:IRaCIS.Core.API.Controllers.FileController.GetTrialDoctorOfficialResume(IRaCIS.Core.API.Controllers.GetDoctorPathCommand,IRaCIS.Application.Interfaces.IDoctorService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Attachment})">
<summary> <summary>
上传文件( 不是医生个人的文件)[FileUpload] New 项目入组 获取医生简历
例如:阅片章程等
</summary> </summary>
<param name="type">文件类型</param> <param name="command"></param>
<param name="_doctorService"></param>
<param name="_attachmentrepository"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.API.Controllers.FileController.DownloadAttachment(System.Guid[])"> <member name="M:IRaCIS.Core.API.Controllers.FileController.DownloadAttachment(System.Guid[])">
@ -308,14 +307,6 @@
<param name="doctorIds"></param> <param name="doctorIds"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.API.Controllers.FileController.DownloadOfficialResume(System.Int32,System.Guid[])">
<summary>
下载医生官方简历
</summary>
<param name="language"></param>
<param name="doctorIds"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.API.Controllers.FileController.DownloadAttachmentById(System.Guid,System.Guid[])"> <member name="M:IRaCIS.Core.API.Controllers.FileController.DownloadAttachmentById(System.Guid,System.Guid[])">
<summary> <summary>
下载指定医生的指定附件 下载指定医生的指定附件
@ -324,6 +315,26 @@
<param name="attachmentIds">要下载的附件Id</param> <param name="attachmentIds">要下载的附件Id</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.API.Controllers.FileController.DownloadOfficialResume(System.Int32,System.Guid[])">
<summary>
下载医生官方简历 首页 区分 中文和英文
</summary>
<param name="language"></param>
<param name="doctorIds"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.API.Controllers.FileController.DownloadResume(System.Int32,System.Guid,System.Guid[])">
<summary>
入组 项目下载简历
</summary>
<param name="language"></param>
<param name="trialId"></param>
<param name="doctorIdArray"></param>
<returns></returns>
</member>
<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.UploadCommonDoc"> <member name="M:IRaCIS.Core.API.Controllers.UploadDownLoadController.UploadCommonDoc">
<summary> <summary>
上传通用文档 比如一致性核查的 比如导出的excel 模板 上传通用文档 比如一致性核查的 比如导出的excel 模板

View File

@ -51,17 +51,19 @@ namespace IRaCIS.Core.Application.Helper
{ {
var ossOptions = options.CurrentValue; var ossOptions = options.CurrentValue;
_OSSConfig = new AliyunOssOptions() _OSSConfig= ossOptions;
{
RegionId = ossOptions.RegionId, //_OSSConfig = new AliyunOssOptions()
AccessKeyId = ossOptions.AccessKeyId, //{
AccessKeySecret = ossOptions.AccessKeySecret, // RegionId = ossOptions.RegionId,
EndPoint = ossOptions.EndPoint, // AccessKeyId = ossOptions.AccessKeyId,
BucketName = ossOptions.BucketName, // AccessKeySecret = ossOptions.AccessKeySecret,
RoleArn = ossOptions.RoleArn, // EndPoint = ossOptions.EndPoint,
Region = ossOptions.Region, // BucketName = ossOptions.BucketName,
ViewEndpoint = ossOptions.ViewEndpoint // RoleArn = ossOptions.RoleArn,
}; // Region = ossOptions.Region,
// ViewEndpoint = ossOptions.ViewEndpoint
//};
_ossClient = new OssClient(_OSSConfig.EndPoint, _OSSConfig.AccessKeyId, _OSSConfig.AccessKeySecret); _ossClient = new OssClient(_OSSConfig.EndPoint, _OSSConfig.AccessKeyId, _OSSConfig.AccessKeySecret);

View File

@ -1954,6 +1954,13 @@
<param name="inDto"></param> <param name="inDto"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.GetEvidenceFocalFDG(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
骨髓中是否存在局灶性 FDG亲和病灶的证据
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.GetLiverAssessment(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)"> <member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.GetLiverAssessment(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary> <summary>
获取肝脏评估 获取肝脏评估

View File

@ -98,6 +98,7 @@ namespace IRaCIS.Application.Services
/// <returns></returns> /// <returns></returns>
public async Task<string> CreateDoctorsAllAttachmentZip(Guid[] doctorIds) public async Task<string> CreateDoctorsAllAttachmentZip(Guid[] doctorIds)
{ {
#region 老版本 存储在服务器
//准备下载文件的临时路径 //准备下载文件的临时路径
var guidStr = Guid.NewGuid().ToString(); var guidStr = Guid.NewGuid().ToString();
//string uploadFolderPath = HostingEnvironment.MapPath("/UploadFile/"); //string uploadFolderPath = HostingEnvironment.MapPath("/UploadFile/");
@ -134,6 +135,8 @@ namespace IRaCIS.Application.Services
string targetPath = Path.Combine(uploadFolderPath, target + ".zip"); string targetPath = Path.Combine(uploadFolderPath, target + ".zip");
ZipHelper.CreateZip(tempSavePath, targetPath); ZipHelper.CreateZip(tempSavePath, targetPath);
return Path.Combine("/IRaCISData/UploadFile/", target + ".zip"); return Path.Combine("/IRaCISData/UploadFile/", target + ".zip");
#endregion
} }

View File

@ -52,6 +52,8 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TrialUser, TrialDocumentUserConfirmView>(); CreateMap<TrialUser, TrialDocumentUserConfirmView>();
CreateMap<BatchAddTrialEmailNoticeConfig, TrialEmailNoticeConfig>();

View File

@ -119,6 +119,8 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject.DTO
public class InstancePathDTO public class InstancePathDTO
{ {
public string StudyInstanceUid { get; set; }
public string SopInstanceUid { get; set; }
public string StudyCode { get; set; } public string StudyCode { get; set; }
public string InstancePath { get; set; } public string InstancePath { get; set; }
} }

View File

@ -194,7 +194,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject
[HttpPost] [HttpPost]
public async Task<List<InstancePathDTO>> GetStudyModalityOSSPath(List<Guid> seriesIdList, [FromServices] IRepository<DicomSeries> _dicomSeriesRepository) public async Task<List<InstancePathDTO>> GetStudyModalityOSSPath(List<Guid> seriesIdList, [FromServices] IRepository<DicomSeries> _dicomSeriesRepository)
{ {
return await _dicomSeriesRepository.Where(t => seriesIdList.Contains(t.Id)).SelectMany(t => t.DicomInstanceList).Select(t => new InstancePathDTO() {InstancePath= t.Path,StudyCode=t.DicomStudy.StudyCode } ).ToListAsync(); return await _dicomSeriesRepository.Where(t => seriesIdList.Contains(t.Id)).SelectMany(t => t.DicomInstanceList).Select(t => new InstancePathDTO() {InstancePath= t.Path,StudyCode=t.DicomStudy.StudyCode , SopInstanceUid = t.SopInstanceUid, StudyInstanceUid = t.StudyInstanceUid} ).ToListAsync();
} }

View File

@ -16,7 +16,11 @@ namespace IRaCIS.Core.Domain.Models
[Table("Attachment")] [Table("Attachment")]
public partial class Attachment : Entity, IAuditAdd public partial class Attachment : Entity, IAuditAdd
{ {
public Guid? DoctorId { get; set; }
[JsonIgnore]
public Doctor Doctor { get; set; }
public Guid DoctorId { get; set; }
public string Type { get; set; } public string Type { get; set; }
public bool IsOfficial { get; set; } = false; public bool IsOfficial { get; set; } = false;
public string Path { get; set; } = string.Empty; public string Path { get; set; } = string.Empty;