diff --git a/IRaCIS.Core.Application/BaseService.cs b/IRaCIS.Core.Application/BaseService.cs index f33beae8d..7864328ab 100644 --- a/IRaCIS.Core.Application/BaseService.cs +++ b/IRaCIS.Core.Application/BaseService.cs @@ -2,6 +2,7 @@ using IRaCIS.Application.Services.BusinessFilter; using IRaCIS.Core.Infra.EFCore; using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Localization; using Panda.DynamicWebApi; using Panda.DynamicWebApi.Attributes; @@ -26,7 +27,9 @@ namespace IRaCIS.Core.Application public IStringLocalizer _localizer { get; set; } - + public IWebHostEnvironment _hostEnvironment { get; set; } + + public static IResponseOutput Null404NotFound(TEntity? businessObject) where TEntity : class @@ -51,6 +54,9 @@ namespace IRaCIS.Core.Application [MemberNotNull(nameof(_localizer))] public IStringLocalizer _localizer { get; set; } + [MemberNotNull(nameof(_hostEnvironment))] + public IWebHostEnvironment _hostEnvironment { get; set; } + } #endregion diff --git a/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs b/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs index 413864f57..0fb215f5f 100644 --- a/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs +++ b/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs @@ -63,6 +63,9 @@ namespace IRaCIS.Application.Contracts public string Value { get; set; } = string.Empty; public string Code { get; set; } = string.Empty; + + public string ChildGroup { get; set; } = string.Empty; + public int ShowOrder { get; set; } public Guid? ParentId { get; set; } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs index 7e6744563..96cc180c2 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs @@ -1,6 +1,7 @@ using System.ComponentModel.DataAnnotations; using IRaCIS.Core.Infrastructure.Extention; using IRaCIS.Core.Domain.Share; +using Magicodes.ExporterAndImporter.Core; namespace IRaCIS.Application.Contracts { @@ -36,8 +37,11 @@ namespace IRaCIS.Application.Contracts public class TrialMaintenanceDTO : UserTrialCommand { + [ValueMapping(text: "退出", true)] + [ValueMapping(text: "加入", false)] public bool IsDeleted { get; set; } + [ExporterHeader(Format = "yyyy-mm-dd hh:mm:ss")] public DateTime? DeletedTime { get; set; } public DateTime? RemoveTime { get; set; } @@ -45,6 +49,9 @@ namespace IRaCIS.Application.Contracts public DateTime? JoinTime { get; set; } public DateTime CreateTime { get; set; } + public string Phone { get; set; } = String.Empty; + + public string EMail { get; set; } = string.Empty; public DateTime UpdateTime { get; set; } = DateTime.Now; @@ -65,6 +72,7 @@ namespace IRaCIS.Application.Contracts public class TrialUserExportDTO { + public DateTime CurrentTime { get; set; } = DateTime.Now; public TrialSelectDTO TrialInfo { get; set; } public List TrialUserList { get; set; } = new List(); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs index ef2b538d3..a536c5a18 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs @@ -8,6 +8,7 @@ using IRaCIS.Application.Interfaces; using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Excel; using Magicodes.ExporterAndImporter.Excel.AspNetCore; +using Microsoft.AspNetCore.Hosting; namespace IRaCIS.Application.Services { @@ -46,44 +47,48 @@ namespace IRaCIS.Application.Services } - //[HttpGet] - //public async Task TrialUserListExport(Guid trialId) - //{ + [HttpGet] + public async Task TrialUserListExport(Guid trialId, [FromServices] IRepository _commonDocumentRepository) + { - // var exportInfo = new TrialUserExportDTO() - // { - // TrialInfo = await _trialRepository.ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync(), - // TrialUserList = await _trialUseRepository.Where(t => t.TrialId == trialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).ToListAsync() - // }; + var doc = _commonDocumentRepository.AsQueryable(true).FirstOrDefault(t => t.Code == "Test"); - // IExporter exporter = new ExcelExporter(); + if (doc == null) + { + throw new Exception("当前code 没要找到对应的文件"); + } - // ////模板路径 - // //var tplPath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "ExportTemplates", - // // "2020年春季教材订购明细样表.xlsx"); - // ////创建Excel导出对象 - // //IExportFileByTemplate exporter = new ExcelExporter(); - // ////导出路径 - // //var filePath = Path.Combine(Directory.GetCurrentDirectory(), nameof(ExportByTemplate_Test) + ".xlsx"); - // //if (File.Exists(filePath)) File.Delete(filePath); - // ////根据模板导出 - // //await exporter.ExportByTemplate(filePath, - // // new TextbookOrderInfo("湖南心莱信息科技有限公司", "湖南长沙岳麓区", "雪雁", "1367197xxxx", "雪雁", DateTime.Now.ToLongDateString(), - // // new List() - // // { - // // new BookInfo(1, "0000000001", "《XX从入门到放弃》", "张三", "机械工业出版社", "3.14", 100, "备注"), - // // new BookInfo(2, "0000000002", "《XX从入门到放弃》", "张三", "机械工业出版社", "3.14", 100, "备注"), - // // new BookInfo(3, "0000000003", "《XX从入门到放弃》", "张三", "机械工业出版社", "3.14", 100, "备注") - // // }), - // // tplPath); + var rootPath = Directory.GetParent(_hostEnvironment.ContentRootPath.TrimEnd('\\')).FullName; - // //var result = await exporter.ExportAsByteArray(list); + var filePath = Path.Combine(rootPath, doc.Path.Trim('/')); + + if (!System.IO.File.Exists(filePath)) + { + throw new Exception("服务器本地不存在该路径文件"); + } - // return new XlsxFileResult(bytes: result, fileDownloadName: $"检查导出_{DateTime.Now.ToString("yyyy-MM-dd:hh:mm:ss")}.xlsx"); + var exportInfo = new TrialUserExportDTO() + { + TrialInfo = await _trialRepository.ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync(), + TrialUserList = await _trialUseRepository.Where(t => t.TrialId == trialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).ToListAsync() + }; - //} + //模板路径 + var tplPath = filePath; + //创建Excel导出对象 + IExportFileByTemplate exporter = new ExcelExporter(); + + //根据模板导出 + var result = await exporter.ExportBytesByTemplate(exportInfo, tplPath); + + + + return new XlsxFileResult(bytes: result, fileDownloadName: $"{doc.Name}_{DateTime.Now.ToString("yyyy-MM-dd:hh:mm:ss")}.xlsx"); + + + }