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