SxController.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. using AutoMapper;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Newtonsoft.Json;
  5. using wms.dto;
  6. using wms.dto.request;
  7. using wms.dto.request.sx;
  8. using wms.dto.response;
  9. using wms.dto.response.sx;
  10. using wms.service.IService;
  11. using wms.sqlsugar.model.sx;
  12. using wms.util.Ext;
  13. namespace wms.api.Controllers
  14. {
  15. [Route("api/[controller]/[action]")]
  16. [ApiController]
  17. public class SxController : BaseController
  18. {
  19. private readonly ISXService _sxService;
  20. private readonly ILogger<PtController> _logger;
  21. private readonly IMapper _mapper;
  22. static object lockerCurtainProductionOrder = new object();
  23. static object lockerSpoolMaterialInfoTrans = new object();
  24. static object lockerCurtainProductionStockOut = new object();
  25. static object lockerProductionBack = new object();
  26. static object lockerErrorMaterialStockOut = new object();
  27. static object lockerBGradeMaterialStockOut = new object();
  28. static object lockerlockerStockChange = new object();
  29. static object lockerManualBuildStockTrans = new object();
  30. static object lockerBomInfoTrans = new object();
  31. public SxController(ISXService sxService, ILogger<PtController> logger, IMapper mapper) : base(sxService)
  32. {
  33. _sxService = sxService;
  34. _logger = logger;
  35. _mapper = mapper;
  36. }
  37. /// <summary>
  38. /// 同步物料基础信息
  39. /// </summary>
  40. /// <param name="reqDto"></param>
  41. /// <returns></returns>
  42. [HttpPost]
  43. public string SyncMaterInfo(SyncMaterInfoRequest reqBody)
  44. {
  45. var result = new SRes();
  46. //_logger.LogInformation("请求参数:{@reqBody},{aa}", reqBody,1);
  47. SXSyncMaterInfoResponse resbody = JsonConvert.DeserializeObject<SXSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
  48. if (reqBody.SyncType == 1)
  49. {
  50. reqBody.PageIndex = 1;
  51. while (resbody.ResData.Any())
  52. {
  53. _sxService.SyncMaterInfo(resbody.ResData);
  54. reqBody.PageIndex++;
  55. resbody = JsonConvert.DeserializeObject<SXSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
  56. }
  57. }
  58. else if (reqBody.SyncType == 2)
  59. {
  60. //拿到增量
  61. var increconf = _sxService.GetSysConfigByCode(Const.MESMaterialInitIncrement);
  62. if (increconf != null)
  63. {
  64. reqBody.StartTime = DateTime.Parse(increconf.SContent);
  65. //reqBody.Count = int.Parse(increconf.Remark);
  66. resbody = JsonConvert.DeserializeObject<SXSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
  67. if (resbody.ResData.Any())
  68. {
  69. if (_sxService.SyncMaterInfo(resbody.ResData))
  70. {
  71. var lastdata = resbody.ResData.OrderBy(p => p.UpdatedTime).Last();
  72. _sxService.UpdateSysConfigModelColumns(new sqlsugar.model.UpdateModelColumns<sxSysConfig>()
  73. {
  74. Columns = it => new sxSysConfig { SContent = lastdata.UpdatedTime.ToString("yyyy-MM-dd HH:mm:ss.fff") },
  75. WhereExpression = it => it.Code == Const.MESMaterialInitIncrement
  76. });
  77. }
  78. }
  79. else
  80. {
  81. result.ResCode = ResponseStatusCodeEnum.NoResult.GetHashCode();
  82. result.ResMsg = ResponseStatusCodeEnum.NoResult.GetDescription();
  83. }
  84. }
  85. else
  86. {
  87. result.ResCode = ResponseStatusCodeEnum.AccountError.GetHashCode();
  88. result.ResMsg = "没有配置信息" + Const.MESMaterialInitIncrement;
  89. }
  90. }
  91. else
  92. {
  93. if (!string.IsNullOrEmpty(reqBody.MatCode))
  94. {
  95. resbody = JsonConvert.DeserializeObject<SXSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
  96. if (resbody.ResData.Any())
  97. {
  98. if (_sxService.SyncMaterInfo(resbody.ResData))
  99. {
  100. }
  101. }
  102. }
  103. }
  104. return result.ToCamelCaseString();
  105. }
  106. /// <summary>
  107. /// 帘线工字轮信息传输接口
  108. /// </summary>
  109. /// <param name="reqDto"></param>
  110. /// <returns></returns>
  111. [HttpPost(Name = "SpoolMaterialInfoTrans")]
  112. public SRes SpoolMaterialInfoTrans(SxSpoolMaterialInfoTransRequest reqDto)
  113. {
  114. return ConcurrencyReqControl<SxSpoolMaterialInfoTransRequest, SRes>(lockerSpoolMaterialInfoTrans, "SpoolMaterialInfoTrans" + reqDto.SpoolCode, reqDto.SpoolCode, reqDto, _sxService.SpoolMaterialInfoTrans);
  115. }
  116. /// <summary>
  117. /// 时效库入库工字轮反馈接口
  118. /// </summary>
  119. /// <param name="billcode"></param>
  120. /// <returns></returns>
  121. [HttpPost(Name = "SXProductStockInFeedBack")]
  122. public SRes SXProductStockInFeedBack(string doccode)
  123. {
  124. var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode);
  125. var dtolist = _mapper.Map<List<SXProductStockInFeedBackRequestItem>>(list);
  126. var dto = new SXProductStockInFeedBackRequest() { ListInfo = dtolist };
  127. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dto));
  128. return resbody;
  129. }
  130. /// <summary>
  131. /// 扭转检测结果值上传接口
  132. /// </summary>
  133. /// <param name="billcode"></param>
  134. /// <returns></returns>
  135. [HttpPost(Name = "TorsChkValFeedBack")]
  136. public SRes TorsChkValFeedBack(string doccode)
  137. {
  138. var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode);
  139. var dtolist = _mapper.Map<List<TorsChkValFeedBackRequestItem>>(list);
  140. var dto = new TorsChkValFeedBackRequest() { ListInfo = dtolist };
  141. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dto));
  142. return resbody;
  143. }
  144. /// <summary>
  145. /// 时效库出库装箱工字轮信息反馈接口
  146. /// </summary>
  147. /// <param name="billcode"></param>
  148. /// <returns></returns>
  149. [HttpPost]
  150. public SRes EnchaseStockOutFeedBack(string doccode)
  151. {
  152. var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode);
  153. var dtolist = _mapper.Map<List<EnchaseStockOutFeedBackRequestItem>>(list);
  154. var dto = new EnchaseStockOutFeedBackRequest() { ListInfo = dtolist };
  155. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dto));
  156. return resbody;
  157. }
  158. /// <summary>
  159. /// 工字轮装箱位置信息上传接口
  160. /// </summary>
  161. /// <param name="billcode"></param>
  162. /// <returns></returns>
  163. [HttpPost]
  164. public SRes EnchaseCoordPosFeedBack(string doccode)
  165. {
  166. var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode);
  167. var dtolist = _mapper.Map<List<EnchaseCoordPosFeedBackRequestItem>>(list);
  168. var dto = new EnchaseCoordPosFeedBackRequest() { ListInfo = dtolist };
  169. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dto));
  170. return resbody;
  171. }
  172. /// <summary>
  173. /// 装箱称重信息上传接口
  174. /// </summary>
  175. /// <param name="billcode"></param>
  176. /// <returns></returns>
  177. [HttpPost]
  178. public SRes ProBoxWeightFeedBack(string doccode)
  179. {
  180. var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode);
  181. var dtolist = _mapper.Map<List<ProBoxWeightFeedBackRequestItem>>(list);
  182. var dto = new ProBoxWeightFeedBackRequest() { ListInfo = dtolist };
  183. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dto));
  184. return resbody;
  185. }
  186. /// <summary>
  187. /// 库存改判
  188. /// </summary>
  189. /// <param name="reqDto"></param>
  190. /// <returns></returns>
  191. [HttpPost]
  192. public SRes StockChange(SxStockChangeRequest reqDto)
  193. {
  194. return ConcurrencyReqControl<SxStockChangeRequest, SRes>(lockerlockerStockChange, "StockChange" + reqDto.BillCode, reqDto.BillCode, reqDto, _sxService.StockChange);
  195. }
  196. /// <summary>
  197. /// 改判反馈接口
  198. /// </summary>
  199. /// <param name="request"></param>
  200. /// <returns></returns>
  201. [HttpPost]
  202. public SRes StockChangeFeedBack(string doccode)
  203. {
  204. var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode);
  205. var dtolist = _mapper.Map<List<StockChangeFeedBackRequestItem>>(list);
  206. var dto = new StockChangeFeedBackRequest() { ListInfo = dtolist };
  207. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dto));
  208. return resbody;
  209. }
  210. /// <summary>
  211. /// 实时库存查询接口
  212. /// </summary>
  213. /// <param name="reqDto"></param>
  214. /// <returns></returns>
  215. [HttpPost]
  216. public string GetCurStockList(string reqDto)
  217. {
  218. return null;
  219. }
  220. /// <summary>
  221. /// 移库货位上报MES接口
  222. /// </summary>
  223. /// <param name="request"></param>
  224. /// <returns></returns>
  225. [HttpPost]
  226. public SRes MoveStockLocationFeedBack(string doccode)
  227. {
  228. var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode);
  229. var dtolist = _mapper.Map<List<MoveStockLocationFeedBackRequestItem>>(list);
  230. var dto = new MoveStockLocationFeedBackRequest() { ListInfo = dtolist };
  231. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dto));
  232. return resbody;
  233. }
  234. }
  235. }