通用Excel导出

dev
cjy 4 weeks ago
parent e62e730be6
commit df696a4880

@ -157,7 +157,15 @@ public static partial class Extensions
return reval;
}
/// <summary>
///
/// </summary>
/// <param name="thisValue"></param>
/// <returns></returns>
public static dynamic ObjToDynamic(this object thisValue)
{
return thisValue;
}
/// <summary>
///
/// </summary>

@ -52,6 +52,7 @@ public class MultiLanguageMiddleware
|| context.Request.Path.Value.IndexOf("DownloadBookingOrClosingEDI", StringComparison.InvariantCultureIgnoreCase) > -1
|| context.Request.Path.Value.IndexOf("DownloadFile", StringComparison.InvariantCultureIgnoreCase) > -1
|| context.Request.Path.Value.IndexOf("ExportExcelStreamByColumn", StringComparison.InvariantCultureIgnoreCase) > -1
|| context.Request.Path.Value.IndexOf("CommonExcelExport", StringComparison.InvariantCultureIgnoreCase) > -1
)
)
{

@ -27,6 +27,12 @@ using DS.WMS.Core.Flow.Entity;
using DS.WMS.Core;
using MathNet.Numerics;
using NPOI.SS.Formula.Functions;
using DS.Module.UserModule;
using SqlSugar;
using Newtonsoft.Json.Linq;
using DS.Module.Core.Extensions;
using LanguageExt.Common;
using DS.WMS.Core.TaskPlat.Dtos;
namespace DS.WMS.MainApi.Controllers
{
@ -35,15 +41,29 @@ namespace DS.WMS.MainApi.Controllers
/// </summary>
public class ExcelController : ApiController
{
private readonly IServiceProvider _serviceProvider;
private readonly IExcelService _invokeService;
private readonly IUser user;
static readonly ApiFox api;
private readonly ISqlSugarClient db;
/// <summary>
/// 构造函数
/// </summary>
static ExcelController()
{
api = new ApiFox();
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="invokeService"></param>
public ExcelController(IExcelService invokeService)
public ExcelController(IExcelService invokeService, IServiceProvider serviceProvider)
{
_invokeService = invokeService;
_serviceProvider = serviceProvider;
user = _serviceProvider.GetRequiredService<IUser>();
db = _serviceProvider.GetRequiredService<ISqlSugarClient>();
}
/// <summary>
@ -58,48 +78,48 @@ namespace DS.WMS.MainApi.Controllers
return _invokeService.ExportExcelByColumn(req);
}
//[HttpPost]
//[Route("CommonExcelExportAsync")]
//public async Task<IActionResult> CommonExcelExportAsync([FromBody] ExportExcelReq req)
//{
/// <summary>
/// 通用Excel导出
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
[HttpPost]
[Route("CommonExcelExport")]
[ProducesResponseType(typeof(FileResult), StatusCodes.Status200OK)]
public async Task<IActionResult> CommonExcelExportAsync([FromBody] ExportExcelReq req)
{
if (api.DefaultHeaders.Contains("Authorization"))
api.DefaultHeaders.Remove("Authorization");
// if (instance.CallbackURL.IsNullOrEmpty())
// return;
api.DefaultHeaders.Add("Authorization", "Bearer " + user.GetToken());
// //请求参数设置
// var callback = new FlowCallback
// {
// InstanceId = instance.Id,
// BusinessId = instance.BusinessId,
// BusinessType = instance.BusinessType,
// AuditType = instance.AuditType,
// FlowStatus = instance.FlowStatus,
// RejectReason = instance.Note
// };
var result = await api.PostAsync<DataResult>(req.Url, req.QueryRequest);
if (!result.Succeeded)
{
await new ApplicationException($"调用URL{req.Url} 时返回了错误:" + result.Message).LogAsync(db);
}
var data = req.Url.Contains("GetSeaExportList") ?JsonConvert.SerializeObject(result.Data.ObjToDynamic()?.Data.list) : JsonConvert.SerializeObject(result.Data.Data);
// if (api.DefaultHeaders.Contains("Authorization"))
// api.DefaultHeaders.Remove("Authorization");
var res1 = await _invokeService.ExportExcelStreamByColumnAsync(new ExportByColumnReq()
{
JsonDataStr = data,
ColumnSets = req.ColumnSets,
});
// api.DefaultHeaders.Add("Authorization", "Bearer " + User.GetToken());
// try
// {
// var result = await api.PostAsync<DataResult>(instance.CallbackURL, callback);
// if (result.Succeeded)
// {
// //更新回调执行标识
// await Db.Updateable<FlowInstance>().SetColumns(it => it.IsCallbackExecuted == true)
// .Where(it => it.Id == instance.Id).ExecuteCommandAsync();
// }
// else
// {
// await new ApplicationException($"访问回调URL{instance.CallbackURL} 时返回了错误:" + result.Message).LogAsync(Db);
// }
// }
// catch (Exception ex)
// {
// await ex.LogAsync(Db);
// }
var dtstr = DateTime.Now.ToString("yyyyMMddHHmmssfff");
var filename = $"{dtstr}.xlsx";
byte[] bytes = new byte[res1.Length];
res1.ReadExactly(bytes, 0, bytes.Length);
string mimeType = "application/octet-stream";
var _r = new FileContentResult(bytes, mimeType)
{
FileDownloadName = filename
};
return _r;
}
//}
/// <summary>

Loading…
Cancel
Save