using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using SqlSugar; using WIDESEA_Core; using WIDESEA_DTO.MES; using WIDESEA_IMesService; using WIDESEA_Model.Models.Mes; namespace WIDESEA_MesService { /// /// MES接口日志服务实现 /// public class MesLogService : IMesLogService { private readonly ISqlSugarClient _db; /// /// 构造函数 /// /// 数据库客户端 public MesLogService(ISqlSugarClient db) { _db = db; } /// /// 记录MES接口调用日志 /// /// 日志DTO /// 是否记录成功 public async Task LogAsync(MesApiLogDto log) { try { var entity = new Dt_MesApiLog { ApiType = log.ApiType, RequestJson = log.RequestJson, ResponseJson = log.ResponseJson, IsSuccess = log.IsSuccess, ErrorMessage = log.ErrorMessage, ElapsedMs = log.ElapsedMs, CreateDate = DateTime.Now, Creator = log.Creator }; var result = await _db.Insertable(entity).ExecuteCommandAsync(); return result > 0; } catch (Exception ex) { // 记录日志失败不影响主流程 Console.WriteLine($"记录MES日志失败: {ex.Message}"); return false; } } /// /// 获取最近的MES接口调用记录 /// /// 接口类型 /// 记录数量 /// 日志列表 public async Task> GetRecentLogsAsync(string apiType, int count = 50) { try { var entities = await _db.Queryable() .Where(x => x.ApiType == apiType) .OrderByDescending(x => x.CreateDate) .Take(count) .ToListAsync(); return entities.Select(e => new MesApiLogDto { ApiType = e.ApiType, RequestJson = e.RequestJson, ResponseJson = e.ResponseJson, IsSuccess = e.IsSuccess, ErrorMessage = e.ErrorMessage, ElapsedMs = e.ElapsedMs, Creator = e.Creator }).ToList(); } catch (Exception ex) { Console.WriteLine($"获取MES日志失败: {ex.Message}"); return new List(); } } } }