using DocumentFormat.OpenXml.Office2010.Excel; using Infrastructure; using Infrastructure.Helpers; using Infrastructure.Helpers.Excel; using Infrastructure.Helpers.Excel.Model; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using OpenAuth.App.CodeTable; using OpenAuth.App.CodeTable.Response; using OpenAuth.App.Import; using OpenAuth.App.Import.Response; using OpenAuth.Repository.Domain; using System.Data; using System.Linq; namespace OpenAuth.WebApi.Controllers { /// /// 日 期: 2024-06-18 /// 描 述: excel导入接口 /// [Route("api/[controller]/[action]")] [ApiController] public class ImportController : ControllerBase { private readonly ImportApp _app; public ImportController(ImportApp app) { _app = app; } /// /// 获取导入的分页数据 /// /// 查询关键字 /// 菜单id /// /// /// [HttpGet] public async Task>>> LoadExcelImportPage(string keyWord, string moduleId, int page, int limit) { return await _app.LoadExcelImportPage(keyWord, moduleId, page, limit); } /// /// 获取表单数据 /// /// 主键 /// [HttpGet] public async Task> GetForms(string id) { var result = new Response(); try { result.Result = new ExcelImportDto(); result.Result.Entity = await _app.GetEntity(id); result.Result.List = await _app.GetFieldList(id); } catch (Exception ex) { result.Code = 500; result.Message = ex.Message; } return result; } /// /// 获取导入配置列表根据模块ID /// /// 功能模块主键 /// [HttpGet] public async Task>> GetModuleList(string moduleId) { var result = new Response>(); try { result.Result = await _app.GetModuleList(moduleId); } catch (Exception ex) { result.Code = 500; result.Message = ex.Message; } return result; } /// /// 删除数据 /// /// 主键 /// [HttpPost] public async Task> Delete(string id) { var result = new Response(); try { result = await _app.DeleteEntity(id); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 新增 /// ///数据 /// [HttpPost] public async Task> AddExcelImport(ExcelImportDto dto) { var result = new Response(); try { result = await _app.SaveEntity(string.Empty, dto.Entity, dto.List); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 更新数据 /// ///数据 /// [HttpPost] public async Task> UpdateExcelImport(string id, ExcelImportDto dto) { var result = new Response(); try { result = await _app.SaveEntity(id, dto.Entity, dto.List); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } #region 扩展方法 /// /// 下载文件 /// /// 文件id /// [HttpGet] public async Task DownSchemeFile(string id) { var templateInfo = await _app.GetEntity(id); var fileds = await _app.GetFieldList(id); //设置导出格式 ExcelConfig excelconfig = new ExcelConfig(); excelconfig.FileName = templateInfo.Name + ".xls"; excelconfig.IsAllSizeColumn = true; excelconfig.ColumnEntity = new List(); //表头 DataTable dt = new DataTable(); foreach (var col in fileds) { if (col.RelationType != 1 && col.RelationType != 4 && col.RelationType != 5 && col.RelationType != 6 && col.RelationType != 7) { excelconfig.ColumnEntity.Add(new ColumnModel() { Column = col.Name, ExcelColumn = col.ColName, Alignment = "center", }); dt.Columns.Add(col.Name, typeof(string)); } } return File(ExcelHelper.ExportMemoryStream(dt, excelconfig), "application/ms-excel", excelconfig.FileName); } /// /// excel文件导入(通用) /// /// 模板Id /// 文件主键 /// 分片数 /// 文件扩展名 /// [HttpPost] public async Task> ExecuteImportExcel(string templateId, string path) { var result = new Response(); try { // 获取excel文件数据(暂时只支持但sheet导入,后续升级) DataTable dt = ExcelHelper.ExcelImport(path); var res2 = await _app.ImportTable(templateId, dt); var data = new { Success = res2.snum, Fail = res2.fnum, data = res2.elist }; result.Result = true; return result; } catch (Exception ex) { } { result.Result = false; result.Message = "导入数据失败!"; return result; } } #endregion } }