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
|
||
}
|
||
}
|