OmstruckOrderSeparateServiceImpl.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613
  1. package com.steerinfo.dil.service.impl;
  2. import com.fasterxml.jackson.databind.ObjectReader;
  3. import com.steerinfo.dil.feign.IMFeign;
  4. import com.steerinfo.dil.feign.TmsTruckFeign;
  5. import com.steerinfo.dil.mapper.AmsSaleOrderMaterialMapper;
  6. import com.steerinfo.dil.mapper.OmstruckOrderMapper;
  7. import com.steerinfo.dil.mapper.OmstruckOrderMaterialMapper;
  8. import com.steerinfo.dil.mapper.OmstruckOrderSeparateMapper;
  9. import com.steerinfo.dil.model.OmstruckOrder;
  10. import com.steerinfo.dil.model.OmstruckOrderMaterial;
  11. import com.steerinfo.dil.service.IOmstruckOrderSeparateService;
  12. import com.steerinfo.dil.util.DataChange;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import org.springframework.web.bind.annotation.RequestBody;
  17. import java.math.BigDecimal;
  18. import java.text.SimpleDateFormat;
  19. import java.util.*;
  20. /**
  21. * 运输订单第二个 impl
  22. * @ author :TXF
  23. * @ time :2021/12/3 13:14
  24. */
  25. @Service
  26. public class OmstruckOrderSeparateServiceImpl implements IOmstruckOrderSeparateService {
  27. @Autowired
  28. private OmstruckOrderSeparateMapper omstruckOrderSeparateMapper;
  29. @Autowired
  30. AmsSaleOrderMaterialMapper amsSaleOrderMaterialMapper;
  31. @Autowired
  32. private OmstruckOrderMapper omstruckOrderMapper;
  33. @Autowired
  34. private OmstruckOrderServiceImpl omstruckOrderService;
  35. @Autowired
  36. private TmsTruckFeign tmsTruckFeign;
  37. @Autowired
  38. OmstruckOrderMaterialMapper omstruckOrderMaterialMapper;
  39. @Autowired
  40. IMFeign imFeign;
  41. /**
  42. * 通过线路子表路线图生成各实绩
  43. * @param map
  44. * @return
  45. */
  46. public int addAllSonResult(Map<String, Object> map){
  47. Integer resultTotalId = DataChange.dataToBigDecimal(map.get("resultTotalId")).intValue();
  48. Integer lineId = DataChange.dataToBigDecimal(map.get("lineId")).intValue();
  49. int result = 0;
  50. //通过总实绩Id 查询关联的线路子表顺序
  51. List<Map<String, Object>> segmentList = omstruckOrderSeparateMapper.getLineMesByOrderId(lineId);
  52. Map<String,Object> totalIdMap = new HashMap<>();
  53. totalIdMap.put("resultTotalId",resultTotalId);
  54. totalIdMap.put("lineId", lineId);
  55. // 遍历路段顺序号子表
  56. int count = 0;
  57. BigDecimal lineType = (BigDecimal) segmentList.get(0).get("lineType");
  58. if (lineType.intValue() == 4) {
  59. count++;
  60. }
  61. //存放皮重路段顺序号和毛重路段顺序号map
  62. Map<String, Object> tareAndGrossSegmentMap = new HashMap<>();
  63. for (Map<String,Object> segmentMap : segmentList) {
  64. BigDecimal segmentSqe = (BigDecimal) segmentMap.get("segmentSqe");
  65. String linkName = (String) segmentMap.get("linkName");
  66. totalIdMap.put("segmentSqe",segmentSqe);
  67. // 判断是否是计毛
  68. if (linkName.equals("计毛")) {
  69. // 如果是计量则加一
  70. count ++;
  71. tareAndGrossSegmentMap.put("grossSegmentSqe", segmentSqe);
  72. // 有两个计量的时候则新增实绩
  73. if (count == 2) {
  74. totalIdMap.putAll(tareAndGrossSegmentMap);//将皮重顺序号和毛重路段顺序号放进去
  75. tmsTruckFeign.addWeightResult(totalIdMap);
  76. // 新增一次则对计数器清零
  77. count = 0;
  78. tareAndGrossSegmentMap.clear(); // 清空毛重皮重 map
  79. result++;
  80. }
  81. }
  82. // 判断是否是计皮
  83. if (linkName.equals("计皮")) {
  84. // 如果是计皮则加一
  85. count ++;
  86. tareAndGrossSegmentMap.put("tareSegmentSqe", segmentSqe);
  87. // 有两个计量的时候则新增实绩
  88. if (count == 2) {
  89. totalIdMap.putAll(tareAndGrossSegmentMap);
  90. tmsTruckFeign.addWeightResult(totalIdMap);
  91. // 新增一次则对计数器清零
  92. count = 0;
  93. tareAndGrossSegmentMap.clear(); // 清空毛重皮重 map
  94. result++;
  95. }
  96. }
  97. // 进厂
  98. if (linkName.equals("进厂")) {
  99. tmsTruckFeign.addEnFactoryResult(totalIdMap);
  100. result++;
  101. }
  102. // 出厂
  103. if (linkName.equals("出厂")) {
  104. tmsTruckFeign.addLeaveFactory(totalIdMap);
  105. result++;
  106. }
  107. // 装货
  108. if (linkName.equals("装货")) {
  109. tmsTruckFeign.addLoadResult(totalIdMap);
  110. result++;
  111. }
  112. // 卸货
  113. if (linkName.equals("卸货")) {
  114. tmsTruckFeign.addUnloadResult(totalIdMap);
  115. result++;
  116. }
  117. // 退货
  118. if (linkName.equals("退货")) {
  119. totalIdMap.put("returnReason", map.get("returnReason")); //退货原因 仅退货有用
  120. totalIdMap.put("orderId", map.get("orderId")); //添加新订单ID
  121. tmsTruckFeign.addReturnGoodsResult(totalIdMap);
  122. result++;
  123. }
  124. }
  125. return result;
  126. }
  127. /**
  128. * 添加退货实绩关闭当前订单
  129. * @param map
  130. * @return
  131. */
  132. @Transactional
  133. public int returnOrderCloseOrder(Map<String, Object> map){
  134. //通过运输订单ID关闭运输订单(修改状态为退货关闭:9)
  135. map.put("orderStatus", 9);
  136. int i = omstruckOrderSeparateMapper.updateOrderStatusByOrderNum(map);
  137. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  138. //查询之前订单所有的信息
  139. Map<String, Object> orderMap = omstruckOrderSeparateMapper.getOmstruckOrderResult(orderId);
  140. // 获得运单信息
  141. Map<String,Object> orderMessaggeMap = omstruckOrderSeparateMapper.getOrderMessagge(orderId);
  142. //添加新运输订单 运输订单号
  143. OmstruckOrder omstruckOrder = new OmstruckOrder();
  144. BigDecimal newOrderId = omstruckOrderMapper.selectMaxId();
  145. // 卸货点
  146. BigDecimal unloadPointId = (BigDecimal) orderMessaggeMap.get("unloadPointId");
  147. omstruckOrder.setOrderId(newOrderId);
  148. omstruckOrder.setOrderType(DataChange.dataToBigDecimal(orderMessaggeMap.get("orderType")));
  149. omstruckOrder.setLineId(DataChange.dataToBigDecimal(map.get("lineId")));
  150. omstruckOrder.setOrderPlanId(DataChange.dataToBigDecimal(orderMessaggeMap.get("orderPlanId")));
  151. omstruckOrder.setOrderStatus(new BigDecimal(5)); //执行中(已接收)
  152. omstruckOrder.setCapacityId(DataChange.dataToBigDecimal(orderMessaggeMap.get("capacityId")));
  153. omstruckOrder.setOrderNumber(orderMessaggeMap.get("orderNumber") + "-1");
  154. omstruckOrder.setOrderIssueTime(new Date());
  155. omstruckOrder.setOrderReceiveRefuseTime(new Date());
  156. omstruckOrder.setInsertTime(new Date());
  157. omstruckOrder.setInsertUsername("admin");
  158. omstruckOrder.setUnloadPointId(unloadPointId);
  159. omstruckOrderMapper.insertSelective(omstruckOrder);
  160. //添加运输订单子表
  161. Map<String, Object> mesMap = new HashMap<>();
  162. mesMap.put("orderId", newOrderId);
  163. omstruckOrderService.addOrderMaterial(orderMap, newOrderId);
  164. //添加总实绩
  165. Integer totalId = tmsTruckFeign.addTotalResult(mesMap);
  166. // 添加各种实绩
  167. mesMap.put("resultTotalId", totalId);
  168. mesMap.put("lineId", map.get("lineId"));
  169. mesMap.put("returnReason", map.get("returnResult"));
  170. int result = addAllSonResult(mesMap);
  171. // 推送消息给司机
  172. pushMesToWebsocket(mesMap);
  173. return result;
  174. }
  175. /**
  176. * 发送消息到 websocket 推送消息
  177. * orderId 订单Id
  178. * @return
  179. */
  180. public String pushMesToWebsocket(Map<String, Object> map) {
  181. Map<String, Object> mesMap = omstruckOrderMapper.pushMesToWebsocket(map);
  182. //添加消息实体
  183. HashMap<Object, Object> mapp = new HashMap<>();
  184. mapp.put("messageType", 3);
  185. mapp.put("sendPerson", "system");
  186. mapp.put("receivePerson", mesMap.get("capacityNumber"));
  187. mapp.put("messageContent",(String) mesMap.get("orderNumber") + new Date());
  188. mapp.put("createTime", new Date());
  189. ArrayList<Object> list = new ArrayList<>();
  190. list.add(mapp);
  191. //调用websocket接口推送
  192. HashMap<Object, Object> sendMap = new HashMap<>();
  193. //将消息实体放入list中存到map中
  194. sendMap.put("messages", list);
  195. String s = imFeign.sendToUser(sendMap);
  196. System.out.println(s);
  197. return s;
  198. }
  199. /**
  200. * 通过运单id查询所有实绩点
  201. * @param orderId
  202. * @return
  203. */
  204. public List<Map<String,Object>> getOrderResult(BigDecimal orderId) {
  205. List<Map<String,Object>> segmentList = omstruckOrderSeparateMapper.getSegmentList(orderId);
  206. //通过订单ID查询总实绩ID
  207. Integer resultTotalId = omstruckOrderSeparateMapper.getTotalIdByOrderId(orderId);
  208. if(segmentList != null)
  209. for (Map<String, Object> map : segmentList) {
  210. //获取路段类型
  211. String linkName = (String) map.get("linkName");
  212. //获取路段顺序号
  213. int segmentSqe = DataChange.dataToBigDecimal(map.get("segmentSqe")).intValue();
  214. Map<String, Object> mesMap = new HashMap<>(); //查询条件Map
  215. mesMap.put("segmentSqe", segmentSqe);
  216. mesMap.put("resultTotalId", resultTotalId);
  217. switch (linkName) {
  218. case "进厂":
  219. //通过总实绩ID和路段顺序号查询
  220. Map<String, Object> mes1 = omstruckOrderSeparateMapper.getEnFactoryMes(mesMap);
  221. if(mes1 != null)
  222. map.putAll(mes1);
  223. break;
  224. case "计毛":
  225. Map<String, Object> mes2 = omstruckOrderSeparateMapper.getMaoWeightMes(mesMap);
  226. if(mes2 != null)
  227. map.putAll(mes2);
  228. break;
  229. case "计皮":
  230. Map<String, Object> mes3 = omstruckOrderSeparateMapper.getPiWeightMes(mesMap);
  231. if(mes3 != null)
  232. map.putAll(mes3);
  233. break;
  234. case "卸货":
  235. Map<String, Object> mes4 = omstruckOrderSeparateMapper.getUnloadMes(mesMap);
  236. if(mes4 != null)
  237. map.putAll(mes4);
  238. break;
  239. case "装货":
  240. Map<String, Object> mes5 = omstruckOrderSeparateMapper.getLoadMes(mesMap);
  241. if(mes5 != null)
  242. map.putAll(mes5);
  243. break;
  244. case "出厂":
  245. Map<String, Object> mes6 = omstruckOrderSeparateMapper.getOutFactoryMes(mesMap);
  246. if(mes6 != null)
  247. map.putAll(mes6);
  248. break;
  249. case "退货":
  250. Map<String, Object> mes7 = omstruckOrderSeparateMapper.getReturnMes(mesMap);
  251. if(mes7 != null)
  252. map.putAll(mes7);
  253. }
  254. }
  255. return segmentList;
  256. }
  257. /**
  258. * 查询运输进程,通过实绩ID
  259. * @Author TXF
  260. * @Date 2022/2/18 16:46
  261. * @param orderId
  262. * @return
  263. **/
  264. public List<Map<String, Object>> getAllOrderResult(BigDecimal orderId){
  265. //通过订单Id查询总实绩Id
  266. Integer resultTotalId = omstruckOrderSeparateMapper.getTotalIdByOrderId(orderId);
  267. //通过总实绩ID查询所有的实绩:包括进厂、出厂、计重、装卸货
  268. List<Map<String, Object>> allMesList = new ArrayList<>(20);
  269. allMesList.addAll(omstruckOrderSeparateMapper.getAllEnFactoryResultMesByTotalId(resultTotalId));
  270. allMesList.addAll(omstruckOrderSeparateMapper.getAllOutFactoryResultMesByTotalId(resultTotalId));
  271. allMesList.addAll(omstruckOrderSeparateMapper.getAllLoadResultMesByTotalId(resultTotalId));
  272. allMesList.addAll(omstruckOrderSeparateMapper.getAllUnloadResultMesByTotalId(resultTotalId));
  273. allMesList.addAll(omstruckOrderSeparateMapper.getAllMaoWeightResultMesByTotalId(resultTotalId));
  274. allMesList.addAll(omstruckOrderSeparateMapper.getAllPiWeightResultMesByTotalId(resultTotalId));
  275. //对列表中数据路段顺序号进行排序
  276. allMesList.sort(new Comparator<Map<String, Object>>() {
  277. @Override
  278. public int compare(Map<String, Object> o1, Map<String, Object> o2) {
  279. BigDecimal segmenSqe1 = DataChange.dataToBigDecimal(o1.get("segmenSqe"));
  280. BigDecimal segmenSqe2 = DataChange.dataToBigDecimal(o2.get("segmenSqe"));
  281. return segmenSqe1.compareTo(segmenSqe2);
  282. }
  283. });
  284. for (Map<String, Object> objectMap : allMesList) {
  285. System.out.println(objectMap);
  286. }
  287. return allMesList;
  288. }
  289. /**
  290. * 通过运输订单号查询实绩位置
  291. * @param orderNumber
  292. * @return
  293. */
  294. public List<Map<String, Object>> getOrderNumberResult(String orderNumber) {
  295. String substring = orderNumber.substring(0, orderNumber.length() - 1);
  296. BigDecimal orderId = omstruckOrderSeparateMapper.getOrderIdByOrderNumber(substring);
  297. List<Map<String, Object>> orderResult = getOrderResult(orderId);
  298. return orderResult;
  299. }
  300. /**
  301. * 查看承运商所属的订单
  302. * @param mapValue
  303. * @return
  304. */
  305. @Override
  306. public List<Map<String, Object>> getInputOrderList(Map<String, Object> mapValue) {
  307. return omstruckOrderSeparateMapper.getInputOrderList(mapValue);
  308. }
  309. /**
  310. * 查询所有的未下发的需要分配车辆的订单
  311. * @param map
  312. * @return
  313. */
  314. public List<Map<String, Object>> getOthersOrderMesToSend(Map<String, Object> map){
  315. return omstruckOrderSeparateMapper.getOthersOrderMesToSend(map);
  316. }
  317. /**
  318. * 根据运输订单id修改运力id
  319. * @param omstruckOrder
  320. * @return
  321. */
  322. @Override
  323. public int updateOmstruckOrder(OmstruckOrder omstruckOrder) {
  324. return omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  325. }
  326. //根据运输订单号查物资
  327. @Override
  328. public List<Map<String,Object>> getUnloadOrderMaterial(Map<String, Object> map) {
  329. return omstruckOrderMaterialMapper.getUnloadOrderMaterial(map);
  330. }
  331. /**
  332. * 承运商销售分派运输订单给司机
  333. * @param mapValue
  334. * @return
  335. */
  336. @Override
  337. public Integer addSaleTruckOrder(Map<String, Object> mapValue) {
  338. // Integer orderType = (Integer) mapValue.get("orderType");
  339. Integer lineId = (Integer) mapValue.get("lineId");
  340. // 根据lineId查询是否是钢材
  341. BigDecimal isSteel = omstruckOrderMapper.getIsSteel(new BigDecimal(lineId));
  342. BigDecimal dispatchId = DataChange.dataToBigDecimal(mapValue.get("dispatchId"));
  343. //通过定向派单ID查询车序号表中的priceId 价格ID
  344. BigDecimal priceId = omstruckOrderMapper.getPriceIdByDispatchId(dispatchId);
  345. String capacityNumber = (String) mapValue.get("capacityNumber");
  346. OmstruckOrder omstruckOrder = new OmstruckOrder();
  347. omstruckOrder.setPriceId(priceId);
  348. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  349. Map<String,Object> orderIdMap = new HashMap<>();
  350. orderIdMap.put("orderId",orderId);
  351. tmsTruckFeign.addTotalResult(orderIdMap);
  352. omstruckOrder.setOrderId(orderId);
  353. BigDecimal saleOrderMaterialId = omstruckOrderMapper.getSaleMaterialId(dispatchId);
  354. // 查询销售订单中是物资重量还是件数
  355. List<Map<String, Object>> materialMapList = omstruckOrderSeparateMapper.getWeightOrNumber(saleOrderMaterialId);
  356. omstruckOrder.setOrderPlanId(saleOrderMaterialId);
  357. String orderNumber = DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue());
  358. omstruckOrder.setOrderNumber(orderNumber);
  359. omstruckOrder.setLineId(new BigDecimal(lineId));
  360. omstruckOrder.setOrderIssueTime(new Date());
  361. // 如果线路类型为3或者4(危化品和焦炭)则为非钢材
  362. if (isSteel != null && (isSteel.intValue() == 3 || isSteel.intValue() == 4)) {
  363. omstruckOrder.setOrderType(new BigDecimal(2));
  364. }
  365. // 否则为钢材
  366. else {
  367. omstruckOrder.setOrderType(new BigDecimal(1));
  368. }
  369. omstruckOrder.setOrderStatus(new BigDecimal(4));
  370. omstruckOrder.setInsertTime(new Date());
  371. omstruckOrder.setUpdateTime(new Date());
  372. omstruckOrder.setInsertUsername("admin");
  373. omstruckOrder.setUpdateUsername("admin");
  374. omstruckOrder.setInsertUpdateRemark("无");
  375. omstruckOrder.setDeleted(new BigDecimal(0));
  376. BigDecimal capacityId = omstruckOrderMapper.getCapacityId(capacityNumber);
  377. omstruckOrder.setCapacityId(capacityId);
  378. List<Map<String, Object>> mapList = omstruckOrderMapper.getMaterialMessages(dispatchId);
  379. if (mapList != null && mapList.size() != 0) {
  380. for (Map<String, Object> map : mapList) {
  381. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  382. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  383. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  384. omstruckOrderMaterial.setOrderId(orderId);
  385. omstruckOrderMaterial.setInsertTime(new Date());
  386. omstruckOrderMaterial.setUpdateTime(new Date());
  387. omstruckOrderMaterial.setInsertUsername("admin");
  388. omstruckOrderMaterial.setUpdateUsername("admin");
  389. omstruckOrderMaterial.setInsertUpdateRemark("无");
  390. if (map != null) {
  391. BigDecimal saleOrderMaterialNumber = (BigDecimal) map.get("saleOrderMaterialNumber");
  392. BigDecimal materialId = (BigDecimal) map.get("materialId");
  393. omstruckOrderMaterial.setMaterialId(materialId);
  394. // 判断是重量还是件数
  395. if (materialMapList != null) {
  396. BigDecimal saleMaterialNumber = (BigDecimal) materialMapList.get(0).get("materialNumber");
  397. if (saleMaterialNumber != null && saleMaterialNumber.toString().length() != 0) {
  398. omstruckOrderMaterial.setOrderMaterialNumber(saleOrderMaterialNumber);
  399. }
  400. else {
  401. omstruckOrderMaterial.setOrderMaterialWeight(saleOrderMaterialNumber);
  402. }
  403. }
  404. }
  405. omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  406. }
  407. }
  408. int result = omstruckOrderMapper.insertSelective(omstruckOrder);
  409. // 调用websocket推送数据给司机
  410. pushMesToWebsocket(orderIdMap);
  411. return result;
  412. }
  413. @Override
  414. public int updateTimes(BigDecimal orderPlanId, int times) {
  415. return omstruckOrderSeparateMapper.updateTimes(orderPlanId, times);
  416. }
  417. /**
  418. * 根据运单id关闭运输订单
  419. * @param orderId
  420. * @return
  421. */
  422. @Override
  423. public int closeOrder(Integer orderId) {
  424. OmstruckOrder omstruckOrder = new OmstruckOrder();
  425. omstruckOrder.setOrderId(new BigDecimal(orderId));
  426. omstruckOrder.setOrderStatus(new BigDecimal(8));
  427. int result = omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  428. return result;
  429. }
  430. /**
  431. * @Author TXF
  432. * @Date 2021/12/30 16:15
  433. * @param capacityNumber 车牌号
  434. * @return 查询当前车辆之前所有已完成的订单号 以及 订单ID
  435. **/
  436. public List<Map<String, Object>> getCapacityAllOrder(String capacityNumber){
  437. return omstruckOrderSeparateMapper.getCapacityAllOrder(capacityNumber);
  438. }
  439. // @Override
  440. // public int updateTimes(BigDecimal orderPlanId, int times) {
  441. // return omstruckOrderSeparateMapper.updateTimes(orderPlanId,times);
  442. // }
  443. /**
  444. * 根据运单id查询出所有销售数据
  445. * @param orderId
  446. * @return
  447. */
  448. @Override
  449. public Map<String, Object> getSaleAllMessages(BigDecimal orderId) {
  450. // 销售订单id
  451. Map<String,Object> mapValue = omstruckOrderSeparateMapper.getSaleAllMessages(orderId);
  452. BigDecimal saleOrderId = (BigDecimal) mapValue.get("saleOrderId");
  453. // 车序号
  454. List<Map<String, Object>> truckList = omstruckOrderSeparateMapper.getMaxTruckNo(saleOrderId);
  455. Map<String, Object> map = truckList.get(0);
  456. mapValue.putAll(map);
  457. // mapList中的数据
  458. List<Map<String,Object>> mapList = omstruckOrderSeparateMapper.getMapList(orderId);
  459. mapValue.put("mapList",mapList);
  460. return mapValue;
  461. }
  462. /**
  463. * 新增一个新的运输订单(一车多趟)
  464. * @Author TXF
  465. * @Date 2022/1/14 21:10
  466. * @param orderId
  467. * @return
  468. **/
  469. public int addNewTransportOrder(BigDecimal orderId){
  470. //根据运输订单ID查询 订单信息
  471. OmstruckOrder omstruckOrder = omstruckOrderMapper.selectByPrimaryKey(orderId);
  472. BigDecimal newOrderId = updateTruckOrder(omstruckOrder);
  473. omstruckOrderMapper.insertSelective(omstruckOrder);
  474. //通过订单ID查询物资子表信息
  475. OmstruckOrderMaterial omstruckOrderMaterial = omstruckOrderMaterialMapper.selectByOrderIdPrimaryKey(orderId);
  476. //更新物资子表中的订单ID
  477. omstruckOrderMaterial.setOrderId(newOrderId);
  478. updateTruckOrderMaterial(omstruckOrderMaterial);
  479. omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  480. //远程调用新增新的总实绩ID
  481. Map<String, Object> map = new HashMap<>();
  482. map.put("orderId", newOrderId);
  483. tmsTruckFeign.addTotalResult(map);
  484. return 1;
  485. }
  486. /**
  487. * 更新新订单信息 (一车多趟)
  488. * @Author TXF
  489. * @Date 2022/1/14 21:35
  490. * @param omstruckOrder
  491. * @return
  492. **/
  493. private BigDecimal updateTruckOrder(OmstruckOrder omstruckOrder){
  494. //设置新的运输订单号和主键
  495. BigDecimal newOrderId = omstruckOrderMapper.selectMaxId();
  496. omstruckOrder.setOrderId(newOrderId);
  497. omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD", newOrderId.intValue()));
  498. //设置订单状态为已下发 司机未接收时间 路段顺序号 订单确认状态
  499. omstruckOrder.setOrderStatus(new BigDecimal(4));
  500. Date nowDate = new Date();
  501. omstruckOrder.setOrderIssueTime(nowDate);
  502. omstruckOrder.setOrderLineSequence(null);
  503. omstruckOrder.setOrderReceiveRefuseTime(null);
  504. omstruckOrder.setDriverConfirmation(null);
  505. omstruckOrder.setOrderEntryTime(new Date(nowDate.getTime() + 7200000));//一车多趟预估进厂时间以当前时间往后推俩小时
  506. //常规字段
  507. omstruckOrder.setInsertTime(nowDate);
  508. omstruckOrder.setInsertUsername("admin");
  509. omstruckOrder.setUpdateTime(null);
  510. omstruckOrder.setUpdateUsername(null);
  511. return newOrderId; //用于更新订单子表信息
  512. }
  513. /**
  514. * 更新订单物资子表信息 (一车多趟)
  515. * @Author TXF
  516. * @Date 2022/1/14 21:40
  517. * @param
  518. * @return
  519. **/
  520. private void updateTruckOrderMaterial(OmstruckOrderMaterial omstruckOrderMaterial){
  521. //更新主键 以及常规字段
  522. omstruckOrderMaterial.setOrderMaterialId(omstruckOrderMaterialMapper.selectMaxId());
  523. omstruckOrderMaterial.setInsertTime(new Date());
  524. omstruckOrderMaterial.setInsertUsername("admin");
  525. omstruckOrderMaterial.setUpdateTime(null);
  526. omstruckOrderMaterial.setUpdateUsername(null);
  527. }
  528. /**
  529. * 批量删除订单
  530. * @Author TXF
  531. * @Date 2022/1/14 23:51
  532. * @param
  533. * @return
  534. **/
  535. @Transactional
  536. public int deleteOrders(Map<String, Object> map){
  537. List<BigDecimal> orderIdList = (List<BigDecimal>) map.get("list");
  538. omstruckOrderMapper.batchDelete(orderIdList);
  539. omstruckOrderMaterialMapper.batchByOrderIdDelete(orderIdList);
  540. omstruckOrderMaterialMapper.batchByOrderIdForTotalDelete(orderIdList);
  541. return orderIdList.size();
  542. }
  543. /**
  544. * 装卸工查询自己所有装了货的订单信息
  545. * @Author TXF
  546. * @Date 2022/1/15 17:07
  547. * @param map
  548. * @return
  549. **/
  550. public List<Map<String, Object>> getAllLoadUnloadResult(@RequestBody(required = false) Map<String, Object> map){
  551. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  552. map.put("limitTime", sdf.format(new Date(new Date().getTime() - 43200000)));
  553. List<Map<String, Object>> allLoaderLoadingOrder = omstruckOrderSeparateMapper.getAllLoaderLoadingOrder(map);
  554. return allLoaderLoadingOrder;
  555. }
  556. @Override
  557. public List<Map<String,Object>> getOrderMaterial(Integer orderId) {
  558. List<Map<String,Object>>maplist = omstruckOrderMaterialMapper.getOrderMaterial(orderId);
  559. for (Map<String,Object>map:maplist
  560. ) {
  561. if(map.get("materialModel") == null){
  562. String materialName = (String)map.get("materialName");
  563. String materialName1 = materialName.replace("()","");
  564. map.replace("materialName",materialName,materialName1);
  565. }
  566. }
  567. return maplist;
  568. }
  569. @Override
  570. public int closeInwardOrder(Integer orderId) {
  571. int i = omstruckOrderSeparateMapper.closeInwardOrder(orderId);
  572. return i;
  573. }
  574. }