OmstruckOrderServiceImpl.java 73 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.feign.AmsFeign;
  3. import com.steerinfo.dil.feign.IMFeign;
  4. import com.steerinfo.dil.feign.TmsTruckFeign;
  5. import com.steerinfo.dil.mapper.*;
  6. import com.steerinfo.dil.model.*;
  7. import com.steerinfo.dil.service.IOmstruckOrderService;
  8. import com.steerinfo.dil.util.DataChange;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import org.springframework.transaction.annotation.Transactional;
  12. import java.math.BigDecimal;
  13. import java.text.SimpleDateFormat;
  14. import java.util.*;
  15. /**
  16. * OmstruckOrder服务实现:
  17. *
  18. * @author generator
  19. * @version 1.0-SNAPSHORT 2021-10-15 09:37
  20. * 类描述
  21. * 修订历史:
  22. * 日期:2021-10-15
  23. * 作者:generator
  24. * 参考:
  25. * 描述:OmstruckOrder服务实现
  26. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  27. * @see null
  28. */
  29. @Service(value = "omstruckOrderService")
  30. public class OmstruckOrderServiceImpl implements IOmstruckOrderService {
  31. @Autowired
  32. private OmstruckOrderMapper omstruckOrderMapper;
  33. @Autowired
  34. private OmstruckOrderMaterialMapper omstruckOrderMaterialMapper;
  35. @Autowired
  36. private AmsFeign amsFeign;
  37. @Autowired
  38. private TmsTruckFeign tmsTruckFeign;
  39. @Autowired
  40. private IMFeign imFeign;
  41. @Autowired
  42. RmsCapacityMapper rmsCapacityMapper;
  43. @Autowired
  44. RmsDriverCapacityMapper rmsDriverCapacityMapper;
  45. @Autowired
  46. AmstruckInwardPlanMapper amstruckInwardPlanMapper;
  47. @Autowired
  48. OmstruckOrderSeparateServiceImpl omstruckOrderSeparateService;
  49. @Autowired
  50. OmstruckOrderSeparateMapper omstruckOrderSeparateMapper;
  51. /**
  52. * 用于远程调用运输订单新增
  53. *
  54. * @param omstruckOrder
  55. * @return
  56. */
  57. @Override
  58. public int insertSelective(OmstruckOrder omstruckOrder) {
  59. return omstruckOrderMapper.insertSelective(omstruckOrder);
  60. }
  61. /**
  62. * 查询所有运输订单
  63. * 获取已下发的运输订单 用于websocket
  64. *
  65. * @param map
  66. * @return
  67. */
  68. @Override
  69. public List<Map<String, Object>> getAllTruckOrder(Map<String, Object> map) {
  70. return omstruckOrderMapper.getAllTruckOrder(map);
  71. }
  72. /**
  73. * 新增运输订单
  74. *
  75. * @param map
  76. * @return
  77. */
  78. @Override
  79. @Transactional
  80. public int addPurOrder(Map<String, Object> map) {
  81. BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderType"));
  82. int i = 0;
  83. switch (orderType.intValue()) {
  84. case 1:
  85. i = dispatchSteelOrder(map);//新增销售订单
  86. break;
  87. case 2:
  88. i = dispatchSteelOrder(map);//新增水渣发运计划订单
  89. break;
  90. case 3:
  91. i = dispatchSteelOrder(map);//新增焦炭发运计划订单
  92. break;
  93. case 4:
  94. break;
  95. case 5:
  96. case 6:
  97. case 7:
  98. i = addCGPurOrders(map);
  99. break;
  100. case 8:
  101. i = addCGPurOrder(map); //新增采购运输订单
  102. break;
  103. case 9:
  104. break;
  105. case 10:
  106. break;
  107. case 11:
  108. }
  109. return i;
  110. }
  111. /**
  112. * 新增采购其他订单
  113. * @return
  114. */
  115. public int addCGPurOrders(Map<String, Object> map){
  116. //从map中获取司机运力列表
  117. List<Map<String, Object>> driverCapacityIdList = (List<Map<String, Object>>) map.get("driverCapacityIdList");
  118. BigDecimal purchaseOrderId = DataChange.dataToBigDecimal(map.get("purchaseOrderId"));
  119. //物资ID
  120. Object materialId = map.get("materialId");
  121. BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderType"));
  122. //预计进厂时间
  123. Date orderEntryTime = new Date((long) map.get("orderEntryTime"));
  124. int count = 0;
  125. for (Map<String, Object> capacityMap : driverCapacityIdList) {
  126. //添加运输订单
  127. OmstruckOrder omstruckOrder = generateOmsTruckOrder(map);
  128. omstruckOrder.setOrderPlanId(purchaseOrderId);
  129. omstruckOrder.setCapacityId(DataChange.dataToBigDecimal(capacityMap.get("capacityId"))); //添加运力排班ID
  130. omstruckOrder.setOrderEntryTime(orderEntryTime);
  131. count += omstruckOrderMapper.insertSelective(omstruckOrder);
  132. BigDecimal orderId = omstruckOrder.getOrderId();
  133. //添加运输订单子表
  134. capacityMap.put("materialId", materialId);
  135. capacityMap.put("orderType", orderType);
  136. addOrderMaterial(capacityMap,orderId);
  137. //添加总实绩
  138. capacityMap.put("orderId", orderId);
  139. tmsTruckFeign.addTotalResult(capacityMap);
  140. //更改运力状态
  141. }
  142. // pushMesToWebsocket();
  143. return count;
  144. }
  145. /**
  146. * 新增采购进口矿运输订单订单
  147. *
  148. * @param map
  149. * @return
  150. */
  151. @Transactional
  152. public int addCGPurOrder(Map<String, Object> map) {
  153. //生成运输订单号和主键
  154. OmstruckOrder omstruckOrder = generateOmsTruckOrder(map);
  155. Object orderEntryTime = map.get("orderEntryTime");
  156. if (orderEntryTime != null) {
  157. omstruckOrder.setOrderEntryTime(new Date((long) orderEntryTime)); //新增预计进厂时间
  158. }
  159. if (map.get("orderMaterialWeight") != null) {
  160. amsFeign.updateMaterial(map); //更改运输计划子表 增加已分配重量 减少未分配重量 feign调用ams
  161. }
  162. //添加运力Id
  163. BigDecimal capacityId = DataChange.dataToBigDecimal(map.get("capacityId"));
  164. omstruckOrder.setCapacityId(capacityId);
  165. //新增运输订单
  166. omstruckOrderMapper.insertSelective(omstruckOrder);
  167. //更新运力状态为待运输:2
  168. // map.put("capacityStatus", 2);
  169. // omstruckOrderMapper.updateCapacityByCarIdOrNum(map);
  170. //新增运输订单子表
  171. addOrderMaterial(map, omstruckOrder.getOrderId());
  172. //新增实绩总表关联订单 feign 调用truckTms
  173. map.put("orderId", omstruckOrder.getOrderId());
  174. tmsTruckFeign.addTotalResult(map);
  175. return 1;
  176. }
  177. /**
  178. * 生成运输订单实体类
  179. */
  180. public OmstruckOrder generateOmsTruckOrder(Map<String, Object> map) {
  181. BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderType"));
  182. OmstruckOrder omstruckOrder = new OmstruckOrder();
  183. //生成订单主键Id
  184. BigDecimal maxId = omstruckOrderMapper.selectMaxId();
  185. omstruckOrder.setOrderId(maxId);
  186. //生成运输订单号
  187. int id = maxId.intValue();
  188. String orderNumber = DataChange.generateEightDigitsNumber("WYSDD", id);
  189. omstruckOrder.setOrderNumber(orderNumber);
  190. //设置线路
  191. omstruckOrder.setLineId(DataChange.dataToBigDecimal(map.get("lineId")));
  192. //运单状态 刚分配默认为未下发
  193. omstruckOrder.setOrderStatus(new BigDecimal(3));
  194. switch (orderType.intValue()) {
  195. case 1:
  196. omstruckOrder.setOrderPlanId(DataChange.dataToBigDecimal(map.get("saleOrderMaterialId")));
  197. break;
  198. case 2:
  199. case 3:
  200. omstruckOrder.setOrderPlanId(DataChange.dataToBigDecimal(map.get("dayPlanId")));
  201. break;
  202. case 4:
  203. break;
  204. case 5:
  205. case 6:
  206. case 7:
  207. case 8:
  208. if (map.get("purchaseOrderId") != null)
  209. omstruckOrder.setOrderPlanId(DataChange.dataToBigDecimal(map.get("purchaseOrderId")));
  210. if (map.get("unloadPointId") != null) // 添加卸货点
  211. omstruckOrder.setUnloadPointId(DataChange.dataToBigDecimal(map.get("unloadPointId")));
  212. break;
  213. case 9:
  214. break;
  215. case 10:
  216. break;
  217. case 11:
  218. }
  219. //添加订单类型
  220. omstruckOrder.setOrderType(orderType);
  221. omstruckOrder.setInsertUsername("admin");
  222. omstruckOrder.setInsertTime(new Date());
  223. return omstruckOrder;
  224. }
  225. /**
  226. * 新增订单子表
  227. *
  228. * @param map
  229. * @param
  230. */
  231. public void addOrderMaterial(Map<String, Object> map, BigDecimal orderId) {
  232. BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderType"));
  233. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  234. switch (orderType.intValue()) {
  235. case 1:
  236. //获得销售物资id
  237. //生成子表主键
  238. omstruckOrderMaterial.setOrderMaterialId(omstruckOrderMaterialMapper.selectMaxId());
  239. Integer saleOrderMaterialId = (Integer) map.get("saleOrderMaterialId");
  240. //通过车序号id查找物资件数和物资重量
  241. Map<String, Object> map1 = omstruckOrderMapper.selectTheoreticalWeightAndMaterialNumber(saleOrderMaterialId);
  242. BigDecimal materialNumber = (BigDecimal) map1.get("materialNumber");
  243. BigDecimal weight = (BigDecimal) map1.get("weight");
  244. //设置物资理重和物资件数
  245. omstruckOrderMaterial.setOrderMaterialWeight(DataChange.dataToBigDecimal(weight));
  246. omstruckOrderMaterial.setOrderMaterialNumber(DataChange.dataToBigDecimal(materialNumber));
  247. //通过销售订单车序号id查找物资id
  248. List<Map<String, Object>> materialList = omstruckOrderMapper.selectMaterialIdBysaleOrderMaterialId(saleOrderMaterialId);
  249. for (int i = 0; i < materialList.size(); i++) {
  250. Map<String, Object> map2 = materialList.get(i);
  251. BigDecimal materialId = (BigDecimal) map2.get("materialId");
  252. omstruckOrderMaterial.setMaterialId(materialId);
  253. }
  254. //执行新增
  255. omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  256. break;
  257. case 2:
  258. //获取发运计划id
  259. //生成子表主键
  260. omstruckOrderMaterial.setOrderMaterialId(omstruckOrderMaterialMapper.selectMaxId());
  261. Integer dayPlanId = (Integer) map.get("dayPlanId");
  262. //设置订单id
  263. omstruckOrderMaterial.setOrderId(orderId);
  264. //根据发运计划id查找物资id和物资重量
  265. map = omstruckOrderMapper.selectMaterialIdAndWeightByDayPlanId(dayPlanId);
  266. BigDecimal materialId = (BigDecimal) map.get("materialId");
  267. BigDecimal materialWeight = (BigDecimal) map.get("materialWeight");
  268. //设置物资id
  269. omstruckOrderMaterial.setMaterialId(DataChange.dataToBigDecimal(materialId));
  270. //设置物资重量
  271. omstruckOrderMaterial.setOrderMaterialWeight(DataChange.dataToBigDecimal(materialWeight));
  272. omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  273. break;
  274. case 3:
  275. //获取发运计划id
  276. //生成子表主键
  277. omstruckOrderMaterial.setOrderMaterialId(omstruckOrderMaterialMapper.selectMaxId());
  278. Integer dayPlanId1 = (Integer) map.get("dayPlanId");
  279. //设置订单id
  280. omstruckOrderMaterial.setOrderId(orderId);
  281. //根据发运计划id查找物资id和物资重量
  282. map = omstruckOrderMapper.selectMaterialIdAndWeightByDayPlanId(dayPlanId1);
  283. BigDecimal materialId1 = (BigDecimal) map.get("materialId");
  284. BigDecimal materialWeight1 = (BigDecimal) map.get("materialWeight");
  285. //设置物资id
  286. omstruckOrderMaterial.setMaterialId(DataChange.dataToBigDecimal(materialId1));
  287. //设置物资重量
  288. omstruckOrderMaterial.setOrderMaterialWeight(DataChange.dataToBigDecimal(materialWeight1));
  289. omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  290. break;
  291. case 4:
  292. break;
  293. case 5:
  294. case 6:
  295. case 7:
  296. case 8:
  297. //生成子表主键
  298. omstruckOrderMaterial.setOrderMaterialId(omstruckOrderMaterialMapper.selectMaxId());
  299. omstruckOrderMaterial.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  300. omstruckOrderMaterial.setOrderId(orderId);
  301. Object orderMaterialWeight = map.get("orderMaterialWeight");
  302. if (orderMaterialWeight != null) {
  303. if (orderMaterialWeight.toString().length() != 0) {
  304. omstruckOrderMaterial.setOrderMaterialWeight(DataChange.dataToBigDecimal(map.get("orderMaterialWeight")));
  305. }
  306. }
  307. Object orderMaterialNumber = map.get("orderMaterialNumber");
  308. if(orderMaterialNumber != null ) {
  309. if (orderMaterialNumber.toString().length() != 0) {
  310. omstruckOrderMaterial.setOrderMaterialNumber(DataChange.dataToBigDecimal(map.get("orderMaterialNumber")));
  311. }
  312. }
  313. omstruckOrderMaterial.setInsertUsername("admin");
  314. omstruckOrderMaterial.setInsertTime(new Date());
  315. omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  316. break;
  317. case 9:
  318. break;
  319. case 10:
  320. break;
  321. case 11:
  322. }
  323. }
  324. /**
  325. * 修改运输订单 和订单子表
  326. *
  327. * @param map
  328. * @return
  329. */
  330. @Override
  331. @Transactional
  332. public int updateOrder(Map<String, Object> map) {
  333. //修改运输订单运力ID
  334. OmstruckOrder omstruckOrder = new OmstruckOrder();
  335. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  336. BigDecimal orderType;
  337. if(map.get("orderType") == null){
  338. //查询订单类型
  339. orderType = new BigDecimal(omstruckOrderMapper.getOrderTypeByOrderNumber(orderId));
  340. }else{
  341. orderType = DataChange.dataToBigDecimal(map.get("orderType"));
  342. }
  343. omstruckOrder.setOrderId(orderId);
  344. if (map.get("unloadPointId") != null) {
  345. omstruckOrder.setUnloadPointId(DataChange.dataToBigDecimal(map.get("unloadPointId")));
  346. }
  347. if (map.get("capacityId") != null) {
  348. omstruckOrder.setCapacityId(DataChange.dataToBigDecimal(map.get("capacityId")));
  349. }
  350. if(map.get("orderEntryTime") != null){
  351. omstruckOrder.setOrderEntryTime(new Date((long) map.get("orderEntryTime")));
  352. }
  353. if(map.get("unloadPointId")!=null || map.get("capacityId") != null || map.get("orderEntryTime") != null){
  354. omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  355. }
  356. switch (orderType.intValue()) {
  357. case 1:
  358. break;
  359. case 2:
  360. break;
  361. case 3:
  362. break;
  363. case 4:
  364. break;
  365. case 5:
  366. case 6:
  367. case 7:
  368. case 8:
  369. //修改运输订单子表物资重量
  370. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  371. //添加子表主键 通过订单ID查询出子表主键
  372. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.getOrderMaterialIdByOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
  373. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  374. if (map.get("orderMaterialWeight") != null) {
  375. omstruckOrderMaterial.setOrderMaterialWeight(DataChange.dataToBigDecimal(map.get("orderMaterialWeight")));
  376. if(orderType.intValue() == 8)
  377. amsFeign.updateMaterial(map);//修改运输计划子表 已分配未分配重量
  378. }
  379. if(map.get("orderMaterialNumber") != null) {
  380. omstruckOrderMaterial.setOrderMaterialNumber(DataChange.dataToBigDecimal(map.get("orderMaterialNumber")));
  381. }
  382. if (map.get("materialId") != null) {
  383. omstruckOrderMaterial.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  384. }
  385. if(map.get("orderMaterialWeight") != null || map.get("orderMaterialNumber") != null || map.get("materialId") != null){
  386. omstruckOrderMaterialMapper.updateByPrimaryKeySelective(omstruckOrderMaterial);
  387. }
  388. break;
  389. case 9:
  390. break;
  391. case 10:
  392. break;
  393. case 11:
  394. }
  395. return 1;
  396. }
  397. /**
  398. * 逻辑删除未下发订单
  399. *
  400. * @param map
  401. * @return
  402. */
  403. @Override
  404. @Transactional
  405. public int deleteOrder(Map<String, Object> map) {
  406. OmstruckOrder omstruckOrder = new OmstruckOrder();
  407. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
  408. //设置状态为逻辑删除:7
  409. omstruckOrder.setOrderStatus(new BigDecimal(7));
  410. int i = omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  411. //若是传来物资重量则修改已分配未分配重量
  412. if (map.get("orderMaterialWeight") != null) {
  413. amsFeign.updateMaterial(map); //feign调用
  414. }
  415. // //通过车牌号修改运输状态为空闲中 0
  416. // String capacityNumber = (String) map.get("capacityNumber");
  417. // HashMap<String, Object> changeStatusMap = new HashMap<>();
  418. // changeStatusMap.put("capacityNumber", capacityNumber);
  419. // changeStatusMap.put("capacityStatus", 0);
  420. // int i1 = omstruckOrderMapper.updateCapacityByCarIdOrNum(changeStatusMap);
  421. return i;
  422. }
  423. /**
  424. * 运单派发、下发
  425. * 运单ID
  426. *
  427. * @param mapValue
  428. * @return
  429. */
  430. @Override
  431. @Transactional
  432. public int dispatchOrder(Map<String, Object> mapValue) {
  433. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  434. int result = 0;
  435. for (Map<String, Object> map : mapList) {
  436. Integer orderId = (Integer) map.get("orderId");
  437. OmstruckOrder omstruckOrder = new OmstruckOrder();
  438. omstruckOrder.setOrderId(new BigDecimal(orderId));
  439. //生成订单下发时间 修改订单表
  440. omstruckOrder.setOrderIssueTime(new Date());
  441. //设置状态为已下发:4
  442. omstruckOrder.setOrderStatus(new BigDecimal(4));
  443. //下发 推送数据给 websocket
  444. pushMesToWebsocket(map);
  445. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  446. }
  447. return result;
  448. }
  449. /**
  450. * 发送消息到 websocket 推送消息
  451. * orderId 订单Id (unloadPointId)卸货点Id
  452. * @return
  453. */
  454. public void pushMesToWebsocket(Map<String, Object> map) {
  455. Map<String, Object> mesMap = omstruckOrderMapper.pushMesToWebsocket(map);
  456. //添加消息实体
  457. HashMap<Object, Object> mapp = new HashMap<>();
  458. mapp.put("messageType", 3);
  459. mapp.put("sendPerson", "system");
  460. mapp.put("receivePerson", mesMap.get("capacityNumber"));
  461. mapp.put("messageContent", mesMap);
  462. mapp.put("createTime", new Date());
  463. ArrayList<Object> list = new ArrayList<>();
  464. list.add(mapp);
  465. //调用websocket接口推送
  466. HashMap<Object, Object> sendMap = new HashMap<>();
  467. //将消息实体放入list中存到map中
  468. sendMap.put("messages", list);
  469. String s = imFeign.sendToUser(sendMap);
  470. System.out.println(s);
  471. }
  472. /**
  473. * 销售物流,下发订单
  474. *
  475. * @param map
  476. * @return
  477. */
  478. @Override
  479. public int dispatchOrderForSale(Map<String, Object> map) {
  480. OmstruckOrder omstruckOrder = new OmstruckOrder();
  481. Integer orderId = (Integer) map.get("orderId");
  482. Integer orderType = (Integer) map.get("orderType");
  483. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(orderId));
  484. if (orderType == 2 || orderType == 3) {
  485. Integer loadId = (Integer) map.get("LoadId");
  486. if (loadId != null) {
  487. //根据运输订单id查找装车实绩id
  488. omstruckOrder.setUnloadPointId(DataChange.dataToBigDecimal(loadId));
  489. }
  490. }
  491. //设置下发状态
  492. omstruckOrder.setOrderIssueTime(new Date());
  493. omstruckOrder.setOrderStatus(new BigDecimal(4));
  494. // pushMesToWebsocket(map); //下发 推送数据给 websocket
  495. return omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  496. }
  497. @Override
  498. public List<Map<String, Object>> selectWaterSlagForOrder(Map<String, Object> map) {
  499. return omstruckOrderMapper.selectWaterSlagForOrder(map);
  500. }
  501. @Override
  502. public List<Map<String, Object>> selectCokeRailPlanForOrder(Map<String, Object> map) {
  503. return omstruckOrderMapper.selectCokeRailPlanForOrder(map);
  504. }
  505. /**
  506. * 司机接单、拒绝 0:拒绝 1:接收
  507. * 需要接收参数 主键Id 与 接收拒绝操作码
  508. *
  509. * @param map
  510. * @return
  511. */
  512. @Override
  513. @Transactional
  514. public int driverReceiveOrRefuse(Map<String, Object> map) {
  515. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  516. OmstruckOrder omstruckOrder = new OmstruckOrder();
  517. if((Integer) map.get("orderReceiveStatus") == 1){
  518. List<Integer> orderIdList = omstruckOrderMapper.getReceiveOrderIdListByCapacityNum((String) map.get("capacityNumber"));
  519. if(orderIdList.size() > 0){
  520. return 0;
  521. }
  522. omstruckOrder.setOrderStatus(new BigDecimal(5)); //5 :已接收
  523. //添加各个实绩
  524. //通过订单ID查询信息
  525. Map<String, Object> orderMessage = omstruckOrderSeparateMapper.getOrderMessagge(orderId);
  526. omstruckOrderSeparateService.addAllSonResult(orderMessage);
  527. }else { //其他状态都视为 拒绝接单
  528. omstruckOrder.setOrderStatus(new BigDecimal(6));
  529. //添加拒绝原因
  530. omstruckOrder.setInsertUpdateRemark((String) map.get("insertUpdateRemark"));
  531. // //将司机运力置为空闲 通过运输订单Id 查询运力ID
  532. // BigDecimal capacityId = omstruckOrderMapper.getCapacityIdByOrderOrNum(map);
  533. // map.put("capacityId", capacityId);
  534. // map.put("capacityStatus", 0);
  535. // omstruckOrderMapper.updateCapacityByCarIdOrNum(map);
  536. }
  537. omstruckOrder.setOrderId(orderId);
  538. //生成接收/拒绝时间
  539. Date receiveTime = new Date();
  540. omstruckOrder.setOrderReceiveRefuseTime(receiveTime);
  541. //计算司机从派单到操作时长
  542. Date issueTime = omstruckOrderMapper.getInsertTimeById(orderId.intValue());
  543. long time = receiveTime.getTime() - issueTime.getTime();
  544. long min = time / (1000 * 60);
  545. omstruckOrder.setOrderCommunicationDuration(new BigDecimal(min));
  546. return omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  547. }
  548. //根据承运商获取销售订单
  549. @Override
  550. public List<Map<String, Object>> selectSaleOrderForCarrier(Map<String, Object> map) {
  551. Integer carrierId = (Integer) map.get("carrierId");
  552. List<Map<String, Object>> maps = omstruckOrderMapper.selectSaleMaterialIdByCarrierId(carrierId);
  553. List<Map<String, Object>> list = null;
  554. for (Map<String, Object> map1 : maps) {
  555. BigDecimal saleOrderMaterialId = (BigDecimal) map1.get("saleOrderMaterialId");
  556. list = omstruckOrderMapper.selectSaleBySaleOrderMaterialId(saleOrderMaterialId.intValue());
  557. }
  558. return list;
  559. }
  560. /**
  561. * 查询已接收的焦炭发运计划
  562. *
  563. * @param
  564. * @return
  565. */
  566. @Override
  567. public List<Map<String, Object>> selectCokeDayPlanAndRecived(Map<String, Object> map) {
  568. return omstruckOrderMapper.selectCokeDayPlanAndRecived(map);
  569. }
  570. /**
  571. * 查询已接收的水渣发运计划
  572. *
  573. * @param
  574. * @return
  575. */
  576. @Override
  577. public List<Map<String, Object>> selectWaterSlagDayPlanAndRecived(Integer carrierId) {
  578. return omstruckOrderMapper.selectWaterSlagDayPlanAndRecived(carrierId);
  579. }
  580. /**
  581. * 司机接单推送数据
  582. * 车牌号
  583. *
  584. * @param
  585. * @return
  586. */
  587. @Override
  588. public List<Map<String, Object>> sendMesToDriver(Map<String, Object> map) {
  589. //通过车牌号匹配运力ID
  590. BigDecimal capacityId = omstruckOrderMapper.getCapacityIdByCapacityNum((String) map.get("capacityNumber"));
  591. if (capacityId == null) {
  592. return null;
  593. }
  594. map.put("capacityId", capacityId);
  595. //通过运力Id匹配 已下发的运输订单
  596. List<Map<String, Object>> truckOrderByCapacityNum;
  597. if ((Integer) map.get("orderType") == 1 || (Integer) map.get("orderType") == 2) {
  598. truckOrderByCapacityNum = omstruckOrderMapper.getSaleTruckOrderByCapacityNum(map);
  599. } else {
  600. truckOrderByCapacityNum = omstruckOrderMapper.getTruckOrderByCapacityNum(map);
  601. }
  602. return truckOrderByCapacityNum;
  603. }
  604. /**
  605. * 得到作业时间和地点
  606. *
  607. * @param orderId
  608. * @return
  609. */
  610. @Override
  611. public List<Map<String, Object>> selectPlaceAndTime(BigDecimal orderId) {
  612. List<Map<String, Object>> mapList = omstruckOrderMapper.selectPlaceAndTime(orderId);
  613. Map<String, Object> map = mapList.get(0);
  614. String entryGatepost = (String) map.get("entryGatepost");
  615. Date entryTime = (Date) map.get("entryTime");
  616. String entryResult = entryGatepost + "/" + entryTime;
  617. String grossCalculate = (String) map.get("grossCalculate");
  618. Date grossTime = (Date) map.get("grossTime");
  619. String grossResult = grossCalculate + "/" + grossTime;
  620. String unloadWarhouse = (String) map.get("unloadWarhouse");
  621. Date unloadTime = (Date) map.get("unloadTime");
  622. String unloadResult = unloadWarhouse + "/" + unloadTime;
  623. String tareCalculate = (String) map.get("tareCalculate");
  624. Date tareTime = (Date) map.get("tareTime");
  625. String tareResult = tareCalculate + "/" + tareTime;
  626. String leaveGatepost = (String) map.get("leaveGatepost");
  627. Date outTime = (Date) map.get("outTime");
  628. String leaveResult = leaveGatepost + "/" + outTime;
  629. String receiptWarhouse = (String) map.get("receiptWarhouse");
  630. Date receiptTime = (Date) map.get("receiptTime");
  631. String receiptResult = receiptWarhouse + "/" + receiptTime;
  632. List<Map<String, Object>> resultList = new ArrayList<>();
  633. Map<String, Object> map1 = new HashMap<>();
  634. map1.put("title", "进厂门岗/时间");
  635. map1.put("desc", entryResult);
  636. resultList.add(map1);
  637. Map<String, Object> map2 = new HashMap<>();
  638. map2.put("title", "毛重衡器/时间");
  639. map2.put("desc", grossResult);
  640. resultList.add(map2);
  641. Map<String, Object> map3 = new HashMap<>();
  642. map3.put("title", "卸货地点/时间");
  643. map3.put("desc", unloadResult);
  644. resultList.add(map3);
  645. Map<String, Object> map4 = new HashMap<>();
  646. map4.put("title", "皮重衡器/时间");
  647. map4.put("desc", tareResult);
  648. resultList.add(map4);
  649. Map<String, Object> map5 = new HashMap<>();
  650. map5.put("title", "出厂门岗/时间");
  651. map5.put("desc", leaveResult);
  652. resultList.add(map5);
  653. if ((Integer) map.get("orderType") == 1) {
  654. Map<String, Object> map6 = new HashMap<>();
  655. map5.put("title", "异地库/时间");
  656. map5.put("desc", receiptResult);
  657. resultList.add(map6);
  658. }
  659. Map<String, Object> map7 = new HashMap<>();
  660. BigDecimal orderLineSequence = (BigDecimal) map.get("orderLineSequence");
  661. map7.put("orderLineSequence", orderLineSequence);
  662. resultList.add(map7);
  663. return resultList;
  664. }
  665. /**
  666. * 查询已下发未接受的销售订单信息
  667. *
  668. * @param orderType
  669. * @return
  670. */
  671. @Override
  672. public List<Map<String, Object>> getOrderUnReceive(BigDecimal orderType) {
  673. return omstruckOrderMapper.getOrderUnReceive(orderType);
  674. }
  675. /**
  676. * 查询已下发已接受的销售订单信息
  677. *
  678. * @param orderType
  679. * @return
  680. */
  681. @Override
  682. public List<Map<String, Object>> getOrderReceived(BigDecimal orderType) {
  683. return omstruckOrderMapper.getOrderReceived(orderType);
  684. }
  685. /**
  686. * 分派钢材销售订单
  687. *
  688. * @param map
  689. * @return
  690. */
  691. @Override
  692. public int dispatchSteelOrder(Map<String, Object> map) {
  693. //新增运单(销售钢材订单)
  694. //生成运输订单号和主键以及绑定运力
  695. OmstruckOrder omstruckOrder = generateOmsTruckOrder(map);
  696. //设置线路 遗留问题,设置为进门门岗
  697. omstruckOrder.setLineId(new BigDecimal(1));
  698. //新增运输订单
  699. omstruckOrderMapper.insertSelective(omstruckOrder);
  700. //更新运力状态为待运输:2
  701. // map.put("capacityStatus", 2);
  702. // omstruckOrderMapper.updateCapacityById(map);
  703. //新增运输订单子表
  704. addOrderMaterial(map, omstruckOrder.getOrderId());
  705. //新增实绩总表关联订单 feign调用
  706. map.put("orderId", omstruckOrder.getOrderId());
  707. tmsTruckFeign.addTotalResult(map);
  708. return 6;
  709. }
  710. //设置销售订单下发状态
  711. @Override
  712. public int IssueSteelOrder(Map<String, Object> map) {
  713. //设置下发状态
  714. OmstruckOrder omstruckOrder = new OmstruckOrder();
  715. Integer orderId = (Integer) map.get("orderId");
  716. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(orderId));
  717. omstruckOrder.setOrderIssueTime(new Date());
  718. //设置下发状态值:4
  719. omstruckOrder.setOrderStatus(new BigDecimal(4));
  720. return 2;
  721. }
  722. //销售模块查看所有订单
  723. @Override
  724. public List<Map<String, Object>> selectAllOrderForSale(Map<String, Object> map) {
  725. //map获取承运商
  726. Integer carrierId = (Integer) map.get("carrierId");
  727. Integer saleOrderMaterialId = (Integer) map.get("saleOrderMaterialId");
  728. List<Map<String, Object>> maps = omstruckOrderMapper.selectSaleMaterialIdByCarrierId(carrierId);
  729. //根据车序号查找运输订单
  730. List<Map<String, Object>> mapList = null;
  731. List<Map<String, Object>> maps1 = new ArrayList<>();
  732. //判断获取的车序号是否属于承运商
  733. for (Map<String, Object> map1 : maps) {
  734. BigDecimal compareNum = DataChange.dataToBigDecimal(map1.get("saleOrderMaterialId"));
  735. if (compareNum.intValue() == saleOrderMaterialId) {
  736. mapList = omstruckOrderMapper.selectAllOrderForSale(map);
  737. for (int i = 0; i < mapList.size(); i++) {
  738. Map<String, Object> map2 = mapList.get(i);
  739. if (map2.get("orderId") == null) {
  740. return maps1;
  741. }
  742. }
  743. return mapList;
  744. }
  745. }
  746. return maps1;
  747. }
  748. @Override
  749. public List<Map<String, Object>> selectTransportOrderForSale(Map<String, Object> map) {
  750. return omstruckOrderMapper.selectTransportOrderForSale(map);
  751. }
  752. @Override
  753. public List<Map<String, Object>> selectSteelSaleForCarrier(Map<String, Object> map) {
  754. return omstruckOrderMapper.selectSteelSaleForCarrier(map);
  755. }
  756. //根据销售订单id查找信息
  757. @Override
  758. public List<Map<String, Object>> selectInfoBySaleOrderId(Integer saleOrderId) {
  759. return omstruckOrderMapper.selectInfoBySaleOrderId(saleOrderId);
  760. }
  761. @Override
  762. public List<Map<String, Object>> selectCokeRailPlan(Map<String, Object> map) {
  763. return omstruckOrderMapper.selectCokeRailPlan(map);
  764. }
  765. @Override
  766. public List<Map<String, Object>> selectInfoByDayPlanId(Map<String, Object> map) {
  767. return omstruckOrderMapper.selectInfoByDayPlanId(map);
  768. }
  769. /**
  770. * 查找司机排班表信息
  771. *
  772. * @param map
  773. * @return
  774. */
  775. @Override
  776. public List<Map<String, Object>> selectCapacityAndDriver(Map<String, Object> map) {
  777. return omstruckOrderMapper.selectCapacityAndDriver(map);
  778. }
  779. /**
  780. * 查询所有运力信息
  781. *
  782. * @return
  783. */
  784. @Override
  785. public List<Map<String, Object>> getAllCapacity(Map<String, Object> map) {
  786. return omstruckOrderMapper.getAllCapacity(map);
  787. }
  788. /**
  789. * 用于后台展示司机接单未接单数据
  790. *
  791. * @param map
  792. * @return
  793. */
  794. @Override
  795. public List<Map<String, Object>> getReceiveRefuseOrder(Map<String, Object> map) {
  796. return omstruckOrderMapper.getTruckOrderByCapacityNum(map);
  797. }
  798. /**
  799. * 通过运输订单号查询运单所有信息 包含作业路径名称
  800. *
  801. * @param map 传运输订单号
  802. * @return
  803. */
  804. @Override
  805. public List<Map<String, Object>> getOrderMesByOrderNum(Map<String, Object> map) {
  806. return omstruckOrderMapper.getTruckOrderByCapacityNum(map);
  807. }
  808. /**
  809. * 查询所有司机已拒绝的订单
  810. * 车牌号
  811. *
  812. * @param map
  813. * @return
  814. */
  815. @Override
  816. public List<Map<String, Object>> getReceiveRefuseOrderByCapacityId(Map<String, Object> map) {
  817. //通过车牌号查询运力Id
  818. BigDecimal capacityId = omstruckOrderMapper.getCapacityIdByCapacityNum((String) map.get("capacityNumber"));
  819. map.put("capacityId", capacityId);
  820. return omstruckOrderMapper.getReceiveRefuseOrderByCapacityId(map);
  821. }
  822. /**
  823. * 通过运单号查询订单详情
  824. * 运输订单号
  825. *
  826. * @param
  827. * @return
  828. */
  829. @Override
  830. public List<Map<String, Object>> getOrderByOrderId(BigDecimal orderId) {
  831. return omstruckOrderMapper.getOrderByOrderId(orderId);
  832. }
  833. /**
  834. * 查看运输派单
  835. *
  836. * @param map
  837. * @return
  838. */
  839. @Override
  840. public List<Map<String, Object>> getTransportDispatch(Map<String, Object> map) {
  841. List<Map<String, Object>> transportDispatch = omstruckOrderMapper.getTransportDispatch(map);
  842. for (Map<String, Object> dispatch : transportDispatch) {
  843. BigDecimal orderMaterialWeight = (BigDecimal) dispatch.get("orderMaterialWeight");
  844. if(orderMaterialWeight==null){
  845. BigDecimal orderMaterialNumber = (BigDecimal) dispatch.get("orderMaterialNumber");
  846. dispatch.replace("orderMaterialWeight",orderMaterialNumber);
  847. }
  848. }
  849. return transportDispatch;
  850. }
  851. /**
  852. * 用于更新路段顺序号
  853. *
  854. * @param map orderId
  855. * @return
  856. */
  857. public int updateOrderLineSequence(Map<String, Object> map, Integer lineSequence) {
  858. OmstruckOrder omstruckOrder = new OmstruckOrder();
  859. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
  860. omstruckOrder.setOrderLineSequence(new BigDecimal(lineSequence));
  861. return omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  862. }
  863. //新增内转运输订单
  864. @Override
  865. public int insert(OmstruckOrder omstruckOrder) {
  866. //生成订单主键Id
  867. BigDecimal maxId = omstruckOrderMapper.selectMaxId();
  868. omstruckOrder.setOrderId(maxId);
  869. //生成运输订单号
  870. int id = maxId.intValue();
  871. String orderNumber = DataChange.generateEightDigitsNumber("WYSDD", id);
  872. omstruckOrder.setOrderNumber(orderNumber);
  873. //设置状态为未下发
  874. omstruckOrder.setOrderStatus(new BigDecimal(3));
  875. //设置运输订单的类型
  876. omstruckOrder.setOrderType(new BigDecimal(11));
  877. omstruckOrder.setInsertTime(new Date());
  878. omstruckOrder.setInsertUsername("admin");
  879. return omstruckOrderMapper.insertSelective(omstruckOrder);
  880. }
  881. //通过物资id查询批次表匹配最新的批次,关联最新的采购订单号
  882. @Override
  883. public Map<String, Object> selectNewOrderId(Map<String, Object> map) {
  884. return omstruckOrderMapper.selectNewOrderId(map);
  885. }
  886. //app司机接单查询数据
  887. @Override
  888. public Map<String, Object> sendMesToDriverApp(Map<String, Object> map) {
  889. //通过车牌号匹配运力ID
  890. BigDecimal capacityId = omstruckOrderMapper.getCapacityIdByCapacityNum((String) map.get("capacityNumber"));
  891. map.put("capacityId", capacityId);
  892. if (capacityId == null) {
  893. return null;
  894. }
  895. //通过运力Id匹配 已下发的运输订单
  896. Map<String, Object> truckOrderByCapacityNum = new HashMap<>();
  897. if ((Integer) map.get("orderType") == 1 || (Integer) map.get("orderType") == 2) {
  898. //查询主干信息
  899. Map<String, Object> map1 = omstruckOrderMapper.getSaleTruckOrderByCapacityId(map);
  900. //查询物资信息
  901. List<Map<String, Object>> mapList = omstruckOrderMapper.getSaleTruckOrderByCapacityNumMaterial(map);
  902. truckOrderByCapacityNum.put("orderf", map1);
  903. truckOrderByCapacityNum.put("materialList", mapList);
  904. }
  905. return truckOrderByCapacityNum;
  906. }
  907. @Override
  908. public BigDecimal selectCapacityId(BigDecimal carrierId, String capacityNumber) {
  909. return omstruckOrderMapper.selectCapacityId(carrierId, capacityNumber);
  910. }
  911. /**
  912. * 车牌号下拉
  913. *
  914. * @return
  915. */
  916. @Override
  917. public List<Map<String, Object>> getDriverCapacity() {
  918. return omstruckOrderMapper.getDriverCapacity();
  919. }
  920. /**
  921. * 派单信息
  922. *
  923. * @param dispatchId
  924. * @return
  925. */
  926. @Override
  927. public Map<String, Object> getTruckNoDispatchMap(Integer dispatchId) {
  928. Map<String, Object> map = omstruckOrderMapper.getTruckNoDispatchMap(new BigDecimal(dispatchId));
  929. List<BigDecimal> orderIdList = omstruckOrderMapper.getNullOrNotNull(new BigDecimal(dispatchId));
  930. if (orderIdList != null || orderIdList.size() != 0) {
  931. return null;
  932. }
  933. List<Map<String, Object>> materialMessages = omstruckOrderMapper.getMaterialMessages(new BigDecimal(dispatchId));
  934. String allMaterialName = "";
  935. String allMaterialNumber = "";
  936. String allMaterialTheoreticalWeight = "";
  937. String allMaterialSpecificationModel = "";
  938. if (materialMessages == null || materialMessages.size() == 0) {
  939. } else {
  940. for (Map<String, Object> materialMap : materialMessages) {
  941. if (materialMap != null) {
  942. String materialName = (String) materialMap.get("materialName");
  943. allMaterialName += materialName + "/";
  944. String materialTheoreticalWeight = materialMap.get("materialTheoreticalWeight").toString();
  945. if (materialTheoreticalWeight != null) {
  946. allMaterialTheoreticalWeight += materialTheoreticalWeight + "/";
  947. }
  948. String saleOrderMaterialNumber = materialMap.get("saleOrderMaterialNumber").toString();
  949. allMaterialNumber += saleOrderMaterialNumber + "/";
  950. String specificationModel = materialMap.get("specificationModel").toString();
  951. if (specificationModel != null) {
  952. allMaterialSpecificationModel += specificationModel + "/";
  953. }
  954. }
  955. }
  956. String subMaterialName = null;
  957. String subMaterialNumber = null;
  958. String subMaterialTheoreticalWeight = null;
  959. String subMaterialSpecificationModel = null;
  960. if (allMaterialName.length() >= 2) {
  961. subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 2);
  962. }
  963. if (allMaterialName.length() < 2) {
  964. subMaterialName = allMaterialName;
  965. }
  966. if (allMaterialNumber.length() >= 2) {
  967. subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 2);
  968. }
  969. if (allMaterialNumber.length() < 2) {
  970. subMaterialNumber = allMaterialNumber;
  971. }
  972. if (allMaterialTheoreticalWeight.length() >= 2) {
  973. subMaterialTheoreticalWeight = allMaterialTheoreticalWeight.substring(0, allMaterialTheoreticalWeight.length() - 2);
  974. }
  975. if (allMaterialTheoreticalWeight.length() < 2) {
  976. subMaterialTheoreticalWeight = allMaterialTheoreticalWeight;
  977. }
  978. if (allMaterialSpecificationModel.length() >= 2) {
  979. subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 2);
  980. }
  981. if (allMaterialSpecificationModel.length() < 2) {
  982. subMaterialSpecificationModel = allMaterialSpecificationModel;
  983. }
  984. map.put("allMaterialName", subMaterialName);
  985. map.put("allMaterialNumber", subMaterialNumber);
  986. map.put("allMaterialTheoreticalWeight", subMaterialTheoreticalWeight);
  987. map.put("allMaterialSpecificationModel", subMaterialSpecificationModel);
  988. }
  989. return map;
  990. }
  991. /**
  992. * 承运商分派运输订单给司机
  993. * @param dispatchId
  994. * @param orderType
  995. * @param capacityNumber
  996. * @param carrierId
  997. * @return
  998. */
  999. @Override
  1000. public int addAppTruckOrder(Integer dispatchId, Integer orderType, String capacityNumber, Integer carrierId) {
  1001. OmstruckOrder omstruckOrder = new OmstruckOrder();
  1002. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  1003. Map<String,Object> orderIdMap = new HashMap<>();
  1004. orderIdMap.put("orderId",orderId);
  1005. tmsTruckFeign.addTotalResult(orderIdMap);
  1006. omstruckOrder.setOrderId(orderId);
  1007. BigDecimal saleOrderMaterialId = omstruckOrderMapper.getSaleMaterialId(new BigDecimal(dispatchId));
  1008. omstruckOrder.setOrderPlanId(saleOrderMaterialId);
  1009. String orderNumber = DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue());
  1010. omstruckOrder.setOrderNumber(orderNumber);
  1011. omstruckOrder.setOrderIssueTime(new Date());
  1012. omstruckOrder.setOrderStatus(new BigDecimal(4));
  1013. omstruckOrder.setInsertTime(new Date());
  1014. omstruckOrder.setUpdateTime(new Date());
  1015. omstruckOrder.setInsertUsername("admin");
  1016. omstruckOrder.setUpdateUsername("admin");
  1017. omstruckOrder.setInsertUpdateRemark("无");
  1018. omstruckOrder.setDeleted(new BigDecimal(0));
  1019. omstruckOrder.setOrderType(new BigDecimal(orderType));
  1020. BigDecimal capacityId = omstruckOrderMapper.getCapacityId(capacityNumber);
  1021. omstruckOrder.setCapacityId(capacityId);
  1022. // omstruckOrder.setCarrierId();
  1023. // BigDecimal driverCapacityId = omstruckOrderMapper.getDriverCapacityId(capacityId);
  1024. // omstruckOrder.setDriverCapacityId(driverCapacityId);
  1025. // RmsDriverCapacity rmsDriverCapacity = rmsDriverCapacityMapper.selectByPrimaryKey(driverCapacityId);
  1026. // rmsDriverCapacity.setCarrierId(new BigDecimal(carrierId));
  1027. // rmsDriverCapacityMapper.updateByPrimaryKeySelective(rmsDriverCapacity);
  1028. List<Map<String, Object>> mapList = omstruckOrderMapper.getMaterialMessages(new BigDecimal(dispatchId));
  1029. if (mapList != null && mapList.size() != 0) {
  1030. for (Map<String, Object> map : mapList) {
  1031. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  1032. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  1033. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  1034. omstruckOrderMaterial.setOrderId(orderId);
  1035. omstruckOrderMaterial.setInsertTime(new Date());
  1036. omstruckOrderMaterial.setUpdateTime(new Date());
  1037. omstruckOrderMaterial.setInsertUsername("admin");
  1038. omstruckOrderMaterial.setUpdateUsername("admin");
  1039. omstruckOrderMaterial.setInsertUpdateRemark("无");
  1040. if (map != null) {
  1041. BigDecimal materialTheoreticalWeight = (BigDecimal) map.get("materialTheoreticalWeight");
  1042. BigDecimal saleOrderMaterialNumber = (BigDecimal) map.get("saleOrderMaterialNumber");
  1043. BigDecimal materialId = (BigDecimal) map.get("materialId");
  1044. omstruckOrderMaterial.setOrderMaterialWeight(materialTheoreticalWeight);
  1045. omstruckOrderMaterial.setMaterialId(materialId);
  1046. omstruckOrderMaterial.setOrderMaterialNumber(saleOrderMaterialNumber);
  1047. }
  1048. omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  1049. }
  1050. }
  1051. // RmsCapacity rmsCapacity = new RmsCapacity();
  1052. // rmsCapacity.setCapacityId(capacityId);
  1053. // rmsCapacity.setCapacityStatus(new BigDecimal(2));
  1054. // rmsCapacityMapper.updateByPrimaryKeySelective(rmsCapacity);
  1055. int result = omstruckOrderMapper.insertSelective(omstruckOrder);
  1056. // 调用websocket推送数据给司机
  1057. pushMesToWebsocket(orderIdMap);
  1058. return result;
  1059. }
  1060. /**
  1061. * 根据运单id关闭订单
  1062. * @param orderId
  1063. * @return
  1064. */
  1065. @Override
  1066. public int closeOmstruckOrder(BigDecimal orderId) {
  1067. OmstruckOrder omstruckOrder = omstruckOrderMapper.selectByPrimaryKey(orderId);
  1068. omstruckOrder.setOrderStatus(new BigDecimal(7));
  1069. int result = omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  1070. return result;
  1071. }
  1072. /**
  1073. * 查询所有车牌号和司机
  1074. * @param mapValue
  1075. * @return
  1076. */
  1077. @Override
  1078. public List<Map<String, Object>> getCapacityAndDriverList(Map<String, Object> mapValue) {
  1079. return omstruckOrderMapper.getCapacityAndDriver(mapValue);
  1080. }
  1081. @Override
  1082. public int closeOrder(Map<String, Object> map) {
  1083. Integer orderId =(Integer) map.get("orderId");
  1084. OmstruckOrder omstruckOrder=new OmstruckOrder();
  1085. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(orderId));
  1086. omstruckOrder.setOrderStatus(new BigDecimal(8));
  1087. omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  1088. return 1;
  1089. }
  1090. /**
  1091. * 分解内转计划(新增运输订单)
  1092. * @param mapValue
  1093. * @return
  1094. */
  1095. @Transactional
  1096. @Override
  1097. public int addInwardOrder(Map<String, Object> mapValue) {
  1098. int result = 0;
  1099. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  1100. String planId = (String) mapValue.get("planId");
  1101. Integer lineId = (Integer) mapValue.get("lineId");
  1102. String orderType = (String) mapValue.get("orderType");
  1103. Integer carrierId = (Integer) mapValue.get("carrierId");
  1104. AmstruckInwardPlan amstruckInwardPlan = amstruckInwardPlanMapper.selectByPrimaryKey(new BigDecimal(planId));
  1105. amstruckInwardPlan.setPlanStatus(new BigDecimal(3));
  1106. result += amstruckInwardPlanMapper.updateByPrimaryKeySelective(amstruckInwardPlan);
  1107. BigDecimal materialId = omstruckOrderMapper.getInwardMaterial(new BigDecimal(planId));
  1108. for (Map<String,Object> orderMap : mapList) {
  1109. OmstruckOrder omstruckOrder = new OmstruckOrder();
  1110. String capacityNumber = (String)orderMap.get("capacityNumber");
  1111. BigDecimal materialNumber = DataChange.dataToBigDecimal(orderMap.get("materialNumber")) ;
  1112. BigDecimal materialWeight = DataChange.dataToBigDecimal(orderMap.get("materialWeight"));
  1113. Map<String,Object> capacityMap = new HashMap<>();
  1114. capacityMap.put("capacityNumber",capacityNumber);
  1115. List<RmsCapacity> rmsCapacities = rmsCapacityMapper.selectByParameters(capacityMap);
  1116. RmsCapacity rmsCapacity = rmsCapacities.get(0);
  1117. // rmsCapacity.setCapacityStatus(new BigDecimal(2));
  1118. result +=rmsCapacityMapper.updateByPrimaryKeySelective(rmsCapacity);
  1119. BigDecimal capacityId = rmsCapacity.getCapacityId();
  1120. capacityMap.clear();
  1121. capacityMap.put("capacityId",capacityId);
  1122. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  1123. // 添加总实绩
  1124. Map<String,Object> orderIdMap = new HashMap<>();
  1125. orderIdMap.put("orderId",orderId);
  1126. tmsTruckFeign.addTotalResult(orderIdMap);
  1127. omstruckOrder.setOrderId(orderId);
  1128. omstruckOrder.setOrderPlanId(new BigDecimal(planId));
  1129. String orderNumber = DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue());
  1130. omstruckOrder.setOrderNumber(orderNumber);
  1131. omstruckOrder.setOrderIssueTime(new Date());
  1132. omstruckOrder.setOrderStatus(new BigDecimal(3));
  1133. omstruckOrder.setCapacityId(capacityId);
  1134. omstruckOrder.setInsertTime(new Date());
  1135. omstruckOrder.setUpdateTime(new Date());
  1136. omstruckOrder.setInsertUsername("admin");
  1137. omstruckOrder.setUpdateUsername("admin");
  1138. omstruckOrder.setInsertUpdateRemark("无");
  1139. omstruckOrder.setDeleted(new BigDecimal(0));
  1140. omstruckOrder.setOrderType(new BigDecimal(orderType));
  1141. omstruckOrder.setLineId(new BigDecimal(lineId));
  1142. result +=omstruckOrderMapper.insertSelective(omstruckOrder);
  1143. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  1144. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  1145. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  1146. omstruckOrderMaterial.setOrderId(orderId);
  1147. omstruckOrderMaterial.setMaterialId(materialId);
  1148. omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
  1149. omstruckOrderMaterial.setInsertTime(new Date());
  1150. omstruckOrderMaterial.setUpdateTime(new Date());
  1151. omstruckOrderMaterial.setInsertUsername("admin");
  1152. omstruckOrderMaterial.setUpdateUsername("admin");
  1153. omstruckOrderMaterial.setInsertUpdateRemark("无");
  1154. omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
  1155. result +=omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  1156. }
  1157. return result;
  1158. }
  1159. /**
  1160. * 查询分解计划
  1161. * @param mapValue
  1162. * @return
  1163. */
  1164. @Override
  1165. public List<Map<String, Object>> getInwardOrderList(Map<String, Object> mapValue) {
  1166. List<Map<String,Object>> mapList = omstruckOrderMapper.getInwardOrderList(mapValue);
  1167. return mapList;
  1168. }
  1169. /**
  1170. * 下发计划
  1171. * @param mapList
  1172. * @return
  1173. */
  1174. @Override
  1175. public int issuePlanOrder(List<Map<String, Object>> mapList) {
  1176. int result = 0;
  1177. for (Map<String,Object> map : mapList) {
  1178. Integer orderId = (Integer) map.get("orderId");
  1179. OmstruckOrder omstruckOrder = omstruckOrderMapper.selectByPrimaryKey(new BigDecimal(orderId));
  1180. omstruckOrder.setOrderStatus(new BigDecimal(4));
  1181. omstruckOrder.setOrderIssueTime(new Date());
  1182. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  1183. }
  1184. return result;
  1185. }
  1186. /**
  1187. * 分派计划
  1188. * @param mapList
  1189. * @return
  1190. */
  1191. @Override
  1192. public int apportionInwardOrder(List<Map<String, Object>> mapList) {
  1193. int result = 0;
  1194. for (Map<String,Object> map : mapList) {
  1195. BigDecimal orderId = new BigDecimal((Integer) map.get("orderId"));
  1196. OmstruckOrder omstruckOrder = omstruckOrderMapper.selectByPrimaryKey(orderId);
  1197. omstruckOrder.setOrderIssueTime(new Date());
  1198. omstruckOrder.setOrderStatus(new BigDecimal(4));
  1199. // Map<Object, Object> map9 = new HashMap<>();
  1200. // long data = new Date().getTime();
  1201. // //根据运输订单id查询车牌号
  1202. // String capacityNumber = omstruckOrderMapper.selectCapacityNumber(orderId);
  1203. // BigDecimal orderType = omstruckOrderMapper.selectOrderType(orderId);
  1204. //
  1205. // map9.put("receivePerson",capacityNumber);
  1206. // map9.put("messageType",2);
  1207. // map9.put("snedPerson","system");
  1208. // map9.put("creatTime",data);
  1209. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  1210. }
  1211. return result;
  1212. }
  1213. /**
  1214. * 司机APP端查询下发给自己运输订单
  1215. * @param capacityNumber
  1216. * @return
  1217. */
  1218. @Override
  1219. public List<Map<String, Object>> sendOrderToApp(String capacityNumber) {
  1220. //通过车牌号匹配运力ID
  1221. BigDecimal capacityId = omstruckOrderMapper.getCapacityIdByCapacityNum(capacityNumber);
  1222. List<Map<String,Object>> resultList = omstruckOrderMapper.getResultList(capacityId);
  1223. for (Map<String,Object> map : resultList) {
  1224. BigDecimal orderId = (BigDecimal) map.get("orderId");
  1225. BigDecimal orderType = (BigDecimal) map.get("orderType");
  1226. // 查询物资信息
  1227. List<Map<String,Object>> materialMapList = omstruckOrderMapper.getMaterialMes(orderId);
  1228. String allMaterialName = "";
  1229. String allMaterialNumber = "";
  1230. String allMaterialWeight = "";
  1231. String allMaterialSpecificationModel = "";
  1232. // 对物资信息进行处理
  1233. if (materialMapList == null && materialMapList.size() == 0) {
  1234. } else {
  1235. for (Map<String,Object> materialMap : materialMapList) {
  1236. String materialName = (String) materialMap.get("materialName");
  1237. BigDecimal materialNumber = (BigDecimal) materialMap.get("materialNumber");
  1238. BigDecimal materialWeight = (BigDecimal) materialMap.get("materialWeight");
  1239. String materialModel = (String) materialMap.get("materialModel");
  1240. String materialSpecification = (String) materialMap.get("materialSpecification");
  1241. if (materialName != null) {
  1242. allMaterialName += materialName + "/";
  1243. }
  1244. if (materialNumber != null) {
  1245. allMaterialNumber += materialNumber.toString() + "/";
  1246. }
  1247. if (materialWeight != null) {
  1248. allMaterialWeight += materialWeight.toString() + "/";
  1249. }
  1250. if (materialSpecification != null || materialModel != null) {
  1251. allMaterialSpecificationModel += materialSpecification + materialModel + "/";
  1252. }
  1253. }
  1254. String subMaterialName = "";
  1255. String subMaterialNumber = "";
  1256. String subMaterialWeight = "";
  1257. String subMaterialSpecificationModel = "";
  1258. if (allMaterialName.length() >= 2) {
  1259. subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 2);
  1260. }
  1261. if (allMaterialName.length() < 2) {
  1262. subMaterialName = allMaterialName;
  1263. }
  1264. if (allMaterialNumber.length() >= 2) {
  1265. subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 1);
  1266. }
  1267. if (allMaterialNumber.length() < 2) {
  1268. subMaterialNumber = allMaterialNumber;
  1269. }
  1270. if (allMaterialWeight.length() >= 2) {
  1271. subMaterialWeight = allMaterialWeight.substring(0, allMaterialWeight.length() - 1);
  1272. }
  1273. if (allMaterialWeight.length() < 2) {
  1274. subMaterialWeight = allMaterialWeight;
  1275. }
  1276. if (allMaterialSpecificationModel.length() >= 2) {
  1277. subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 2);
  1278. }
  1279. if (allMaterialSpecificationModel.length() < 2) {
  1280. subMaterialSpecificationModel = allMaterialSpecificationModel;
  1281. }
  1282. map.put("allMaterialName", subMaterialName);
  1283. map.put("allMaterialNumber", subMaterialNumber);
  1284. map.put("allMaterialWeight", subMaterialWeight);
  1285. map.put("allMaterialSpecificationModel", subMaterialSpecificationModel);
  1286. }
  1287. Map<String,Object> orderMap = null;
  1288. int intValue = orderType.intValue();
  1289. if (intValue == 1 || intValue == 2 || intValue == 3) {
  1290. orderMap = omstruckOrderMapper.getSaleOrderMap(orderId);
  1291. }
  1292. if (intValue == 4) {
  1293. orderMap = omstruckOrderMapper.getSteelInwardOrderMap(orderId);
  1294. }
  1295. if (intValue == 5 || intValue == 6 || intValue == 7 || intValue == 8) {
  1296. orderMap = omstruckOrderMapper.getPurchaseOrderMap(orderId);
  1297. }
  1298. if (intValue == 9 || intValue == 10 || intValue == 11) {
  1299. orderMap = omstruckOrderMapper.getInwardOrderMap(orderId);
  1300. }
  1301. map.putAll(orderMap);
  1302. }
  1303. return resultList;
  1304. }
  1305. //新增内转异地库计划订单(新增运输订单)
  1306. @Override
  1307. public int apportionInwardOffsetOrder(Map<String, Object> mapValue) {
  1308. int result = 0;
  1309. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  1310. String dayPlanId = (String) mapValue.get("dayPlanId");
  1311. Integer lineId = (Integer) mapValue.get("lineId");
  1312. String orderType = (String) mapValue.get("orderType");
  1313. // Integer carrierId = (Integer) mapValue.get("carrierId");
  1314. // AmstruckInwardPlan amstruckInwardPlan = amstruckInwardPlanMapper.selectByPrimaryKey(new BigDecimal(planId));
  1315. // amstruckInwardPlan.setPlanStatus(new BigDecimal(3));
  1316. // result += amstruckInwardPlanMapper.updateByPrimaryKeySelective(amstruckInwardPlan);
  1317. BigDecimal materialId = omstruckOrderMapper.getInwardMaterial(new BigDecimal(dayPlanId));
  1318. for (Map<String,Object> orderMap : mapList) {
  1319. OmstruckOrder omstruckOrder = new OmstruckOrder();
  1320. String capacityNumber = (String)orderMap.get("capacityNumber");
  1321. BigDecimal materialNumber = DataChange.dataToBigDecimal(orderMap.get("materialNumber")) ;
  1322. // BigDecimal materialWeight = DataChange.dataToBigDecimal(orderMap.get("materialWeight"));
  1323. Map<String,Object> capacityMap = new HashMap<>();
  1324. capacityMap.put("capacityNumber",capacityNumber);
  1325. List<RmsCapacity> rmsCapacities = rmsCapacityMapper.selectByParameters(capacityMap);
  1326. RmsCapacity rmsCapacity = rmsCapacities.get(0);
  1327. rmsCapacity.setCapacityStatus(new BigDecimal(2));
  1328. result +=rmsCapacityMapper.updateByPrimaryKeySelective(rmsCapacity);
  1329. BigDecimal capacityId = rmsCapacity.getCapacityId();
  1330. capacityMap.clear();
  1331. capacityMap.put("capacityId",capacityId);
  1332. List<RmsDriverCapacity> rmsDriverCapacities = rmsDriverCapacityMapper.selectByParameters(capacityMap);
  1333. RmsDriverCapacity rmsDriverCapacity = rmsDriverCapacities.get(0);
  1334. BigDecimal dcId = rmsDriverCapacity.getDriverCapacityId();
  1335. if(dcId!=null){
  1336. BigDecimal orderId = omstruckOrderMapper.selectOrderId(dcId);
  1337. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  1338. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  1339. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  1340. omstruckOrderMaterial.setOrderId(orderId);
  1341. omstruckOrderMaterial.setMaterialId(materialId);
  1342. omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
  1343. omstruckOrderMaterial.setInsertTime(new Date());
  1344. omstruckOrderMaterial.setUpdateTime(new Date());
  1345. omstruckOrderMaterial.setInsertUsername("admin");
  1346. omstruckOrderMaterial.setUpdateUsername("admin");
  1347. omstruckOrderMaterial.setInsertUpdateRemark("无");
  1348. }
  1349. // rmsDriverCapacity.setCarrierId(new BigDecimal(carrierId));
  1350. result +=rmsDriverCapacityMapper.updateByPrimaryKeySelective(rmsDriverCapacity);
  1351. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  1352. omstruckOrder.setOrderId(orderId);
  1353. omstruckOrder.setOrderPlanId(new BigDecimal(dayPlanId));
  1354. String orderNumber = DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue());
  1355. omstruckOrder.setOrderNumber(orderNumber);
  1356. omstruckOrder.setOrderIssueTime(new Date());
  1357. omstruckOrder.setOrderStatus(new BigDecimal(3));
  1358. omstruckOrder.setInsertTime(new Date());
  1359. omstruckOrder.setUpdateTime(new Date());
  1360. omstruckOrder.setInsertUsername("admin");
  1361. omstruckOrder.setUpdateUsername("admin");
  1362. omstruckOrder.setInsertUpdateRemark("无");
  1363. omstruckOrder.setDeleted(new BigDecimal(0));
  1364. omstruckOrder.setOrderType(new BigDecimal(orderType));
  1365. omstruckOrder.setLineId(new BigDecimal(lineId));
  1366. result +=omstruckOrderMapper.insertSelective(omstruckOrder);
  1367. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  1368. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  1369. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  1370. omstruckOrderMaterial.setOrderId(orderId);
  1371. omstruckOrderMaterial.setMaterialId(materialId);
  1372. omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
  1373. omstruckOrderMaterial.setInsertTime(new Date());
  1374. omstruckOrderMaterial.setUpdateTime(new Date());
  1375. omstruckOrderMaterial.setInsertUsername("admin");
  1376. omstruckOrderMaterial.setUpdateUsername("admin");
  1377. omstruckOrderMaterial.setInsertUpdateRemark("无");
  1378. // omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
  1379. result +=omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  1380. }
  1381. return result;
  1382. }
  1383. /**
  1384. * 查询运单下的所有信息
  1385. * @param capacityNumber
  1386. * @return
  1387. */
  1388. @Override
  1389. public List<Map<String, Object>> getAllOrderMessage(String capacityNumber) {
  1390. List<Map<String, Object>> resultList;
  1391. // 判断是走采购,销售还是内转
  1392. resultList = omstruckOrderMapper.getResultListByCapacity(capacityNumber);
  1393. // 如果不是内转则取下面的orderId和orderType
  1394. if (resultList == null || resultList.size() == 0) {
  1395. //通过车牌号匹配运力ID
  1396. BigDecimal capacityId = omstruckOrderMapper.getCapacityIdByCapacityNum(capacityNumber);
  1397. BigDecimal driverCapacityId = omstruckOrderMapper.getDriverCapacityId(capacityId);
  1398. resultList = omstruckOrderMapper.getResultList(driverCapacityId);
  1399. }
  1400. // 循环遍历出每一条运输订单的信息
  1401. for (Map<String, Object> map : resultList) {
  1402. BigDecimal orderId = (BigDecimal) map.get("orderId");
  1403. BigDecimal orderType = (BigDecimal) map.get("orderType");
  1404. // 查询物资信息
  1405. List<Map<String, Object>> materialMapList = omstruckOrderMapper.getMaterialMes(orderId);
  1406. String allMaterialName = "";
  1407. String allMaterialNumber = "";
  1408. String allMaterialWeight = "";
  1409. String allMaterialSpecificationModel = "";
  1410. // 对物资信息进行处理
  1411. if (materialMapList == null && materialMapList.size() == 0) {
  1412. } else {
  1413. for (Map<String, Object> materialMap : materialMapList) {
  1414. String materialName = (String) materialMap.get("materialName");
  1415. BigDecimal materialNumber = (BigDecimal) materialMap.get("materialNumber");
  1416. BigDecimal materialWeight = (BigDecimal) materialMap.get("materialWeight");
  1417. String materialModel = (String) materialMap.get("materialModel");
  1418. String materialSpecification = (String) materialMap.get("materialSpecification");
  1419. if (materialName != null) {
  1420. allMaterialName += materialName + "/";
  1421. }
  1422. if (materialNumber != null) {
  1423. allMaterialNumber += materialNumber.toString() + "/";
  1424. }
  1425. if (materialWeight != null) {
  1426. allMaterialWeight += materialWeight.toString() + "/";
  1427. }
  1428. if (materialSpecification != null || materialModel != null) {
  1429. allMaterialSpecificationModel += materialSpecification + materialModel + "/";
  1430. }
  1431. }
  1432. String subMaterialName = "";
  1433. String subMaterialNumber = "";
  1434. String subMaterialWeight = "";
  1435. String subMaterialSpecificationModel = "";
  1436. if (allMaterialName.length() >= 2) {
  1437. subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 2);
  1438. }
  1439. if (allMaterialName.length() < 2) {
  1440. subMaterialName = allMaterialName;
  1441. }
  1442. if (allMaterialNumber.length() >= 2) {
  1443. subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 1);
  1444. }
  1445. if (allMaterialNumber.length() < 2) {
  1446. subMaterialNumber = allMaterialNumber;
  1447. }
  1448. if (allMaterialWeight.length() >= 2) {
  1449. subMaterialWeight = allMaterialWeight.substring(0, allMaterialWeight.length() - 1);
  1450. }
  1451. if (allMaterialWeight.length() < 2) {
  1452. subMaterialWeight = allMaterialWeight;
  1453. }
  1454. if (allMaterialSpecificationModel.length() >= 2) {
  1455. subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 2);
  1456. }
  1457. if (allMaterialSpecificationModel.length() < 2) {
  1458. subMaterialSpecificationModel = allMaterialSpecificationModel;
  1459. }
  1460. map.put("allMaterialName", subMaterialName);
  1461. map.put("allMaterialNumber", subMaterialNumber);
  1462. map.put("allMaterialWeight", subMaterialWeight);
  1463. map.put("allMaterialSpecificationModel", subMaterialSpecificationModel);
  1464. }
  1465. Map<String, Object> orderMap = null;
  1466. int intValue = orderType.intValue();
  1467. if (intValue == 1 || intValue == 2 || intValue == 3) {
  1468. orderMap = omstruckOrderMapper.getSaleMap(orderId);
  1469. }
  1470. if (intValue == 4) {
  1471. orderMap = omstruckOrderMapper.getSteelInwardMap(orderId);
  1472. }
  1473. if (intValue == 5 || intValue == 6 || intValue == 7 || intValue == 8) {
  1474. orderMap = omstruckOrderMapper.getPurchaseMap(orderId);
  1475. }
  1476. if (intValue == 9 || intValue == 10 || intValue == 11) {
  1477. orderMap = omstruckOrderMapper.getInwardMap(orderId);
  1478. }
  1479. map.putAll(orderMap);
  1480. }
  1481. return resultList;
  1482. }
  1483. /**
  1484. * 司机确认订单
  1485. * orderNumber 运输订单号
  1486. * @param map
  1487. * @return
  1488. */
  1489. @Override
  1490. public int driverConfirmation(Map<String, Object> map) {
  1491. OmstruckOrder omstruckOrder = new OmstruckOrder();
  1492. //通过运输订单号查询运输订单Id
  1493. Integer orderId = omstruckOrderMapper.getOrderIdByOrderNumber((String) map.get("orderNumber"));
  1494. omstruckOrder.setOrderId(new BigDecimal(orderId));
  1495. //设置司机确认订单
  1496. omstruckOrder.setDriverConfirmation(new BigDecimal(1));
  1497. omstruckOrder.setUpdateTime(new Date());
  1498. return omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  1499. }
  1500. /**
  1501. * 通过运输订单号查询订单信息给司机
  1502. * @param orderId
  1503. * @return
  1504. */
  1505. public Map<String, Object> getMessageToApp(BigDecimal orderId){
  1506. //通过运输订单Id查询订单类型
  1507. Integer orderType = omstruckOrderMapper.getOrderTypeByOrderNumber(orderId);
  1508. Map<String, Object> mesMap = new HashMap<>();
  1509. switch (orderType){
  1510. case 1:
  1511. mesMap = omstruckOrderMapper.getXSOrderMessageToApp(orderId);
  1512. break;
  1513. case 2:
  1514. case 3:
  1515. case 4:
  1516. mesMap = omstruckOrderMapper.getFYJHOrderMessageToApp(orderId);
  1517. break;
  1518. case 5:
  1519. case 6:
  1520. case 7:
  1521. case 8:
  1522. mesMap = omstruckOrderMapper.getCGOrderMessageToApp(orderId);
  1523. break;
  1524. case 9:
  1525. case 10:
  1526. case 11:
  1527. mesMap = omstruckOrderMapper.getNZOrderMessageToApp(orderId);
  1528. break;
  1529. case 12:
  1530. mesMap =omstruckOrderMapper.getSporadicOrder(orderId);
  1531. break;
  1532. case 13:
  1533. mesMap = omstruckOrderMapper.getSporadicOrder(orderId);
  1534. break;
  1535. }
  1536. mesMap.put("materialMesList", omstruckOrderMapper.getMaterialMes(orderId));
  1537. return mesMap;
  1538. }
  1539. /**
  1540. * 通过车牌号查询所有已下发未接收的订单信息
  1541. * @param map
  1542. * @return
  1543. */
  1544. public List<Map<String, Object>> getAllOrderMessagesByCapacityNum(Map<String, Object> map){
  1545. String capacityNumber = (String) map.get("capacityNumber");
  1546. //通过车牌号查询所有未下发的订单ID
  1547. List<Integer> orderIdList = omstruckOrderMapper.getOrderIdListByCapacityNumber(capacityNumber);
  1548. List<Map<String, Object>> mesMapList = new ArrayList<>();
  1549. for (Integer orderId : orderIdList) {
  1550. Map<String, Object> mesMap = getMessageToApp(new BigDecimal(orderId));
  1551. mesMapList.add(mesMap);
  1552. }
  1553. return mesMapList;
  1554. }
  1555. /**
  1556. * 新增进口矿
  1557. * @param mapValue
  1558. * @return
  1559. */
  1560. @Transactional
  1561. @Override
  1562. public int addInputOrder(Map<String, Object> mapValue) {
  1563. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  1564. BigDecimal purchaseOrderId = new BigDecimal((Integer) mapValue.get("purchaseOrderId"));
  1565. BigDecimal materialId = new BigDecimal((Integer) mapValue.get("materialId"));
  1566. BigDecimal orderType = new BigDecimal((Integer) mapValue.get("orderType"));
  1567. BigDecimal lineId = new BigDecimal((Integer) mapValue.get("lineId"));
  1568. Integer planId = (Integer) mapValue.get("planId");
  1569. int result = 0;
  1570. for (Map<String, Object> map : mapList) {
  1571. OmstruckOrder omstruckOrder = new OmstruckOrder();
  1572. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  1573. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  1574. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  1575. String capacityNumber = (String)map.get("capacityNumber");
  1576. BigDecimal capacityId = omstruckOrderMapper.getCapacityId(capacityNumber);
  1577. BigDecimal materialWeight = DataChange.dataToBigDecimal(map.get("orderMaterialWeight"));
  1578. String unloadPoint = (String) map.get("unloadPoint");
  1579. BigDecimal unloadPointId = omstruckOrderMapper.getUnloadPointId(unloadPoint);
  1580. // Date orderEntryTime = new Date((Long) map.get("orderEntryTime"));
  1581. // 运输订单
  1582. omstruckOrder.setOrderId(orderId);
  1583. omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD",orderId.intValue()));
  1584. omstruckOrder.setCapacityId(capacityId);
  1585. omstruckOrder.setOrderPlanId(purchaseOrderId);
  1586. omstruckOrder.setOrderType(orderType);
  1587. omstruckOrder.setOrderStatus(new BigDecimal(3));
  1588. omstruckOrder.setLineId(lineId);
  1589. omstruckOrder.setUnloadPointId(unloadPointId);
  1590. // omstruckOrder.setOrderEntryTime(orderEntryTime);
  1591. omstruckOrder.setInsertTime(new Date());
  1592. omstruckOrder.setInsertUsername("admin");
  1593. // 运输订单子表
  1594. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  1595. omstruckOrderMaterial.setOrderId(orderId);
  1596. omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
  1597. omstruckOrderMaterial.setMaterialId(materialId);
  1598. omstruckOrderMaterial.setInsertTime(new Date());
  1599. omstruckOrderMaterial.setInsertUsername("admin");
  1600. result += omstruckOrderMapper.insertSelective(omstruckOrder);
  1601. result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  1602. //新增实绩总表关联订单 feign 调用truckTms
  1603. map.put("orderId", omstruckOrder.getOrderId());
  1604. tmsTruckFeign.addTotalResult(map);
  1605. //更改运输计划子表 增加已分配重量 减少未分配重量 feign调用ams
  1606. map.put("planId",planId);
  1607. amsFeign.updateMaterial(map);
  1608. }
  1609. return result;
  1610. }
  1611. }