using Autofac.Core;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using WIDESEA_Core;
using WIDESEA_Core.BaseController;
using WIDESEA_DTO.MES;
using WIDESEA_IBasicService;
using WIDESEA_Model.Models;
namespace WIDESEA_WMSServer.Controllers.Mes
{
///
/// MES接口日志控制器
///
[Route("api/MesLog")]
[ApiController]
[Authorize]
public class MesLogController : ApiBaseController
{
private readonly IMesLogService _mesLogService;
///
/// 构造函数
///
public MesLogController(IMesLogService mesLogService) : base(mesLogService)
{
_mesLogService = mesLogService;
}
///
/// 分页查询MES日志
///
/// 查询条件
/// 页码,默认1
/// 每页数量,默认20
/// 分页结果
[HttpPost("page")]
public async Task GetPage([FromBody] MesLogQueryDto query, [FromQuery] int page = 1, [FromQuery] int pageSize = 20)
{
var response = new WebResponseContent();
try
{
var (items, total) = await _mesLogService.GetPageAsync(query, page, pageSize);
return response.OK(null, new { rows = items, total = total });
}
catch (Exception ex)
{
return response.Error($"查询失败: {ex.Message}");
}
}
///
/// 获取日志详情
///
/// 日志ID
/// 日志详情
[HttpGet("{id}")]
public async Task GetDetail(long id)
{
var response = new WebResponseContent();
try
{
var detail = await _mesLogService.GetDetailAsync(id);
if (detail == null)
{
return response.Error("日志不存在");
}
return response.OK(null, detail);
}
catch (Exception ex)
{
return response.Error($"查询失败: {ex.Message}");
}
}
///
/// 获取统计数据
///
/// 查询条件(可选)
/// 统计数据
[HttpGet("statistics")]
public async Task GetStatistics([FromQuery] MesLogQueryDto query)
{
var response = new WebResponseContent();
try
{
var statistics = await _mesLogService.GetStatisticsAsync(query ?? new MesLogQueryDto());
return response.OK(null, statistics);
}
catch (Exception ex)
{
return response.Error($"查询失败: {ex.Message}");
}
}
///
/// 导出日志
///
/// 查询条件
/// CSV文件
[HttpPost("export")]
public async Task Export([FromBody] MesLogQueryDto query)
{
try
{
var data = await _mesLogService.ExportAsync(query ?? new MesLogQueryDto());
var fileName = $"MES接口日志_{DateTime.Now:yyyyMMdd_HHmmss}.csv";
return File(data, "text/csv; charset=utf-8", fileName);
}
catch (Exception ex)
{
return BadRequest(new { error = ex.Message });
}
}
}
}