CpController.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  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.cp;
  8. using wms.dto.response;
  9. using wms.dto.response.cp;
  10. using wms.service.IService;
  11. using wms.sqlsugar.model.cp;
  12. using wms.util.Ext;
  13. namespace wms.api.Controllers
  14. {
  15. [Route("api/[controller]/[action]")]
  16. [ApiController]
  17. public class CpController : BaseController
  18. {
  19. private readonly ICPService _cpService;
  20. private readonly ILogger<CpController> _logger;
  21. private readonly IMapper _mapper;
  22. static object lockerSalesDocTrans = new object();
  23. static object lockerSalesBackDocTrans = new object();
  24. static object lockerComPushApiResInfo = new object();
  25. static object lockerStockChange = new object();
  26. static object lockerStockStateChange = new object();
  27. public CpController(ICPService cpService, ILogger<CpController> logger, IMapper mapper) : base(cpService)
  28. {
  29. _cpService = cpService;
  30. _logger = logger;
  31. _mapper = mapper;
  32. }
  33. /// <summary>
  34. /// 同步物料基础信息
  35. /// </summary>
  36. /// <param name="reqDto"></param>
  37. /// <returns></returns>
  38. [HttpPost]
  39. public string SyncMaterInfo(SyncMaterInfoRequest reqBody)
  40. {
  41. var result = new SRes();
  42. //_logger.LogInformation("请求参数:{@reqBody},{aa}", reqBody,1);
  43. CPSyncMaterInfoResponse resbody = JsonConvert.DeserializeObject<CPSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
  44. if (reqBody.SyncType == 1)
  45. {
  46. reqBody.PageIndex = 1;
  47. while (resbody.ResData.Any())
  48. {
  49. _cpService.SyncMaterInfo(resbody.ResData);
  50. reqBody.PageIndex++;
  51. resbody = JsonConvert.DeserializeObject<CPSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
  52. }
  53. }
  54. else if (reqBody.SyncType == 2)
  55. {
  56. //拿到增量
  57. var increconf = _cpService.GetSysConfigByCode(Const.MESMaterialInitIncrement);
  58. if (increconf != null)
  59. {
  60. reqBody.StartTime = DateTime.Parse(increconf.SContent);
  61. //reqBody.Count = int.Parse(increconf.Remark);
  62. resbody = JsonConvert.DeserializeObject<CPSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
  63. if (resbody.ResData.Any())
  64. {
  65. if (_cpService.SyncMaterInfo(resbody.ResData))
  66. {
  67. var lastdata = resbody.ResData.OrderBy(p => p.UpdatedTime).Last();
  68. _cpService.UpdateSysConfigModelColumns(new sqlsugar.model.UpdateModelColumns<cpSysConfig>()
  69. {
  70. Columns = it => new cpSysConfig { SContent = lastdata.UpdatedTime.ToString("yyyy-MM-dd HH:mm:ss.fff") },
  71. WhereExpression = it => it.Code == Const.MESMaterialInitIncrement
  72. });
  73. }
  74. }
  75. else
  76. {
  77. result.ResCode = ResponseStatusCodeEnum.NoResult.GetHashCode();
  78. result.ResMsg = ResponseStatusCodeEnum.NoResult.GetDescription();
  79. }
  80. }
  81. else
  82. {
  83. result.ResCode = ResponseStatusCodeEnum.AccountError.GetHashCode();
  84. result.ResMsg = "没有配置信息" + Const.MESMaterialInitIncrement;
  85. }
  86. }
  87. else
  88. {
  89. if (!string.IsNullOrEmpty(reqBody.MatCode))
  90. {
  91. resbody = JsonConvert.DeserializeObject<CPSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
  92. if (resbody.ResData.Any())
  93. {
  94. if (_cpService.SyncMaterInfo(resbody.ResData))
  95. {
  96. }
  97. }
  98. }
  99. }
  100. return result.ToCamelCaseString();
  101. }
  102. /// <summary>
  103. /// 销售单信息传输接口
  104. /// </summary>
  105. /// <param name="reqDto"></param>
  106. /// <returns></returns>
  107. [HttpPost]
  108. public SRes SalesDocTrans(SalesDocTransRequest reqDto)
  109. {
  110. return ConcurrencyReqControl<SalesDocTransRequest, SRes>(lockerSalesDocTrans, "SalesDocTrans" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.SalesDocTrans);
  111. }
  112. /// <summary>
  113. /// 销售出库信息反馈接口
  114. /// </summary>
  115. /// <param name="request"></param>
  116. /// <returns></returns>
  117. [HttpPost]
  118. public SRes SalesDocTransFeedBack(string doccode)
  119. {
  120. var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode);
  121. var dtolist = _mapper.Map<List<SalesDocTransFeedBackRequest>>(list);
  122. //var dto = new SalesDocTransFeedBackRequest() { ListInfo = dtolist };
  123. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dtolist));
  124. return resbody;
  125. }
  126. /// <summary>
  127. /// 退售单信息传输接口
  128. /// </summary>
  129. /// <param name="reqDto"></param>
  130. /// <returns></returns>
  131. [HttpPost]
  132. public SRes SalesBackDocTrans(SalesDocTransRequest reqDto)
  133. {
  134. return ConcurrencyReqControl<SalesDocTransRequest, SRes>(lockerSalesBackDocTrans, "SalesBackDocTrans" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.SalesBackDocTrans);
  135. }
  136. /// <summary>
  137. /// 销售退货入库信息反馈接口
  138. /// </summary>
  139. /// <param name="request"></param>
  140. /// <returns></returns>
  141. [HttpPost]
  142. public SRes SalesBackDocTransFeedBack(string doccode)
  143. {
  144. var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode);
  145. var dtolist = _mapper.Map<List<SalesDocTransFeedBackRequest>>(list);
  146. //var dto = new SalesDocTransFeedBackRequest() { ListInfo = dtolist };
  147. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dtolist));
  148. return resbody;
  149. }
  150. /// <summary>
  151. /// 销售余料回库入库信息反馈接口
  152. /// </summary>
  153. /// <param name="request"></param>
  154. /// <returns></returns>
  155. [HttpPost]
  156. public SRes SalesLeftDocTransFeedBack(string doccode)
  157. {
  158. var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode);
  159. var dtolist = _mapper.Map<List<SalesLeftDocTransFeedBackRequest>>(list);
  160. //var dto = new SalesDocTransFeedBackRequest() { ListInfo = dtolist };
  161. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dtolist));
  162. return resbody;
  163. }
  164. /// <summary>
  165. /// 接收回馈接口
  166. /// </summary>
  167. /// <param name="reqDto"></param>
  168. /// <returns></returns>
  169. [HttpPost]
  170. public SRes ComPushApiResInfo(ComPushApiResInfoRequest reqDto)
  171. {
  172. return ConcurrencyReqControl<ComPushApiResInfoRequest, SRes>(lockerComPushApiResInfo, "ComPushApiResInfo" + reqDto.ApiId, reqDto.ApiId, reqDto, _cpService.ComPushApiResInfo);
  173. }
  174. /// <summary>
  175. /// 呆滞料/异常料出库接口
  176. /// </summary>
  177. /// <param name="reqDto"></param>
  178. /// <returns></returns>
  179. [HttpPost]
  180. public SRes ErrorMaterialStockOut(ErrorMaterialStockOutRequest reqDto)
  181. {
  182. return ConcurrencyReqControl<ErrorMaterialStockOutRequest, SRes>(lockerComPushApiResInfo, "ErrorMaterialStockOut" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.ErrorMaterialStockOut);
  183. }
  184. /// <summary>
  185. /// 呆滞料_异常料出库反馈接口
  186. /// </summary>
  187. /// <param name="request"></param>
  188. /// <returns></returns>
  189. [HttpPost]
  190. public SRes ErrorMaterialStockOutFeedBack(string doccode)
  191. {
  192. var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode);
  193. var dtolist = _mapper.Map<List<ErrorMaterialStockOutFeedBackRequest>>(list);
  194. //var dto = new SalesDocTransFeedBackRequest() { ListInfo = dtolist };
  195. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dtolist));
  196. return resbody;
  197. }
  198. /// <summary>
  199. /// 库存改判
  200. /// </summary>
  201. /// <param name="reqDto"></param>
  202. /// <returns></returns>
  203. [HttpPost]
  204. public SRes StockChange(CpStockChangeRequest reqDto)
  205. {
  206. return ConcurrencyReqControl<CpStockChangeRequest, SRes>(lockerStockChange, "StockChange" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.StockChange);
  207. }
  208. /// <summary>
  209. /// 改判反馈接口
  210. /// </summary>
  211. /// <param name="request"></param>
  212. /// <returns></returns>
  213. [HttpPost]
  214. public SRes StockChangeFeedBack(string doccode)
  215. {
  216. var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode);
  217. var dtolist = _mapper.Map<List<StockChangeFeedBackRequestItem>>(list);
  218. var dto = new StockChangeFeedBackRequest() { ListInfo = dtolist };
  219. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dto));
  220. return resbody;
  221. }
  222. /// <summary>
  223. /// 实时库存查询接口
  224. /// </summary>
  225. /// <param name="reqDto"></param>
  226. /// <returns></returns>
  227. [HttpPost]
  228. public string GetCurStockList(string reqDto)
  229. {
  230. return null;
  231. }
  232. /// <summary>
  233. /// 移库货位上报MES接口
  234. /// </summary>
  235. /// <param name="request"></param>
  236. /// <returns></returns>
  237. [HttpPost]
  238. public SRes MoveStockLocationFeedBack(string doccode)
  239. {
  240. var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode);
  241. var dtolist = _mapper.Map<MoveStockLocationFeedBackRequest>(list);
  242. //var dto = new MoveStockLocationFeedBackRequest() { ListInfo = dtolist };
  243. SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dtolist));
  244. return resbody;
  245. }
  246. /// <summary>
  247. /// 放行/冻结单传输接口
  248. /// </summary>
  249. /// <param name="reqDto"></param>
  250. /// <returns></returns>
  251. [HttpPost]
  252. public StockStateChangeResponse StockStateChange(StockStateChangeRequest reqDto)
  253. {
  254. return ConcurrencyReqControl<StockStateChangeRequest, StockStateChangeResponse>(lockerStockStateChange, "StockStateChange" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.StockStateChange);
  255. }
  256. }
  257. }