PlatformWarehouseServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.feign.OmsFeign;
  3. import com.steerinfo.dil.feign.TmstruckFeign;
  4. import com.steerinfo.dil.mapper.RmsPwarehouseGridMapper;
  5. import com.steerinfo.dil.mapper.WmspGridMaterialMapper;
  6. import com.steerinfo.dil.model.RmsPwarehouseGrid;
  7. import com.steerinfo.dil.model.WmspGridMaterial;
  8. import com.steerinfo.dil.service.IPlatformWarehouseService;
  9. import com.steerinfo.dil.util.DataChange;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.transaction.annotation.Transactional;
  13. import javax.xml.crypto.Data;
  14. import java.math.BigDecimal;
  15. import java.rmi.server.ExportException;
  16. import java.util.Date;
  17. import java.util.List;
  18. import java.util.Map;
  19. @Service
  20. public class PlatformWarehouseServiceImpl implements IPlatformWarehouseService {
  21. @Autowired
  22. RmsPwarehouseGridMapper rmsPwarehouseGridMapper;
  23. @Autowired
  24. WmspGridMaterialMapper wmspGridMaterialMapper;
  25. @Autowired
  26. OmsFeign omsFeign;
  27. @Autowired
  28. TmstruckFeign tmstruckFeign;
  29. @Override
  30. @Transactional
  31. public int platformInboundOrOut(Map<String, Object> map) throws Exception {
  32. int i = 0;
  33. //1.首先判断有没有填写车皮号,
  34. String wagonNo = map.get("wagonNo").toString();
  35. //根据发站名称,去仓库表查询仓库。
  36. List<Integer> warehouseIds = rmsPwarehouseGridMapper.getWarehouseIds(map);
  37. if(warehouseIds.size() == 0){
  38. throw new Exception("仓库不存在,请联系管理员添加!");
  39. }
  40. BigDecimal warehouseId = DataChange.dataToBigDecimal(warehouseIds.get(0));
  41. map.put("warehouseId",warehouseId);
  42. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  43. ////根据运输ID去网格表查询是否有没有
  44. //根据运输订单ID,去查询运输订单子表的物资
  45. List<Map<String,Object>> orderMaterialList = rmsPwarehouseGridMapper.getOrderMaterialList(orderId);
  46. map.put("orderMaterialList",orderMaterialList);
  47. //2.做判断,是否填写车皮号
  48. if(wagonNo != null && !"".equals(wagonNo) && !"null".equals(wagonNo)){
  49. //2.1 如果填写了车皮号,则代表入库的同时出库,出库则需要将火车和汽车绑定起来,这是最重要的一点,其他不变
  50. try {
  51. inwardInbound(map);
  52. afterInwardOutbound(map);
  53. } catch (Exception e) {
  54. throw new Exception(e.getMessage());
  55. }
  56. return i;
  57. }else{
  58. //单纯入库,关闭运输订单,生成卸货实绩,生成网格和实时库存
  59. try {
  60. inwardInbound(map);
  61. } catch (Exception e) {
  62. throw new Exception(e.getMessage());
  63. }
  64. return i;
  65. }
  66. }
  67. //public int inwardOutBound(Map<String,Object>map){
  68. // //如果填写了车号,则说明入库之后需要出库
  69. // int i;
  70. // RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid();
  71. // BigDecimal warehouseId = DataChange.dataToBigDecimal(map.get("warehouseId"));
  72. // BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  73. // //获取运输订单ID当做垛位
  74. // //根据运输订单ID,去查询运输订单子表的物资
  75. // List<Map<String,Object>> orderMaterialList = (List<Map<String, Object>>) map.get("orderMaterialList");
  76. // //卸货
  77. // for(Map<String,Object> orderMaterialMap:orderMaterialList){
  78. // map.put("materialId",orderMaterialMap.get("materialId"));
  79. // map.put("warehouseId",warehouseId);
  80. // Map<String, Object> returnMap = tmstruckFeign.updateUnloadResult(map);
  81. // String code = (String) returnMap.get("code");
  82. // if("200".equals(code)){
  83. // System.out.println("新增卸车成功:" + map.get("orderId"));
  84. // }else {
  85. // return -3;
  86. // }
  87. // }
  88. // //设置主键ID
  89. // //根据运输订单号去查询网格
  90. // BigDecimal gridId = null;
  91. // if(rmsPwarehouseGridMapper.selectGridByOrderId(orderId) != null){
  92. // gridId = rmsPwarehouseGridMapper.selectGridByOrderId(orderId);
  93. // }else{
  94. // gridId = new BigDecimal(rmsPwarehouseGridMapper.selectMaxId().intValue() + 1);
  95. // }
  96. // rmsPwarehouseGrid.setGridId(gridId);
  97. // rmsPwarehouseGrid.setWarehouseId(warehouseId);
  98. // rmsPwarehouseGrid.setStackingId(orderId);
  99. // rmsPwarehouseGrid.setGridType(new BigDecimal(1));
  100. // rmsPwarehouseGrid.setInsertUsername(map.get("personnelSsoId").toString());
  101. // if (map.get("remark") != null){
  102. // rmsPwarehouseGrid.setInsertUpdateRemark(map.get("remark").toString());
  103. // }
  104. // rmsPwarehouseGrid.setInsertTime(new Date());
  105. // for(Map<String,Object> orderMaterialMap:orderMaterialList){
  106. // WmspGridMaterial wmspGridMaterial = new WmspGridMaterial();
  107. // //设置主键
  108. // wmspGridMaterial.setGmId(wmspGridMaterialMapper.getCount());
  109. // //将钢材物资ID
  110. // wmspGridMaterial.setGridId(gridId);
  111. // wmspGridMaterial.setMaterialId(DataChange.dataToBigDecimal(orderMaterialMap.get("materialId")));
  112. // wmspGridMaterial.setDeleted(new BigDecimal(1));
  113. // wmspGridMaterial.setGmNumber(DataChange.dataToBigDecimal(orderMaterialMap.get("materialNum")));
  114. // wmspGridMaterial.setInsertTime(new Date());
  115. // wmspGridMaterial.setInsertUsername(map.get("personnelSsoId").toString());
  116. // wmspGridMaterialMapper.insertSelective(wmspGridMaterial);
  117. // }
  118. // rmsPwarehouseGridMapper.insertSelective(rmsPwarehouseGrid);
  119. // //入库之后关闭运输订单
  120. // try {
  121. // System.out.println(orderId);
  122. // i = omsFeign.closeSteelOrderType4(orderId);
  123. //
  124. // } catch (Exception e) {
  125. // System.out.println(e.getMessage());
  126. // return -2;
  127. // }
  128. // return 1;
  129. //}
  130. //重新写一个方法,抽出来单纯入库
  131. @Transactional
  132. public int inwardInbound(Map<String,Object>map) throws Exception {
  133. //2.2 如果没有填写车皮号,则代表只入库
  134. //3 将运单当做垛位,与网格表关联起来
  135. int i ;
  136. RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid();
  137. BigDecimal warehouseId = DataChange.dataToBigDecimal(map.get("warehouseId"));
  138. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  139. //获取运输订单ID当做垛位
  140. //根据运输订单ID,去查询运输订单子表的物资
  141. List<Map<String,Object>> orderMaterialList = (List<Map<String, Object>>) map.get("orderMaterialList");
  142. //卸货
  143. for(Map<String,Object> orderMaterialMap:orderMaterialList){
  144. map.put("materialId",orderMaterialMap.get("materialId"));
  145. map.put("warehouseId",warehouseId);
  146. Map<String, Object> returnMap = tmstruckFeign.updateUnloadResult(map);
  147. String code = (String) returnMap.get("code");
  148. if("200".equals(code)){
  149. System.out.println("新增卸车成功:" + map.get("orderId"));
  150. }else {
  151. throw new Exception("卸车失败,请联系管理员");
  152. }
  153. }
  154. //根据运输订单ID,去查询该车所装的物资钢材ID列表,乱尺不存在扫描实绩,故不查了改查物资ID
  155. //List<BigDecimal> materialSteelIds = rmsPwarehouseGridMapper.getMaterialSteelIds(orderId);
  156. //设置主键ID
  157. BigDecimal gridId = null;
  158. if(rmsPwarehouseGridMapper.selectGridByOrderId(orderId) != null){
  159. gridId = rmsPwarehouseGridMapper.selectGridByOrderId(orderId);
  160. }else{
  161. gridId = new BigDecimal(rmsPwarehouseGridMapper.selectMaxId().intValue() + 1);
  162. }
  163. rmsPwarehouseGrid.setGridId(gridId);
  164. rmsPwarehouseGrid.setWarehouseId(warehouseId);
  165. rmsPwarehouseGrid.setStackingId(orderId);
  166. rmsPwarehouseGrid.setGridType(new BigDecimal(1));
  167. rmsPwarehouseGrid.setInsertUsername(map.get("personnelSsoId").toString());
  168. rmsPwarehouseGrid.setInsertTime(new Date());
  169. if (map.get("remark") != null){
  170. rmsPwarehouseGrid.setInsertUpdateRemark(map.get("remark").toString());
  171. }
  172. if(rmsPwarehouseGridMapper.selectGridByOrderId(orderId) != null){
  173. rmsPwarehouseGridMapper.updateByPrimaryKeySelective(rmsPwarehouseGrid);
  174. }else{
  175. for(Map<String,Object> orderMaterialMap:orderMaterialList){
  176. WmspGridMaterial wmspGridMaterial = new WmspGridMaterial();
  177. //设置主键
  178. wmspGridMaterial.setGmId(wmspGridMaterialMapper.getCount());
  179. //将钢材物资ID
  180. wmspGridMaterial.setGridId(gridId);
  181. wmspGridMaterial.setMaterialId(DataChange.dataToBigDecimal(orderMaterialMap.get("materialId")));
  182. wmspGridMaterial.setDeleted(new BigDecimal(0));
  183. wmspGridMaterial.setGmNumber(DataChange.dataToBigDecimal(orderMaterialMap.get("materialNum")));
  184. wmspGridMaterial.setInsertTime(new Date());
  185. wmspGridMaterial.setInsertUsername(map.get("personnelSsoId").toString());
  186. wmspGridMaterialMapper.insertSelective(wmspGridMaterial);
  187. }
  188. rmsPwarehouseGridMapper.insertSelective(rmsPwarehouseGrid);
  189. }
  190. //入库之后关闭运输订单
  191. try {
  192. System.out.println(orderId);
  193. i = omsFeign.closeSteelOrderType4(orderId);
  194. } catch (Exception e) {
  195. System.out.println(e.getMessage());
  196. throw new Exception("关闭订单失败");
  197. }
  198. return 1;
  199. }
  200. @Override
  201. @Transactional
  202. public int afterInwardOutbound(Map<String, Object> map) throws Exception {
  203. //需要参数 运输订单ID,人员ssoId
  204. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  205. //根据运输订单ID,出库
  206. int i = wmspGridMaterialMapper.updateWgmByOrderId(orderId);
  207. //同步生成火运实绩
  208. try {
  209. omsFeign.generateOmstrain(map);
  210. } catch (Exception e) {
  211. throw new Exception("关联火运失败,请联系管理员");
  212. }
  213. return i;
  214. }
  215. }