UtilsServiceImpl.java 5.8 KB

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