OmstruckOrderMaterialServiceImpl.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.OmstruckOrderMapper;
  3. import com.steerinfo.dil.mapper.OmstruckOrderMaterialMapper;
  4. import com.steerinfo.dil.mapper.RmsCapacityMapper;
  5. import com.steerinfo.dil.mapper.RmsPwarehouseGridMapper;
  6. import com.steerinfo.dil.model.OmstruckOrderMaterial;
  7. import com.steerinfo.dil.model.RmsCapacity;
  8. import com.steerinfo.dil.model.RmsPwarehouseGrid;
  9. import com.steerinfo.dil.service.IOmstruckOrderMaterialService;
  10. import com.steerinfo.dil.util.DataChange;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import java.math.BigDecimal;
  15. import java.util.*;
  16. /**
  17. * OmstruckOrderMaterial服务实现:
  18. *
  19. * @author TXF
  20. * @version 1.0-SNAPSHORT 2021-09-03 04:55
  21. * 类描述
  22. * 修订历史:
  23. * 日期:2021-09-03
  24. * 作者:generator
  25. * 参考:
  26. * 描述:OmstruckOrderMaterial服务实现
  27. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  28. * @see null
  29. */
  30. @Service(value = "omstruckOrderMaterialService")
  31. public class OmstruckOrderMaterialServiceImpl implements IOmstruckOrderMaterialService {
  32. @Autowired
  33. private OmstruckOrderMapper omstruckOrderMapper;
  34. @Autowired
  35. private OmstruckOrderMaterialMapper omstruckOrderMaterialMapper;
  36. @Autowired
  37. RmsCapacityMapper rmsCapacityMapper;
  38. @Autowired
  39. RmsPwarehouseGridMapper rmsPwarehouseGridMapper;
  40. /**
  41. * 远程调用订单子表新增
  42. *
  43. * @param omstruckOrderMaterial
  44. * @return
  45. */
  46. @Override
  47. public int insertSelective(OmstruckOrderMaterial omstruckOrderMaterial) {
  48. return omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  49. }
  50. /**
  51. * 仓库
  52. * @return
  53. */
  54. @Override
  55. public List<Map<String, Object>> warehouseId() {
  56. return rmsCapacityMapper.warehouseId();
  57. }
  58. /**
  59. * 月台
  60. * @return
  61. */
  62. @Override
  63. public List<Map<String, Object>> platformId() {
  64. return rmsCapacityMapper.platformId();
  65. }
  66. /**
  67. * 垛位
  68. * @return
  69. */
  70. @Override
  71. public List<Map<String, Object>> stackingId() {
  72. return rmsCapacityMapper.stackingId();
  73. }
  74. /**
  75. * 主键
  76. * @return
  77. */
  78. @Override
  79. public BigDecimal gridId() {
  80. return rmsCapacityMapper.gridId();
  81. }
  82. @Override
  83. public int insertSelective(RmsPwarehouseGrid rmsPwarehouseGrid) {
  84. return rmsPwarehouseGridMapper.insertSelective(rmsPwarehouseGrid);
  85. }
  86. @Override
  87. public int insertGrid() {
  88. int count = 0;
  89. // 仓库
  90. List<Map<String, Object>> warehouseIdList = warehouseId();
  91. // 月台
  92. List<Map<String, Object>> platformIdList = platformId();
  93. // 垛位
  94. List<Map<String, Object>> stackingIdList = stackingId();
  95. // 遍历仓库
  96. for (Map<String,Object> warehouseIdMap : warehouseIdList) {
  97. BigDecimal warehouseId = (BigDecimal) warehouseIdMap.get("warehouseId");
  98. // 遍历月台
  99. for (Map<String,Object> platformIdMap : platformIdList) {
  100. BigDecimal platformId = (BigDecimal) platformIdMap.get("platformId");
  101. // 遍历垛位
  102. for (Map<String,Object> stackingIdMap : stackingIdList) {
  103. BigDecimal stackingId = (BigDecimal) stackingIdMap.get("stackingId");
  104. // 遍历层次
  105. for (int i = 1; i <= 25; i++) {
  106. // 遍历层序
  107. for (int j = 1; j <= 24; j++) {
  108. // 一棒库时
  109. if (warehouseId.intValue() == 1) {
  110. // A月台
  111. if (platformId.intValue() == 1) {
  112. // A月台的垛位
  113. if (stackingId.intValue() == 1) {
  114. RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid();
  115. BigDecimal gridId = gridId();
  116. rmsPwarehouseGrid.setGridId(gridId);
  117. rmsPwarehouseGrid.setWarehouseId(warehouseId);
  118. rmsPwarehouseGrid.setStackingId(stackingId);
  119. rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i));
  120. rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j));
  121. insertSelective(rmsPwarehouseGrid);
  122. count++;
  123. }
  124. }
  125. // B月台
  126. if (platformId.intValue() == 1) {
  127. // B月台的垛位: 2-8
  128. if (stackingId.intValue() >= 2 && stackingId.intValue() <= 8) {
  129. RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid();
  130. BigDecimal gridId = gridId();
  131. rmsPwarehouseGrid.setGridId(gridId);
  132. rmsPwarehouseGrid.setWarehouseId(warehouseId);
  133. rmsPwarehouseGrid.setPlatformId(platformId);
  134. rmsPwarehouseGrid.setStackingId(stackingId);
  135. rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i));
  136. rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j));
  137. insertSelective(rmsPwarehouseGrid);
  138. count++;
  139. }
  140. }
  141. }
  142. // 二棒库时:
  143. if (warehouseId.intValue() == 2) {
  144. // A月台
  145. if (platformId.intValue() == 3) {
  146. // A月台的垛位 : 1-3
  147. if (stackingId.intValue() >= 41 && stackingId.intValue() <= 43) {
  148. RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid();
  149. BigDecimal gridId = gridId();
  150. rmsPwarehouseGrid.setGridId(gridId);
  151. rmsPwarehouseGrid.setWarehouseId(warehouseId);
  152. rmsPwarehouseGrid.setPlatformId(platformId);
  153. rmsPwarehouseGrid.setStackingId(stackingId);
  154. rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i));
  155. rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j));
  156. insertSelective(rmsPwarehouseGrid);
  157. count++;
  158. }
  159. }
  160. // B月台
  161. if (platformId.intValue() == 4) {
  162. RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid();
  163. BigDecimal gridId = gridId();
  164. rmsPwarehouseGrid.setGridId(gridId);
  165. rmsPwarehouseGrid.setWarehouseId(warehouseId);
  166. rmsPwarehouseGrid.setPlatformId(platformId);
  167. insertSelective(rmsPwarehouseGrid);
  168. count++;
  169. }
  170. // C月台
  171. if (platformId.intValue() == 5) {
  172. // C月台的垛位:4-18
  173. if (stackingId.intValue() >= 44 && stackingId.intValue() <= 58) {
  174. RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid();
  175. BigDecimal gridId = gridId();
  176. rmsPwarehouseGrid.setGridId(gridId);
  177. rmsPwarehouseGrid.setWarehouseId(warehouseId);
  178. rmsPwarehouseGrid.setPlatformId(platformId);
  179. rmsPwarehouseGrid.setStackingId(stackingId);
  180. rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i));
  181. rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j));
  182. insertSelective(rmsPwarehouseGrid);
  183. count++;
  184. }
  185. }
  186. // D月台
  187. if (platformId.intValue() == 6) {
  188. // D月台的垛位:19
  189. if (stackingId.intValue() == 59) {
  190. RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid();
  191. BigDecimal gridId = gridId();
  192. rmsPwarehouseGrid.setGridId(gridId);
  193. rmsPwarehouseGrid.setWarehouseId(warehouseId);
  194. rmsPwarehouseGrid.setPlatformId(platformId);
  195. rmsPwarehouseGrid.setStackingId(stackingId);
  196. rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i));
  197. rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j));
  198. insertSelective(rmsPwarehouseGrid);
  199. count++;
  200. }
  201. }
  202. }
  203. // 配送库时:
  204. if (warehouseId.intValue() == 4) {
  205. // A月台
  206. if (platformId.intValue() == 8) {
  207. // A月台的垛位:8-14 || 24-32
  208. if ((stackingId.intValue() >= 16 && stackingId.intValue() <= 22) || (stackingId.intValue() >= 32 && stackingId.intValue() <= 40)) {
  209. RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid();
  210. BigDecimal gridId = gridId();
  211. rmsPwarehouseGrid.setGridId(gridId);
  212. rmsPwarehouseGrid.setWarehouseId(warehouseId);
  213. rmsPwarehouseGrid.setPlatformId(platformId);
  214. rmsPwarehouseGrid.setStackingId(stackingId);
  215. rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i));
  216. rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j));
  217. insertSelective(rmsPwarehouseGrid);
  218. count++;
  219. }
  220. }
  221. // B月台
  222. if (platformId.intValue() == 9) {
  223. // B月台的垛位:1-7 || 15-23
  224. if ((stackingId.intValue() >= 9 && stackingId.intValue() <= 15) || (stackingId.intValue() >= 23 && stackingId.intValue() <= 31)) {
  225. RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid();
  226. BigDecimal gridId = gridId();
  227. rmsPwarehouseGrid.setGridId(gridId);
  228. rmsPwarehouseGrid.setWarehouseId(warehouseId);
  229. rmsPwarehouseGrid.setPlatformId(platformId);
  230. rmsPwarehouseGrid.setStackingId(stackingId);
  231. rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i));
  232. rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j));
  233. insertSelective(rmsPwarehouseGrid);
  234. count++;
  235. }
  236. }
  237. }
  238. }
  239. }
  240. }
  241. }
  242. }
  243. System.out.println(count);
  244. return count;
  245. }
  246. /**
  247. * 车牌号
  248. * @param capacityId
  249. * @return
  250. */
  251. public List<Map<String, Object>> getSteelOrderNum(String capacityId){
  252. return omstruckOrderMaterialMapper.getSteelOrderNumByCapacityNumber(new BigDecimal(capacityId));
  253. }
  254. /**
  255. * 查询订单信息给钢材科
  256. * @param orderId
  257. * @return
  258. */
  259. public Map<String, Object> getMesToSteelDepartment(Integer orderId){
  260. Map<String, Object> map = new HashMap<>();
  261. map.put("orderId", orderId);
  262. map.put("status", 333);
  263. Map<String, Object> returnMap = omstruckOrderMapper.getSteelOrderMessageToApp(map);
  264. returnMap.put("materialMes", omstruckOrderMaterialMapper.getOrderMaterial(orderId));
  265. return returnMap;
  266. }
  267. /**
  268. * 更新物资信息
  269. * @param map
  270. * @return
  271. */
  272. @Transactional
  273. public int updateMaterialMes(Map<String, Object> map) {
  274. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  275. List<Map<String,Object>>mapList = (List<Map<String, Object>>) map.get("mapList");
  276. Object orderIds = map.get("orderId");
  277. Object saleOrderMaterialId = map.get("saleOrderMaterialId");
  278. for (Map<String, Object>map1 : mapList) {
  279. if (orderIds != null) {
  280. BigDecimal orderId = DataChange.dataToBigDecimal(orderIds);
  281. BigDecimal materialId = DataChange.dataToBigDecimal(map1.get("materialId"));
  282. BigDecimal materialNum = DataChange.dataToBigDecimal(map1.get("materialNum"));
  283. map1.put("orderId",orderId);
  284. //修改物资子表总理重 通过订单ID找到件数和总理重,算出单件理重
  285. Map<String, Object> saleMaterialMes = omstruckOrderMaterialMapper.getSaleOrderMaterialNum(map1);
  286. BigDecimal saleMaterialId = DataChange.dataToBigDecimal(saleMaterialMes.get("saleMaterialId"));//销售订单存放物资子表id
  287. BigDecimal materialWeight = DataChange.dataToBigDecimal(saleMaterialMes.get("materialWeight"));//旧总理重
  288. BigDecimal newWeight = null;
  289. if (materialWeight.intValue() != 0) { //如果总重量不为0,才进行重量更新
  290. BigDecimal orderMaterialNumber = DataChange.dataToBigDecimal(saleMaterialMes.get("orderMaterialNumber"));//旧件数
  291. BigDecimal theoreticalWeight = materialWeight.multiply(materialNum);
  292. newWeight = theoreticalWeight.divide(orderMaterialNumber,3, 4);//得到现有理重
  293. omstruckOrderMaterial.setOrderMaterialWeight(newWeight);
  294. }
  295. //修改销售订单物资子表
  296. omstruckOrderMaterialMapper.updateSaleOrderMaterialMes(saleMaterialId, materialNum, newWeight);
  297. //修改订单物资子表 与出库实绩
  298. omstruckOrderMaterial.setOrderId(orderId);
  299. omstruckOrderMaterial.setMaterialId(materialId);
  300. omstruckOrderMaterial.setOrderMaterialNumber(materialNum);
  301. omstruckOrderMaterial.setUpdateTime(new Date());
  302. omstruckOrderMaterialMapper.updateMaterialMes(omstruckOrderMaterial);
  303. omstruckOrderMaterialMapper.updateOutBoundResult(omstruckOrderMaterial);
  304. }
  305. else {
  306. BigDecimal materialNum = DataChange.dataToBigDecimal(map1.get("materialNum"));
  307. map1.put("saleOrderMaterialId",saleOrderMaterialId);
  308. //修改物资子表总理重 通过订单ID找到件数和总理重,算出单件理重
  309. Map<String, Object> saleMaterialMes = omstruckOrderMaterialMapper.getSaleOrderMaterialNum(map1);
  310. BigDecimal saleMaterialId = DataChange.dataToBigDecimal(saleMaterialMes.get("saleMaterialId"));//销售订单存放物资子表id
  311. BigDecimal materialWeight = DataChange.dataToBigDecimal(saleMaterialMes.get("materialWeight"));//旧总理重
  312. BigDecimal newWeight = null;
  313. if (materialWeight.intValue() != 0) { //如果总重量不为0,才进行重量更新
  314. BigDecimal orderMaterialNumber = DataChange.dataToBigDecimal(saleMaterialMes.get("materialNumber"));//旧件数
  315. BigDecimal theoreticalWeight = materialWeight.multiply(materialNum);
  316. newWeight = theoreticalWeight.divide(orderMaterialNumber,2, 4);//得到现有理重
  317. }
  318. //修改销售订单物资子表
  319. omstruckOrderMaterialMapper.updateSaleOrderMaterialMes(saleMaterialId, materialNum, newWeight);
  320. }
  321. }
  322. return 1;
  323. }
  324. }