218 lines
7.3 KiB
C#
218 lines
7.3 KiB
C#
|
|
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
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 日 期: 2024-06-18
|
|||
|
|
/// 描 述: excel导入接口
|
|||
|
|
/// </summary>
|
|||
|
|
[Route("api/[controller]/[action]")]
|
|||
|
|
[ApiController]
|
|||
|
|
public class ImportController : ControllerBase
|
|||
|
|
{
|
|||
|
|
private readonly ImportApp _app;
|
|||
|
|
public ImportController(ImportApp app)
|
|||
|
|
{
|
|||
|
|
_app = app;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取导入的分页数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="keyWord">查询关键字</param>
|
|||
|
|
/// <param name="moduleId">菜单id</param>
|
|||
|
|
/// <param name="page"></param>
|
|||
|
|
/// <param name="limit"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpGet]
|
|||
|
|
public async Task<Response<PageInfo<List<ExcelImport>>>> LoadExcelImportPage(string keyWord, string moduleId, int page, int limit)
|
|||
|
|
{
|
|||
|
|
return await _app.LoadExcelImportPage(keyWord, moduleId, page, limit);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取表单数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="id">主键</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpGet]
|
|||
|
|
public async Task<Response<ExcelImportDto>> GetForms(string id)
|
|||
|
|
{
|
|||
|
|
var result = new Response<ExcelImportDto>();
|
|||
|
|
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;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取导入配置列表根据模块ID
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="moduleId">功能模块主键</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpGet]
|
|||
|
|
public async Task<Response<List<ExcelImport>>> GetModuleList(string moduleId)
|
|||
|
|
{
|
|||
|
|
var result = new Response<List<ExcelImport>>();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
result.Result = await _app.GetModuleList(moduleId);
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
result.Code = 500;
|
|||
|
|
result.Message = ex.Message;
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 删除数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="id">主键</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost]
|
|||
|
|
public async Task<Response<bool>> Delete(string id)
|
|||
|
|
{
|
|||
|
|
var result = new Response<bool>();
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
result = await _app.DeleteEntity(id);
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
result.Code = 500;
|
|||
|
|
result.Message = ex.InnerException?.Message ?? ex.Message;
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 新增
|
|||
|
|
/// </summary>
|
|||
|
|
///<param name="dto">数据</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost]
|
|||
|
|
public async Task<Response<bool>> AddExcelImport(ExcelImportDto dto)
|
|||
|
|
{
|
|||
|
|
var result = new Response<bool>();
|
|||
|
|
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;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 更新数据
|
|||
|
|
/// </summary>
|
|||
|
|
///<param name="dto">数据</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost]
|
|||
|
|
public async Task<Response<bool>> UpdateExcelImport(string id, ExcelImportDto dto)
|
|||
|
|
{
|
|||
|
|
var result = new Response<bool>();
|
|||
|
|
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 扩展方法
|
|||
|
|
///// <summary>
|
|||
|
|
///// 下载文件
|
|||
|
|
///// </summary>
|
|||
|
|
///// <param name="keyValue">文件id</param>
|
|||
|
|
///// <returns></returns>
|
|||
|
|
//[HttpGet]
|
|||
|
|
//public async Task<FileStreamResult> 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<ColumnModel>();
|
|||
|
|
// //表头
|
|||
|
|
// 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);
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
///// <summary>
|
|||
|
|
///// excel文件导入(通用)
|
|||
|
|
///// </summary>
|
|||
|
|
///// <param name="templateId">模板Id</param>
|
|||
|
|
///// <param name="fileId">文件主键</param>
|
|||
|
|
///// <param name="chunks">分片数</param>
|
|||
|
|
///// <param name="ext">文件扩展名</param>
|
|||
|
|
///// <returns></returns>
|
|||
|
|
//[HttpPost]
|
|||
|
|
//public async Task<Response<bool>> ExecuteImportExcel(string templateId, string path)
|
|||
|
|
//{
|
|||
|
|
// var result = new Response<bool>();
|
|||
|
|
// 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
|
|||
|
|
}
|
|||
|
|
}
|