using AutoMapper; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using wms.dto; using wms.dto.request; using wms.dto.request.sx; using wms.dto.response; using wms.dto.response.sx; using wms.service.IService; using wms.sqlsugar.model.sx; using wms.util.Ext; namespace wms.api.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class SxController : BaseController { private readonly ISXService _sxService; private readonly ILogger _logger; private readonly IMapper _mapper; static object lockerCurtainProductionOrder = new object(); static object lockerSpoolMaterialInfoTrans = new object(); static object lockerCurtainProductionStockOut = new object(); static object lockerProductionBack = new object(); static object lockerErrorMaterialStockOut = new object(); static object lockerBGradeMaterialStockOut = new object(); static object lockerlockerStockChange = new object(); static object lockerManualBuildStockTrans = new object(); static object lockerBomInfoTrans = new object(); public SxController(ISXService sxService, ILogger logger, IMapper mapper) : base(sxService) { _sxService = sxService; _logger = logger; _mapper = mapper; } /// /// 同步物料基础信息 /// /// /// [HttpPost] public string SyncMaterInfo(SyncMaterInfoRequest reqBody) { var result = new SRes(); //_logger.LogInformation("请求参数:{@reqBody},{aa}", reqBody,1); SXSyncMaterInfoResponse resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(reqBody)); if (reqBody.SyncType == 1) { reqBody.PageIndex = 1; while (resbody.ResData.Any()) { _sxService.SyncMaterInfo(resbody.ResData); reqBody.PageIndex++; resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(reqBody)); } } else if (reqBody.SyncType == 2) { //拿到增量 var increconf = _sxService.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 (_sxService.SyncMaterInfo(resbody.ResData)) { var lastdata = resbody.ResData.OrderBy(p => p.UpdatedTime).Last(); _sxService.UpdateSysConfigModelColumns(new sqlsugar.model.UpdateModelColumns() { Columns = it => new sxSysConfig { 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 (_sxService.SyncMaterInfo(resbody.ResData)) { } } } } return result.ToCamelCaseString(); } /// /// 帘线工字轮信息传输接口 /// /// /// [HttpPost(Name = "SpoolMaterialInfoTrans")] public SRes SpoolMaterialInfoTrans(SxSpoolMaterialInfoTransRequest reqDto) { return ConcurrencyReqControl(lockerSpoolMaterialInfoTrans, "SpoolMaterialInfoTrans" + reqDto.SpoolCode, reqDto.SpoolCode, reqDto, _sxService.SpoolMaterialInfoTrans); } /// /// 时效库入库工字轮反馈接口 /// /// /// [HttpPost(Name = "SXProductStockInFeedBack")] public SRes SXProductStockInFeedBack(string doccode) { var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode); var dtolist = _mapper.Map>(list); var dto = new SXProductStockInFeedBackRequest() { ListInfo = dtolist }; SRes resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(dto)); return resbody; } /// /// 扭转检测结果值上传接口 /// /// /// [HttpPost(Name = "TorsChkValFeedBack")] public SRes TorsChkValFeedBack(string doccode) { var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode); var dtolist = _mapper.Map>(list); var dto = new TorsChkValFeedBackRequest() { ListInfo = dtolist }; SRes resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(dto)); return resbody; } /// /// 时效库出库装箱工字轮信息反馈接口 /// /// /// [HttpPost] public SRes EnchaseStockOutFeedBack(string doccode) { var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode); var dtolist = _mapper.Map>(list); var dto = new EnchaseStockOutFeedBackRequest() { ListInfo = dtolist }; SRes resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(dto)); return resbody; } /// /// 工字轮装箱位置信息上传接口 /// /// /// [HttpPost] public SRes EnchaseCoordPosFeedBack(string doccode) { var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode); var dtolist = _mapper.Map>(list); var dto = new EnchaseCoordPosFeedBackRequest() { ListInfo = dtolist }; SRes resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(dto)); return resbody; } /// /// 装箱称重信息上传接口 /// /// /// [HttpPost] public SRes ProBoxWeightFeedBack(string doccode) { var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode); var dtolist = _mapper.Map>(list); var dto = new ProBoxWeightFeedBackRequest() { ListInfo = dtolist }; SRes resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(dto)); return resbody; } /// /// 库存改判 /// /// /// [HttpPost] public SRes StockChange(SxStockChangeRequest reqDto) { return ConcurrencyReqControl(lockerlockerStockChange, "StockChange" + reqDto.BillCode, reqDto.BillCode, reqDto, _sxService.StockChange); } /// /// 改判反馈接口 /// /// /// [HttpPost] public SRes StockChangeFeedBack(string doccode) { var list = _sxService.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 = _sxService.GetBillFeedbackList(p => p.BillCode == doccode); var dtolist = _mapper.Map>(list); var dto = new MoveStockLocationFeedBackRequest() { ListInfo = dtolist }; SRes resbody = JsonConvert.DeserializeObject(WmsServiceExportApi(dto)); return resbody; } } }