94 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
using AutoMapper;
 | 
						|
 | 
						|
using IRaCIS.Core.Domain.Models;
 | 
						|
 | 
						|
using IRaCIS.Core.Infra.EFCore;
 | 
						|
 | 
						|
using MediatR;
 | 
						|
using Microsoft.AspNetCore.Authorization;
 | 
						|
using Microsoft.AspNetCore.Hosting;
 | 
						|
 | 
						|
using Microsoft.AspNetCore.Mvc;
 | 
						|
using Microsoft.AspNetCore.StaticFiles;
 | 
						|
using System;
 | 
						|
using System.IO;
 | 
						|
using System.Linq;
 | 
						|
using System.Threading.Tasks;
 | 
						|
using IRaCIS.Core.Domain.Share;
 | 
						|
using Microsoft.EntityFrameworkCore;
 | 
						|
 | 
						|
namespace IRaCIS.Core.API.Controllers
 | 
						|
{
 | 
						|
    [ApiExplorerSettings(GroupName = "Trial")]
 | 
						|
    [ApiController]
 | 
						|
    public class DownLoadController : ControllerBase
 | 
						|
    {
 | 
						|
        public IMapper _mapper { get; set; }
 | 
						|
        public IUserInfo _userInfo { get; set; }
 | 
						|
 | 
						|
        private readonly IWebHostEnvironment _hostEnvironment;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
        public DownLoadController(IMapper mapper, IUserInfo userInfo, IMediator mediator, IWebHostEnvironment hostEnvironment)
 | 
						|
        {
 | 
						|
            _hostEnvironment = hostEnvironment;
 | 
						|
            _mapper = mapper;
 | 
						|
            _userInfo = userInfo;
 | 
						|
        }
 | 
						|
 | 
						|
        //[HttpGet("VisitPlan/DownloadInflunceStudyList{trialId:guid}/{createTime:dateTime}")]
 | 
						|
        //public async Task<IActionResult> DownloadInflunceStudyList(Guid trialId, DateTime createTime, [FromServices] IRepository<VisitPlanInfluenceSubjectVisit> _influnceRepository)
 | 
						|
        //{
 | 
						|
        //    var list = _influnceRepository.Where(t => t.TrialId == trialId && t.CreateTime == createTime)
 | 
						|
        //        .ProjectTo<VisitPlanInfluenceSubjectVisitDTO>(_mapper.ConfigurationProvider).ToList();
 | 
						|
 | 
						|
        //    if (list.Count == 0)
 | 
						|
        //    {
 | 
						|
        //        list.Add(new VisitPlanInfluenceSubjectVisitDTO() { CreateTime = DateTime.Now, SubjectCode = "test", StudyTime = DateTime.Now, IsDicomStudy = false, HistoryWindow = "test" });
 | 
						|
        //    }
 | 
						|
 | 
						|
        //    IExporter exporter = new ExcelExporter();
 | 
						|
 | 
						|
        //    var result = await exporter.ExportAsByteArray(list);
 | 
						|
 | 
						|
 | 
						|
        //    return new XlsxFileResult(bytes: bytes);
 | 
						|
 | 
						|
        //    //return File(result, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"检查导出_{DateTime.Now}.xlsx");
 | 
						|
 | 
						|
        //}
 | 
						|
 | 
						|
 | 
						|
        [AllowAnonymous]
 | 
						|
        [HttpGet("CommonDocument/DownloadCommonDoc")]
 | 
						|
        public async Task<IActionResult> DownloadCommonFile(string code, [FromServices] IRepository<CommonDocument> _commonDocumentRepository)
 | 
						|
        {
 | 
						|
            var doc =  await _commonDocumentRepository.AsQueryable(true).FirstOrDefaultAsync(t => t.Code == code);
 | 
						|
 | 
						|
            if (doc == null)
 | 
						|
            {
 | 
						|
                throw new Exception("当前code 没要找到对应的文件");
 | 
						|
            }
 | 
						|
 | 
						|
            var rootPath = Directory.GetParent(_hostEnvironment.ContentRootPath.TrimEnd('\\')).FullName;
 | 
						|
 | 
						|
            var filePath = Path.Combine(rootPath, doc.Path.Trim('/'));
 | 
						|
 | 
						|
            if (!System.IO.File.Exists(filePath))
 | 
						|
            {
 | 
						|
                throw new Exception("服务器本地不存在该路径文件");
 | 
						|
            }
 | 
						|
 | 
						|
            new FileExtensionContentTypeProvider().Mappings.TryGetValue(Path.GetExtension(filePath), out var contentType);
 | 
						|
 | 
						|
 | 
						|
            return File(System.IO.File.OpenRead(filePath), contentType ?? "application/octet-stream", doc.Name);
 | 
						|
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
    }
 | 
						|
}
 |