UtilsServiceImpl.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.feign.BmsShipFeign;
  3. import com.steerinfo.dil.feign.BmsTruckFeign;
  4. import com.steerinfo.dil.feign.IMFeign;
  5. import com.steerinfo.dil.mapper.UtilsMapper;
  6. import com.steerinfo.dil.service.IUtilsService;
  7. import com.steerinfo.dil.util.DataChange;
  8. import org.junit.jupiter.api.Test;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import java.math.BigDecimal;
  12. import java.util.*;
  13. /**
  14. * @ author :TXF
  15. * @ time :2021/10/26 14:42
  16. */
  17. @Service(value = "utilsService")
  18. public class UtilsServiceImpl implements IUtilsService {
  19. @Autowired
  20. private UtilsMapper utilsMapper;
  21. @Autowired
  22. private IMFeign imFeign;
  23. @Autowired
  24. private BmsTruckFeign bmsTruckFeign;
  25. /**
  26. * 查询运输订单ID主键
  27. * @return
  28. */
  29. @Override
  30. public BigDecimal selectOrderMaxId() {
  31. return utilsMapper.selectOrderMaxId();
  32. }
  33. /**
  34. * 查询运输订单子表主键ID
  35. * @return
  36. */
  37. @Override
  38. public BigDecimal selectOrderMaterialMaxId() {
  39. return utilsMapper.selectOrderMaterialMaxId();
  40. }
  41. /**
  42. * 修改运力状态
  43. * @param map {必要参数:capacityId 运力ID 或者 capacityNumber 车牌号}
  44. * @param status 类型
  45. * @return
  46. */
  47. public int updateCapacityStatus(Map<String, Object> map, Integer status){
  48. map.put("capacityStatus", status);
  49. return utilsMapper.updateCapacityByCarIdOrNum(map);
  50. }
  51. /**
  52. * 修改订单状态为结束
  53. * @param map {orderId 订单Id 或运输订购单号
  54. * @return
  55. */
  56. public int closeOrderNormally(Map<String, Object> map){
  57. //查询订单路段顺序号以及查询路段顺序号
  58. Map<String, Object> mesMap = utilsMapper.getLineSeqAndOrderSeq(map);
  59. BigDecimal orderSeq = DataChange.dataToBigDecimal(mesMap.get("orderSeq"));
  60. BigDecimal maxSeq = DataChange.dataToBigDecimal(mesMap.get("maxSeq"));
  61. if(orderSeq.intValue() == maxSeq.intValue()){
  62. map.put("orderStatus", 2);
  63. return utilsMapper.updateOrderStatusByOrderIdOrNum(map);
  64. }
  65. if(map.get("priceId")!=null){
  66. //如果有价格ID 则说明需要结算 调用新增详单接口
  67. // bmsTruckFeign.addDetailsOrder(DataChange.dataToBigDecimal(map.get("orderId")));
  68. }
  69. return 0;
  70. }
  71. /**
  72. * 通过仓库名称查询仓库Id
  73. * @param warehouseName
  74. * @return
  75. */
  76. @Override
  77. public Integer queryWarehouseIdByName(String warehouseName) {
  78. return utilsMapper.queryWarehouseIdByName(warehouseName);
  79. }
  80. /**
  81. * 用于更新路段顺序号 取实绩中的路段顺序号
  82. * @param map 运输订单号 或者是运输订单ID 实绩中的路段顺序号
  83. * @return
  84. */
  85. public int updateOrderLineSequence(Map<String, Object> map){
  86. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  87. if(orderId.intValue() == 0){
  88. //如果没有传入运输订单Id则需要传入了运输订单号
  89. orderId = utilsMapper.getOrderIdByOrderNumber((String) map.get("orderNumber"));
  90. }
  91. //根据订单查询里面订单里面的路段顺序号
  92. BigDecimal orderLineSequence = utilsMapper.getOrderSeq(orderId);
  93. //这是该实绩的路段顺序号
  94. BigDecimal segmentSqe = DataChange.dataToBigDecimal(map.get("segmentSqe"));
  95. if(segmentSqe.intValue() == 0){
  96. return 0;
  97. }
  98. //如果订单里面路段顺序号 大于 实绩里面路段顺序号,则不更新
  99. if (orderLineSequence != null && segmentSqe != null && orderLineSequence.intValue() > segmentSqe.intValue()) {
  100. segmentSqe = orderLineSequence;
  101. }
  102. Map<String, Object> mesMap = new HashMap<>();
  103. mesMap.put("orderId", orderId);
  104. mesMap.put("orderLineSequence", segmentSqe);
  105. return utilsMapper.updateLineSeqByOrderIdOrNum(mesMap);
  106. }
  107. /**
  108. * 厂内内转订单专属更新路段顺序号方法
  109. * @Author TXF
  110. * @Date 2022/2/17 22:02
  111. * @param map
  112. * @return
  113. **/
  114. public int updateOrderLineSqeByOrderNumber(Map<String, Object> map){
  115. return utilsMapper.updateLineSeqByOrderIdOrNum(map);
  116. }
  117. /**
  118. * 通过月台名称查询月台Id
  119. * @param platformName
  120. * @return
  121. */
  122. @Override
  123. public Integer queryPlatformIdByName(String platformName) {
  124. return utilsMapper.queryPlatformIdByName(platformName);
  125. }
  126. /**
  127. * 查询路段顺序号
  128. * @param orderId
  129. * @return
  130. */
  131. @Override
  132. public Integer getLineSequenceByOrderId(BigDecimal orderId) {
  133. return utilsMapper.getLineSequenceByOrderId(orderId);
  134. }
  135. /**
  136. * 查询订单中所需要运输的物资 物资表对订单表 一对多
  137. * @param map 运输订单号 orderNumber
  138. * @return
  139. */
  140. @Override
  141. public List<Integer> getAllMaterialId(Map<String, Object> map) {
  142. return utilsMapper.getAllMaterialId(map);
  143. }
  144. /**
  145. * 通过总实绩ID查询订单Id
  146. * @param resultTotalId
  147. * @return
  148. */
  149. @Override
  150. public Integer getOrderIdByTotalId(Integer resultTotalId) {
  151. return utilsMapper.getOrderIdByTotalId(resultTotalId);
  152. }
  153. /**
  154. * 推送消息给websocket
  155. * @param capacityNumber
  156. * @param pushMes
  157. */
  158. @Override
  159. public void pushMesToWebsocket(String capacityNumber, String pushMes) {
  160. //添加消息实体
  161. HashMap<Object, Object> mesMap = new HashMap<>();
  162. mesMap.put("messageType", 4); //用于进厂后 刷新消息
  163. mesMap.put("sendPerson", "system");
  164. mesMap.put("receivePerson", capacityNumber);
  165. mesMap.put("messageContent", pushMes + new Date());
  166. mesMap.put("createTime", new Date());
  167. ArrayList<Object> list = new ArrayList<>();
  168. list.add(mesMap);
  169. //调用websocket接口推送
  170. HashMap<Object, Object> sendMap = new HashMap<>();
  171. //将消息实体放入list中存到map中
  172. sendMap.put("messages", list);
  173. try {
  174. imFeign.sendToUser(sendMap);
  175. } catch (Exception e) {
  176. e.printStackTrace();
  177. }
  178. }
  179. public int randomGetValue(List<Integer> dataList){
  180. if(dataList.size() != 0&&dataList !=null){
  181. if(dataList.size() == 1){
  182. return dataList.get(0);
  183. }else {
  184. //如果有多个值则随机取一个
  185. Random random = new Random();
  186. int i = random.nextInt(dataList.size());
  187. return dataList.get(i);
  188. }
  189. }else {
  190. return 0;
  191. }
  192. }
  193. public int closeOrderSteel(Map<String, Object> map) {
  194. map.put("orderStatus", 2);
  195. return utilsMapper.updateOrderStatusByOrderIdOrNum(map);
  196. }
  197. }