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