using AutoMapper; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using wms.dto; using wms.dto.request; using wms.dto.request.cp; using wms.dto.response; using wms.dto.response.cp; using wms.service.IService; using wms.sqlsugar.model.cp; using wms.util.Ext; namespace wms.api.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class CpController : BaseController { private readonly ICPService _cpService; private readonly ILogger _logger; private readonly IMapper _mapper; static object lockerSalesDocTrans = new object(); static object lockerSalesBackDocTrans = new object(); static object lockerComPushApiResInfo = new object(); static object lockerStockChange = new object(); static object lockerStockStateChange = new object(); public CpController(ICPService cpService, ILogger logger, IMapper mapper) : base(cpService) { _cpService = cpService; _logger = logger; _mapper = mapper; } /// /// 同步物料基础信息 /// /// /// [HttpPost] public string SyncMaterInfo(SyncMaterInfoRequest reqBody) { var result = new SRes(); //_logger.LogInformation("请求参数:{@reqBody},{aa}", reqBody,1); CPSyncMaterInfoResponse resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(reqBody)); if (reqBody.SyncType == 1) { reqBody.PageIndex = 1; while (resbody.ResData.Any()) { _cpService.SyncMaterInfo(resbody.ResData); reqBody.PageIndex++; resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(reqBody)); } } else if (reqBody.SyncType == 2) { //拿到增量 var increconf = _cpService.GetSysConfigByCode(Const.MESMaterialInitIncrement); if (increconf != null) { reqBody.StartTime = DateTime.Parse(increconf.SContent); //reqBody.Count = int.Parse(increconf.Remark); resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(reqBody)); if (resbody.ResData.Any()) { if (_cpService.SyncMaterInfo(resbody.ResData)) { var lastdata = resbody.ResData.OrderBy(p => p.UpdatedTime).Last(); _cpService.UpdateSysConfigModelColumns(new sqlsugar.model.UpdateModelColumns() { Columns = it => new cpSysConfig { SContent = lastdata.UpdatedTime.ToString("yyyy-MM-dd HH:mm:ss.fff") }, WhereExpression = it => it.Code == Const.MESMaterialInitIncrement }); } } else { result.ResCode = ResponseStatusCodeEnum.NoResult.GetHashCode(); result.ResMsg = ResponseStatusCodeEnum.NoResult.GetDescription(); } } else { result.ResCode = ResponseStatusCodeEnum.AccountError.GetHashCode(); result.ResMsg = "没有配置信息" + Const.MESMaterialInitIncrement; } } else { if (!string.IsNullOrEmpty(reqBody.MatCode)) { resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(reqBody)); if (resbody.ResData.Any()) { if (_cpService.SyncMaterInfo(resbody.ResData)) { } } } } return result.ToCamelCaseString(); } /// /// 销售单信息传输接口 /// /// /// [HttpPost] public SRes SalesDocTrans(SalesDocTransRequest reqDto) { return ConcurrencyReqControl(lockerSalesDocTrans, "SalesDocTrans" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.SalesDocTrans); } /// /// 销售出库信息反馈接口 /// /// /// [HttpPost] public SRes SalesDocTransFeedBack(string doccode) { var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode); var dtolist = _mapper.Map>(list); //var dto = new SalesDocTransFeedBackRequest() { ListInfo = dtolist }; SRes resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(dtolist)); return resbody; } /// /// 退售单信息传输接口 /// /// /// [HttpPost] public SRes SalesBackDocTrans(SalesDocTransRequest reqDto) { return ConcurrencyReqControl(lockerSalesBackDocTrans, "SalesBackDocTrans" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.SalesBackDocTrans); } /// /// 销售退货入库信息反馈接口 /// /// /// [HttpPost] public SRes SalesBackDocTransFeedBack(string doccode) { var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode); var dtolist = _mapper.Map>(list); //var dto = new SalesDocTransFeedBackRequest() { ListInfo = dtolist }; SRes resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(dtolist)); return resbody; } /// /// 销售余料回库入库信息反馈接口 /// /// /// [HttpPost] public SRes SalesLeftDocTransFeedBack(string doccode) { var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode); var dtolist = _mapper.Map>(list); //var dto = new SalesDocTransFeedBackRequest() { ListInfo = dtolist }; SRes resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(dtolist)); return resbody; } /// /// 接收回馈接口 /// /// /// [HttpPost] public SRes ComPushApiResInfo(ComPushApiResInfoRequest reqDto) { return ConcurrencyReqControl(lockerComPushApiResInfo, "ComPushApiResInfo" + reqDto.ApiId, reqDto.ApiId, reqDto, _cpService.ComPushApiResInfo); } /// /// 呆滞料/异常料出库接口 /// /// /// [HttpPost] public SRes ErrorMaterialStockOut(ErrorMaterialStockOutRequest reqDto) { return ConcurrencyReqControl(lockerComPushApiResInfo, "ErrorMaterialStockOut" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.ErrorMaterialStockOut); } /// /// 呆滞料_异常料出库反馈接口 /// /// /// [HttpPost] public SRes ErrorMaterialStockOutFeedBack(string doccode) { var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode); var dtolist = _mapper.Map>(list); //var dto = new SalesDocTransFeedBackRequest() { ListInfo = dtolist }; SRes resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(dtolist)); return resbody; } /// /// 库存改判 /// /// /// [HttpPost] public SRes StockChange(CpStockChangeRequest reqDto) { return ConcurrencyReqControl(lockerStockChange, "StockChange" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.StockChange); } /// /// 改判反馈接口 /// /// /// [HttpPost] public SRes StockChangeFeedBack(string doccode) { var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode); var dtolist = _mapper.Map>(list); var dto = new StockChangeFeedBackRequest() { ListInfo = dtolist }; SRes resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(dto)); return resbody; } /// /// 实时库存查询接口 /// /// /// [HttpPost] public string GetCurStockList(string reqDto) { return null; } /// /// 移库货位上报MES接口 /// /// /// [HttpPost] public SRes MoveStockLocationFeedBack(string doccode) { var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode); var dtolist = _mapper.Map(list); //var dto = new MoveStockLocationFeedBackRequest() { ListInfo = dtolist }; SRes resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(dtolist)); return resbody; } /// /// 放行/冻结单传输接口 /// /// /// [HttpPost] public StockStateChangeResponse StockStateChange(StockStateChangeRequest reqDto) { return ConcurrencyReqControl(lockerStockStateChange, "StockStateChange" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.StockStateChange); } } }