using System.Dynamic; using MES.Service.Dto.webApi; using MES.Service.Modes; using MES.Service.service; using MES.Service.service.BasicData; using MES.Service.util; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; namespace MESApplication.Controllers.BasicData; [ApiController] [Route("api/[controller]")] public class MesCgthSqController : ControllerBase { private readonly MessageCenterManager _messageCenterManager = new(); private readonly MesCgthSqManager _mesCgthSqManager = new(); private readonly string _method = "POST"; private readonly string _tableName = "MES_CGTH_SQ"; private readonly string _baseUrl = "http://localhost:10054/api/MesCgthSq/"; /// /// 保存采购退货申请单 /// [HttpPost("Save")] public ResponseResult Save(ErpCgth erpCgth) { // 初始化消息中心实体(用于记录接口调用日志) var messageEntity = new MessageCenter { TableName = _tableName, Url = _baseUrl + "Save", Method = _method, Data = JsonConvert.SerializeObject(erpCgth), Status = 1, // 状态:1 - 待处理 CreateBy = "SYSTEM", // 创建人标识 Route = erpCgth.ErpCgtha.billNo // 路由标识(使用单据编号) }; try { dynamic resultData = new ExpandoObject(); // 调用业务层保存方法(将 ERP 传入的 DTO 转换为实体并保存) var saveSuccess = _mesCgthSqManager.Save(erpCgth); resultData.saveResult = saveSuccess; // 更新消息中心状态(保存成功) messageEntity.Result = 1; // 结果:1 - 成功 messageEntity.DealWith = 1; // 处理状态:1 - 已处理 _messageCenterManager.save(messageEntity); return new ResponseResult { status = 0, message = "保存成功", data = resultData }; } catch (Exception ex) { // 异常处理:记录错误信息 messageEntity.Result = 0; // 结果:0 - 失败 messageEntity.DealWith = 0; // 处理状态:0 - 未处理 messageEntity.ResultData = ex.Message; // 错误详情 _messageCenterManager.save(messageEntity); return ResponseResult.ResponseError(ex); } } /// /// 批量保存采购退货申请单 /// [HttpPost("SaveList")] public ResponseResult SaveList(List erpCgthaList) { var messageEntity = new MessageCenter { TableName = _tableName, Url = _baseUrl + "SaveList", Method = _method, Data = JsonConvert.SerializeObject(erpCgthaList), Status = 1, CreateBy = "SYSTEM" }; try { dynamic resultData = new ExpandoObject(); var saveSuccess = _mesCgthSqManager.SaveList(erpCgthaList); resultData.totalCount = erpCgthaList.Count; resultData.successCount = saveSuccess ? erpCgthaList.Count : 0; messageEntity.Result = saveSuccess ? 1 : 0; messageEntity.DealWith = 1; _messageCenterManager.save(messageEntity); return new ResponseResult { status = 0, message = $"批量保存完成,共 {erpCgthaList.Count} 条数据", data = resultData }; } catch (Exception ex) { messageEntity.Result = 0; messageEntity.DealWith = 0; messageEntity.ResultData = ex.Message; _messageCenterManager.save(messageEntity); return ResponseResult.ResponseError(ex); } } /// /// 获取采购退货申请单列表 /// [HttpGet("GetList")] public ResponseResult GetList() { try { var cgthList = _mesCgthSqManager.GetList(); return new ResponseResult { status = 0, message = "查询成功", data = new { total = cgthList.Count, list = cgthList } }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 根据 ID 获取采购退货申请单详情 /// [HttpGet("GetById")] public ResponseResult GetById(string id) { try { var cgthEntity = _mesCgthSqManager.GetById(Guid.Parse(id)); return new ResponseResult { status = 0, message = "查询成功", data = cgthEntity }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 新增采购退货申请单(直接传入实体) /// [HttpPost("Insert")] public ResponseResult Insert([FromBody] MesCgthSq entity) { try { // 自动生成主键 ID entity.Id = Guid.NewGuid(); entity.CreateDate = DateTime.Now; var insertSuccess = _mesCgthSqManager.Insert(entity); return new ResponseResult { status = 0, message = insertSuccess ? "新增成功" : "新增失败", data = new { id = entity.Id } }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 更新采购退货申请单 /// [HttpPost("Update")] public ResponseResult Update([FromBody] MesCgthSq entity) { try { entity.LastUpdateTime = DateTime.Now; var updateSuccess = _mesCgthSqManager.Update(entity); return new ResponseResult { status = 0, message = updateSuccess ? "更新成功" : "更新失败", data = updateSuccess }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } }