OffSiteTransportationServiceImpl.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.OffSiteTransportationMapper;
  3. import com.steerinfo.dil.mapper.TmstruckAbnormalResultMapper;
  4. import com.steerinfo.dil.mapper.TmstruckInTransitWarnMapper;
  5. import com.steerinfo.dil.model.TmstruckAbnormalResult;
  6. import com.steerinfo.dil.model.TmstruckInTransitWarn;
  7. import com.steerinfo.dil.model.TmstruckReceiptResult;
  8. import com.steerinfo.dil.service.ITmstruckReceiptResultService;
  9. import com.steerinfo.dil.service.OffSiteTransportationService;
  10. import com.steerinfo.framework.controller.RESTfulResult;
  11. import com.steerinfo.route.mapper.TmstruckArrivalResultMapper;
  12. import com.steerinfo.route.model.TmstruckReceiptResultChild;
  13. import com.steerinfo.route.service.ITmstruckReceiptResultChildService;
  14. import com.steerinfo.route.service.impl.RouteServiceImpl;
  15. import com.steerinfo.route.vo.Map.RouteVo;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.web.bind.annotation.RequestBody;
  19. import java.math.BigDecimal;
  20. import java.text.SimpleDateFormat;
  21. import java.util.Date;
  22. import java.util.HashMap;
  23. import java.util.List;
  24. import java.util.Map;
  25. import java.util.concurrent.CompletableFuture;
  26. @Service
  27. public class OffSiteTransportationServiceImpl implements OffSiteTransportationService {
  28. @Autowired
  29. private RouteServiceImpl routeService;
  30. @Autowired
  31. OffSiteTransportationMapper offSiteTransportationMapper;
  32. @Autowired
  33. private TmstruckArrivalResultMapper tmstruckArrivalResultMapper;
  34. @Autowired
  35. private ITmstruckReceiptResultService tmstruckReceiptResultService;
  36. @Autowired
  37. private ITmstruckReceiptResultChildService tmstruckReceiptResultChildService;
  38. @Autowired
  39. private TmstruckInTransitWarnMapper tmstruckInTransitWarnMapper;
  40. @Autowired
  41. private TmstruckAbnormalResultMapper tmstruckAbnormalResultMapper;
  42. @Override
  43. public List<Map<String, Object>> getInTransitTransportation(Map<String, Object> mapValue) {
  44. return offSiteTransportationMapper.getInTransitTransportation(mapValue);
  45. }
  46. @Override
  47. public Integer getOrderStatus(Map<String, Object> map) {
  48. String orderNumber = (String) map.get("orderNumber");
  49. //判断是否已经结束
  50. Integer statu= offSiteTransportationMapper.getOrderStatu(orderNumber);
  51. if (statu==null){
  52. return 1;
  53. }
  54. return statu;
  55. }
  56. @Override
  57. public Map<String, Object> getStartAndEndCapacityNumber(Map<String,Object> map) {
  58. return offSiteTransportationMapper.getStartAndEndCapacityNumber(map);
  59. }
  60. @Override
  61. public void insertOrderMileage(Map<String, Object> map) {
  62. //获取运输订单号
  63. String orderNumber = (String) map.get("orderNumber");
  64. //获取并插入总实绩Id
  65. BigDecimal truckTotalId = tmstruckArrivalResultMapper.getTotalIdByOrderNumber(orderNumber);
  66. //获取总距离
  67. String orderMileage = (String) map.get("orderMileage");
  68. //将两个属性放到运输订单中
  69. HashMap<String,Object> omstruckOrder=new HashMap<>();
  70. omstruckOrder.put("truckTotalId",truckTotalId);
  71. omstruckOrder.put("orderMileage",orderMileage);
  72. offSiteTransportationMapper.insertOrderMileage(omstruckOrder);
  73. }
  74. @Override
  75. public void removeDate() {
  76. List<Map<String,Object>> list= offSiteTransportationMapper.getReceiptData();
  77. for (Map<String,Object> map:list){
  78. int i= offSiteTransportationMapper.insertReceive(map);
  79. }
  80. }
  81. public int orderClose(String orderNumber){
  82. return offSiteTransportationMapper.orderClose(orderNumber);
  83. }
  84. @Override
  85. public Map<String,Object> selectWarnSwitch() {
  86. return offSiteTransportationMapper.selectWarnSwitch();
  87. }
  88. @Override
  89. public int insertOrderTripId(Map<String, Object> map) {
  90. //获取运输订单号
  91. String orderNumber = (String) map.get("orderNumber");
  92. //获取行程线路id
  93. String tripId = (String) map.get("rid");
  94. //将两个属性放到运输订单中
  95. return offSiteTransportationMapper.insertOrderTripId(map);
  96. }
  97. public int addTransportationAlarm(Map<String,Object> map) {
  98. String label = (String) map.get("label");
  99. //获取行程id
  100. String rid = (String) map.get("rid");
  101. //查询是否已经收货
  102. BigDecimal orderStatus = offSiteTransportationMapper.selectIsReceiving(rid);
  103. if (orderStatus!=null){
  104. if(label.equals("1")&&orderStatus.intValue()==1){
  105. //获取异常地点
  106. String abnormalAddress = (String) map.get("adr");
  107. //获取异常选型
  108. String abnormalType = (String) map.get("type");
  109. System.out.println("map.get(time)");
  110. System.out.println(map);
  111. System.out.println(map.get("time"));
  112. //获取异常时间
  113. String time = map.get("time").toString().length()>13?map.get("time").toString().substring(0,13):map.get("time").toString();
  114. long lt = new Long(time);
  115. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  116. Date date = new Date(lt);
  117. //获取异常持续时间
  118. BigDecimal abnormalDuration1 = null;
  119. if(map.get("warnTime")!=null){
  120. Integer abnormalDuration = (Integer) map.get("warnTime");
  121. abnormalDuration1 = new BigDecimal(abnormalDuration);
  122. }
  123. //插入"偏离"、"停车"、"离线"运输报警
  124. TmstruckAbnormalResult tmstruckAbnormalResult = new TmstruckAbnormalResult();
  125. tmstruckAbnormalResult.setAbnormalAddress(abnormalAddress);
  126. tmstruckAbnormalResult.setAbnormalType(new BigDecimal(abnormalType.toString()));
  127. tmstruckAbnormalResult.setAbnormalTime(date);
  128. tmstruckAbnormalResult.setAbnormalDuration(abnormalDuration1);
  129. addTransportationAlarm(tmstruckAbnormalResult,rid);
  130. }
  131. }
  132. return 1;
  133. }
  134. @Override
  135. public List<Map<String, Object>> getHaveAbnormalTruckOrderInfo(Map<String, Object> mapValue) {
  136. return offSiteTransportationMapper.getHaveAbnormalTruckOrderInfo(mapValue);
  137. }
  138. @Override
  139. public List<Map<String, Object>> getTransportAbnormalInfo(Map<String, Object> mapValue) {
  140. return offSiteTransportationMapper.getTransportAbnormalInfo(mapValue);
  141. }
  142. public synchronized int addTransportationAlarm(TmstruckAbnormalResult tmstruckAbnormalResult,String tripId) {
  143. long id;
  144. if(tmstruckAbnormalResultMapper.selectMaxId()==null){
  145. id = 1;
  146. }else {
  147. id = tmstruckAbnormalResultMapper.selectMaxId().longValue()+1;
  148. }
  149. //生成主键id
  150. tmstruckAbnormalResult.setAbnormalId(new BigDecimal(id));
  151. //获取并插入总实绩Id
  152. BigDecimal truckTotalId = tmstruckAbnormalResultMapper.getTotalIdByTripId(tripId);
  153. tmstruckAbnormalResult.setResultTotalId(truckTotalId);
  154. //常规字段
  155. tmstruckAbnormalResult.setInsertUsername("admin");
  156. tmstruckAbnormalResult.setInsertTime(new Date());
  157. tmstruckAbnormalResult.setUpdateUsername("admin");
  158. tmstruckAbnormalResult.setUpdateTime(new Date());
  159. tmstruckAbnormalResult.setInsertUpdateRemark("无");
  160. return tmstruckAbnormalResultMapper.insert(tmstruckAbnormalResult);
  161. }
  162. public String savePath() throws Exception {
  163. Map<String, Object> parem=offSiteTransportationMapper.getTruckFactoryResult("WYSDD2021091000000002");
  164. parem.put("turnOf","0");
  165. return routeService.saveRoute(parem).toString();
  166. //运输订单号:orderNumber、车牌号:capacityNumber、出厂时间:resultOutGateTime、预警开关:turnOf、发货地址:shipperName、收货地址:receiveAddress
  167. //初始化请求参数
  168. // HashMap<String,Object> mapValue=new HashMap<>();
  169. // mapValue.put("orderNumber","WYSDD2021091000000001");
  170. // mapValue.put("capacityNumber","豫SB6238");
  171. // mapValue.put("resultOutGateTime","2021-11-17 14:20:19");
  172. // mapValue.put("turnOf","0");
  173. // mapValue.put("shipperName","四川达州钢铁集团有限");
  174. // mapValue.put("receiveAddress","长沙市");
  175. // return routeService.saveRoute(parem).toString();
  176. }
  177. public Integer addTmstruckReceiptResult(@RequestBody(required = false) Map<String,Object> map){
  178. BigDecimal alreadyExistsArrivalResult = tmstruckArrivalResultMapper.alreadyExistsArrivalResult((String) map.get("orderNumber"));
  179. if(alreadyExistsArrivalResult!=null){
  180. TmstruckReceiptResult tmstruckReceiptResult = new TmstruckReceiptResult();
  181. //获取运输订单号和收货点地址
  182. String orderNumber = (String) map.get("orderNumber");
  183. String resultArrivalAddress = (String) map.get("resultArrivalAddress");
  184. //获取空货箱照片、已签字的送货单照片
  185. String resultEmptyContainerPhoto = (String) map.get("url0");
  186. String resultSignedNotePhoto = (String) map.get("url1");
  187. tmstruckReceiptResult.setResultArrivalAddress(resultArrivalAddress);
  188. tmstruckReceiptResult.setResultEmptyContainerPhoto(resultEmptyContainerPhoto);
  189. tmstruckReceiptResult.setResultSignedNotePhoto(resultSignedNotePhoto);
  190. if(map.containsKey("url3")){
  191. //如果有,获取客户签收单照片
  192. String resultReceiveNotePhoto = (String) map.get("url3");
  193. tmstruckReceiptResult.setResultReceiveNotePhoto(resultReceiveNotePhoto);
  194. }
  195. //新增收货实绩主表
  196. BigDecimal receiptResultId = tmstruckReceiptResultService.addTmstruckReceiptResult(orderNumber, tmstruckReceiptResult);
  197. //初始化收货实绩子表信息
  198. TmstruckReceiptResultChild tmstruckReceiptResultChild = new TmstruckReceiptResultChild();
  199. //关联收货实绩主表
  200. tmstruckReceiptResultChild.setReceiptResultId(receiptResultId);
  201. //如果有,获取最多三张其他照片
  202. if(map.containsKey("fourFiles")){
  203. List<String> fourFiles = (List<String>) map.get("fourFiles");
  204. if(fourFiles.size()==0){}
  205. else if(fourFiles.size()==1){
  206. tmstruckReceiptResultChild.setOtherPhoto1(fourFiles.get(0));
  207. }else if(fourFiles.size()==2){
  208. tmstruckReceiptResultChild.setOtherPhoto1(fourFiles.get(0));
  209. tmstruckReceiptResultChild.setOtherPhoto2(fourFiles.get(1));
  210. }else {
  211. tmstruckReceiptResultChild.setOtherPhoto1(fourFiles.get(0));
  212. tmstruckReceiptResultChild.setOtherPhoto2(fourFiles.get(1));
  213. tmstruckReceiptResultChild.setOtherPhoto3(fourFiles.get(2));
  214. }
  215. }
  216. //新增收货实绩子表
  217. int i = tmstruckReceiptResultChildService.addTmstruckReceiptResultChild(tmstruckReceiptResultChild);
  218. return i;
  219. }else{
  220. return 4;
  221. }
  222. }
  223. @Override
  224. public int updateWarnSwitch(String warnSwitch,String radio) {
  225. // //查询数据库中是否有运输预警数据,有,则修改运输报警信息,无,则新增运输报警信息
  226. TmstruckInTransitWarn tmstruckInTransitWarn = tmstruckInTransitWarnMapper.selectByPrimaryKey(new BigDecimal(1));
  227. if(tmstruckInTransitWarn!=null){
  228. tmstruckInTransitWarn.setWarnSwitch(warnSwitch);
  229. tmstruckInTransitWarn.setWarnType(radio);
  230. return tmstruckInTransitWarnMapper.updateByPrimaryKey(tmstruckInTransitWarn);
  231. }else {
  232. TmstruckInTransitWarn tmstruckInTransitWarn1 = new TmstruckInTransitWarn();
  233. tmstruckInTransitWarn1.setWarnId(new BigDecimal(1));
  234. tmstruckInTransitWarn1.setWarnSwitch(warnSwitch);
  235. tmstruckInTransitWarn1.setInsertUsername("admin");
  236. tmstruckInTransitWarn1.setInsertTime(new Date());
  237. tmstruckInTransitWarn1.setUpdateUsername("admin");
  238. tmstruckInTransitWarn1.setUpdateTime(new Date());
  239. tmstruckInTransitWarn1.setInsertUpdateRemark("无");
  240. tmstruckInTransitWarn1.setWarnType("0");
  241. return tmstruckInTransitWarnMapper.insertSelective(tmstruckInTransitWarn1);
  242. }
  243. }
  244. }