OmstruckOrderServiceImpl.java 73 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702
  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. String carrierSsoId = (String) map.get("carrierSsoId");
  751. BigDecimal carrierId = omstruckOrderMapper.getCarrierIdBySSO(carrierSsoId);
  752. map.put("carrierId",carrierId);
  753. return omstruckOrderMapper.selectTransportOrderForSale(map);
  754. }
  755. @Override
  756. public List<Map<String, Object>> selectSteelSaleForCarrier(Map<String, Object> map) {
  757. return omstruckOrderMapper.selectSteelSaleForCarrier(map);
  758. }
  759. //根据销售订单id查找信息
  760. @Override
  761. public List<Map<String, Object>> selectInfoBySaleOrderId(Integer saleOrderId) {
  762. return omstruckOrderMapper.selectInfoBySaleOrderId(saleOrderId);
  763. }
  764. @Override
  765. public List<Map<String, Object>> selectCokeRailPlan(Map<String, Object> map) {
  766. return omstruckOrderMapper.selectCokeRailPlan(map);
  767. }
  768. @Override
  769. public List<Map<String, Object>> selectInfoByDayPlanId(Map<String, Object> map) {
  770. return omstruckOrderMapper.selectInfoByDayPlanId(map);
  771. }
  772. /**
  773. * 查找司机排班表信息
  774. *
  775. * @param map
  776. * @return
  777. */
  778. @Override
  779. public List<Map<String, Object>> selectCapacityAndDriver(Map<String, Object> map) {
  780. return omstruckOrderMapper.selectCapacityAndDriver(map);
  781. }
  782. /**
  783. * 查询所有运力信息
  784. *
  785. * @return
  786. */
  787. @Override
  788. public List<Map<String, Object>> getAllCapacity(Map<String, Object> map) {
  789. return omstruckOrderMapper.getAllCapacity(map);
  790. }
  791. /**
  792. * 用于后台展示司机接单未接单数据
  793. *
  794. * @param map
  795. * @return
  796. */
  797. @Override
  798. public List<Map<String, Object>> getReceiveRefuseOrder(Map<String, Object> map) {
  799. return omstruckOrderMapper.getTruckOrderByCapacityNum(map);
  800. }
  801. /**
  802. * 通过运输订单号查询运单所有信息 包含作业路径名称
  803. *
  804. * @param map 传运输订单号
  805. * @return
  806. */
  807. @Override
  808. public List<Map<String, Object>> getOrderMesByOrderNum(Map<String, Object> map) {
  809. return omstruckOrderMapper.getTruckOrderByCapacityNum(map);
  810. }
  811. /**
  812. * 查询所有司机已拒绝的订单
  813. * 车牌号
  814. *
  815. * @param map
  816. * @return
  817. */
  818. @Override
  819. public List<Map<String, Object>> getReceiveRefuseOrderByCapacityId(Map<String, Object> map) {
  820. //通过车牌号查询运力Id
  821. BigDecimal capacityId = omstruckOrderMapper.getCapacityIdByCapacityNum((String) map.get("capacityNumber"));
  822. map.put("capacityId", capacityId);
  823. return omstruckOrderMapper.getReceiveRefuseOrderByCapacityId(map);
  824. }
  825. /**
  826. * 通过运单号查询订单详情
  827. * 运输订单号
  828. *
  829. * @param
  830. * @return
  831. */
  832. @Override
  833. public List<Map<String, Object>> getOrderByOrderId(BigDecimal orderId) {
  834. return omstruckOrderMapper.getOrderByOrderId(orderId);
  835. }
  836. /**
  837. * 查看运输派单
  838. *
  839. * @param map
  840. * @return
  841. */
  842. @Override
  843. public List<Map<String, Object>> getTransportDispatch(Map<String, Object> map) {
  844. return omstruckOrderMapper.getTransportDispatch(map);
  845. }
  846. /**
  847. * 用于更新路段顺序号
  848. *
  849. * @param map orderId
  850. * @return
  851. */
  852. public int updateOrderLineSequence(Map<String, Object> map, Integer lineSequence) {
  853. OmstruckOrder omstruckOrder = new OmstruckOrder();
  854. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
  855. omstruckOrder.setOrderLineSequence(new BigDecimal(lineSequence));
  856. return omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  857. }
  858. //新增内转运输订单
  859. @Override
  860. public int insert(OmstruckOrder omstruckOrder) {
  861. //生成订单主键Id
  862. BigDecimal maxId = omstruckOrderMapper.selectMaxId();
  863. omstruckOrder.setOrderId(maxId);
  864. //生成运输订单号
  865. int id = maxId.intValue();
  866. String orderNumber = DataChange.generateEightDigitsNumber("WYSDD", id);
  867. omstruckOrder.setOrderNumber(orderNumber);
  868. //设置状态为未下发
  869. omstruckOrder.setOrderStatus(new BigDecimal(3));
  870. //设置运输订单的类型
  871. omstruckOrder.setOrderType(new BigDecimal(11));
  872. omstruckOrder.setInsertTime(new Date());
  873. omstruckOrder.setInsertUsername("admin");
  874. return omstruckOrderMapper.insertSelective(omstruckOrder);
  875. }
  876. //通过物资id查询批次表匹配最新的批次,关联最新的采购订单号
  877. @Override
  878. public Map<String, Object> selectNewOrderId(Map<String, Object> map) {
  879. return omstruckOrderMapper.selectNewOrderId(map);
  880. }
  881. //app司机接单查询数据
  882. @Override
  883. public Map<String, Object> sendMesToDriverApp(Map<String, Object> map) {
  884. //通过车牌号匹配运力ID
  885. BigDecimal capacityId = omstruckOrderMapper.getCapacityIdByCapacityNum((String) map.get("capacityNumber"));
  886. map.put("capacityId", capacityId);
  887. if (capacityId == null) {
  888. return null;
  889. }
  890. //通过运力Id匹配 已下发的运输订单
  891. Map<String, Object> truckOrderByCapacityNum = new HashMap<>();
  892. if ((Integer) map.get("orderType") == 1 || (Integer) map.get("orderType") == 2) {
  893. //查询主干信息
  894. Map<String, Object> map1 = omstruckOrderMapper.getSaleTruckOrderByCapacityId(map);
  895. //查询物资信息
  896. List<Map<String, Object>> mapList = omstruckOrderMapper.getSaleTruckOrderByCapacityNumMaterial(map);
  897. truckOrderByCapacityNum.put("orderf", map1);
  898. truckOrderByCapacityNum.put("materialList", mapList);
  899. }
  900. return truckOrderByCapacityNum;
  901. }
  902. @Override
  903. public BigDecimal selectCapacityId(BigDecimal carrierId, String capacityNumber) {
  904. return omstruckOrderMapper.selectCapacityId(carrierId, capacityNumber);
  905. }
  906. /**
  907. * 车牌号下拉
  908. *
  909. * @return
  910. */
  911. @Override
  912. public List<Map<String, Object>> getDriverCapacity() {
  913. return omstruckOrderMapper.getDriverCapacity();
  914. }
  915. /**
  916. * 派单信息
  917. *
  918. * @param dispatchId
  919. * @return
  920. */
  921. @Override
  922. public Map<String, Object> getTruckNoDispatchMap(Integer dispatchId) {
  923. Map<String, Object> map = omstruckOrderMapper.getTruckNoDispatchMap(new BigDecimal(dispatchId));
  924. List<BigDecimal> orderIdList = omstruckOrderMapper.getNullOrNotNull(new BigDecimal(dispatchId));
  925. if (orderIdList != null || orderIdList.size() != 0) {
  926. return null;
  927. }
  928. List<Map<String, Object>> materialMessages = omstruckOrderMapper.getMaterialMessages(new BigDecimal(dispatchId));
  929. String allMaterialName = "";
  930. String allMaterialNumber = "";
  931. String allMaterialTheoreticalWeight = "";
  932. String allMaterialSpecificationModel = "";
  933. if (materialMessages == null || materialMessages.size() == 0) {
  934. } else {
  935. for (Map<String, Object> materialMap : materialMessages) {
  936. if (materialMap != null) {
  937. String materialName = (String) materialMap.get("materialName");
  938. allMaterialName += materialName + "/";
  939. String materialTheoreticalWeight = materialMap.get("materialTheoreticalWeight").toString();
  940. if (materialTheoreticalWeight != null) {
  941. allMaterialTheoreticalWeight += materialTheoreticalWeight + "/";
  942. }
  943. String saleOrderMaterialNumber = materialMap.get("saleOrderMaterialNumber").toString();
  944. allMaterialNumber += saleOrderMaterialNumber + "/";
  945. String specificationModel = materialMap.get("specificationModel").toString();
  946. if (specificationModel != null) {
  947. allMaterialSpecificationModel += specificationModel + "/";
  948. }
  949. }
  950. }
  951. String subMaterialName = null;
  952. String subMaterialNumber = null;
  953. String subMaterialTheoreticalWeight = null;
  954. String subMaterialSpecificationModel = null;
  955. if (allMaterialName.length() >= 2) {
  956. subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 2);
  957. }
  958. if (allMaterialName.length() < 2) {
  959. subMaterialName = allMaterialName;
  960. }
  961. if (allMaterialNumber.length() >= 2) {
  962. subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 2);
  963. }
  964. if (allMaterialNumber.length() < 2) {
  965. subMaterialNumber = allMaterialNumber;
  966. }
  967. if (allMaterialTheoreticalWeight.length() >= 2) {
  968. subMaterialTheoreticalWeight = allMaterialTheoreticalWeight.substring(0, allMaterialTheoreticalWeight.length() - 2);
  969. }
  970. if (allMaterialTheoreticalWeight.length() < 2) {
  971. subMaterialTheoreticalWeight = allMaterialTheoreticalWeight;
  972. }
  973. if (allMaterialSpecificationModel.length() >= 2) {
  974. subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 2);
  975. }
  976. if (allMaterialSpecificationModel.length() < 2) {
  977. subMaterialSpecificationModel = allMaterialSpecificationModel;
  978. }
  979. map.put("allMaterialName", subMaterialName);
  980. map.put("allMaterialNumber", subMaterialNumber);
  981. map.put("allMaterialTheoreticalWeight", subMaterialTheoreticalWeight);
  982. map.put("allMaterialSpecificationModel", subMaterialSpecificationModel);
  983. }
  984. return map;
  985. }
  986. /**
  987. * 承运商分派运输订单给司机
  988. * @param dispatchId
  989. * @param orderType
  990. * @param capacityNumber
  991. * @param carrierId
  992. * @return
  993. */
  994. @Override
  995. public int addAppTruckOrder(Integer dispatchId, Integer orderType, String capacityNumber, Integer carrierId) {
  996. OmstruckOrder omstruckOrder = new OmstruckOrder();
  997. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  998. Map<String,Object> orderIdMap = new HashMap<>();
  999. orderIdMap.put("orderId",orderId);
  1000. tmsTruckFeign.addTotalResult(orderIdMap);
  1001. omstruckOrder.setOrderId(orderId);
  1002. BigDecimal saleOrderMaterialId = omstruckOrderMapper.getSaleMaterialId(new BigDecimal(dispatchId));
  1003. omstruckOrder.setOrderPlanId(saleOrderMaterialId);
  1004. String orderNumber = DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue());
  1005. omstruckOrder.setOrderNumber(orderNumber);
  1006. omstruckOrder.setOrderIssueTime(new Date());
  1007. omstruckOrder.setOrderStatus(new BigDecimal(4));
  1008. omstruckOrder.setInsertTime(new Date());
  1009. omstruckOrder.setUpdateTime(new Date());
  1010. omstruckOrder.setInsertUsername("admin");
  1011. omstruckOrder.setUpdateUsername("admin");
  1012. omstruckOrder.setInsertUpdateRemark("无");
  1013. omstruckOrder.setDeleted(new BigDecimal(0));
  1014. omstruckOrder.setOrderType(new BigDecimal(orderType));
  1015. BigDecimal capacityId = omstruckOrderMapper.getCapacityId(capacityNumber);
  1016. omstruckOrder.setCapacityId(capacityId);
  1017. // omstruckOrder.setCarrierId();
  1018. // BigDecimal driverCapacityId = omstruckOrderMapper.getDriverCapacityId(capacityId);
  1019. // omstruckOrder.setDriverCapacityId(driverCapacityId);
  1020. // RmsDriverCapacity rmsDriverCapacity = rmsDriverCapacityMapper.selectByPrimaryKey(driverCapacityId);
  1021. // rmsDriverCapacity.setCarrierId(new BigDecimal(carrierId));
  1022. // rmsDriverCapacityMapper.updateByPrimaryKeySelective(rmsDriverCapacity);
  1023. List<Map<String, Object>> mapList = omstruckOrderMapper.getMaterialMessages(new BigDecimal(dispatchId));
  1024. if (mapList != null && mapList.size() != 0) {
  1025. for (Map<String, Object> map : mapList) {
  1026. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  1027. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  1028. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  1029. omstruckOrderMaterial.setOrderId(orderId);
  1030. omstruckOrderMaterial.setInsertTime(new Date());
  1031. omstruckOrderMaterial.setUpdateTime(new Date());
  1032. omstruckOrderMaterial.setInsertUsername("admin");
  1033. omstruckOrderMaterial.setUpdateUsername("admin");
  1034. omstruckOrderMaterial.setInsertUpdateRemark("无");
  1035. if (map != null) {
  1036. BigDecimal materialTheoreticalWeight = (BigDecimal) map.get("materialTheoreticalWeight");
  1037. BigDecimal saleOrderMaterialNumber = (BigDecimal) map.get("saleOrderMaterialNumber");
  1038. BigDecimal materialId = (BigDecimal) map.get("materialId");
  1039. omstruckOrderMaterial.setOrderMaterialWeight(materialTheoreticalWeight);
  1040. omstruckOrderMaterial.setMaterialId(materialId);
  1041. omstruckOrderMaterial.setOrderMaterialNumber(saleOrderMaterialNumber);
  1042. }
  1043. omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  1044. }
  1045. }
  1046. // RmsCapacity rmsCapacity = new RmsCapacity();
  1047. // rmsCapacity.setCapacityId(capacityId);
  1048. // rmsCapacity.setCapacityStatus(new BigDecimal(2));
  1049. // rmsCapacityMapper.updateByPrimaryKeySelective(rmsCapacity);
  1050. int result = omstruckOrderMapper.insertSelective(omstruckOrder);
  1051. // 调用websocket推送数据给司机
  1052. pushMesToWebsocket(orderIdMap);
  1053. return result;
  1054. }
  1055. /**
  1056. * 根据运单id关闭订单
  1057. * @param orderId
  1058. * @return
  1059. */
  1060. @Override
  1061. public int closeOmstruckOrder(BigDecimal orderId) {
  1062. OmstruckOrder omstruckOrder = omstruckOrderMapper.selectByPrimaryKey(orderId);
  1063. omstruckOrder.setOrderStatus(new BigDecimal(7));
  1064. int result = omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  1065. return result;
  1066. }
  1067. /**
  1068. * 查询所有车牌号和司机
  1069. * @param mapValue
  1070. * @return
  1071. */
  1072. @Override
  1073. public List<Map<String, Object>> getCapacityAndDriverList(Map<String, Object> mapValue) {
  1074. return omstruckOrderMapper.getCapacityAndDriver(mapValue);
  1075. }
  1076. @Override
  1077. public int closeOrder(Map<String, Object> map) {
  1078. Integer orderId =(Integer) map.get("orderId");
  1079. OmstruckOrder omstruckOrder=new OmstruckOrder();
  1080. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(orderId));
  1081. omstruckOrder.setOrderStatus(new BigDecimal(8));
  1082. omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  1083. return 1;
  1084. }
  1085. /**
  1086. * 分解内转计划(新增运输订单)
  1087. * @param mapValue
  1088. * @return
  1089. */
  1090. @Transactional
  1091. @Override
  1092. public int addInwardOrder(Map<String, Object> mapValue) {
  1093. int result = 0;
  1094. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  1095. String planId = (String) mapValue.get("planId");
  1096. Integer lineId = (Integer) mapValue.get("lineId");
  1097. String orderType = (String) mapValue.get("orderType");
  1098. Integer carrierId = (Integer) mapValue.get("carrierId");
  1099. AmstruckInwardPlan amstruckInwardPlan = amstruckInwardPlanMapper.selectByPrimaryKey(new BigDecimal(planId));
  1100. amstruckInwardPlan.setPlanStatus(new BigDecimal(3));
  1101. result += amstruckInwardPlanMapper.updateByPrimaryKeySelective(amstruckInwardPlan);
  1102. BigDecimal materialId = omstruckOrderMapper.getInwardMaterial(new BigDecimal(planId));
  1103. for (Map<String,Object> orderMap : mapList) {
  1104. OmstruckOrder omstruckOrder = new OmstruckOrder();
  1105. String capacityNumber = (String)orderMap.get("capacityNumber");
  1106. BigDecimal materialNumber = DataChange.dataToBigDecimal(orderMap.get("materialNumber")) ;
  1107. BigDecimal materialWeight = DataChange.dataToBigDecimal(orderMap.get("materialWeight"));
  1108. Map<String,Object> capacityMap = new HashMap<>();
  1109. capacityMap.put("capacityNumber",capacityNumber);
  1110. List<RmsCapacity> rmsCapacities = rmsCapacityMapper.selectByParameters(capacityMap);
  1111. RmsCapacity rmsCapacity = rmsCapacities.get(0);
  1112. // rmsCapacity.setCapacityStatus(new BigDecimal(2));
  1113. result +=rmsCapacityMapper.updateByPrimaryKeySelective(rmsCapacity);
  1114. BigDecimal capacityId = rmsCapacity.getCapacityId();
  1115. capacityMap.clear();
  1116. capacityMap.put("capacityId",capacityId);
  1117. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  1118. // 添加总实绩
  1119. Map<String,Object> orderIdMap = new HashMap<>();
  1120. orderIdMap.put("orderId",orderId);
  1121. tmsTruckFeign.addTotalResult(orderIdMap);
  1122. omstruckOrder.setOrderId(orderId);
  1123. omstruckOrder.setOrderPlanId(new BigDecimal(planId));
  1124. String orderNumber = DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue());
  1125. omstruckOrder.setOrderNumber(orderNumber);
  1126. omstruckOrder.setOrderIssueTime(new Date());
  1127. omstruckOrder.setOrderStatus(new BigDecimal(3));
  1128. omstruckOrder.setCapacityId(capacityId);
  1129. omstruckOrder.setInsertTime(new Date());
  1130. omstruckOrder.setUpdateTime(new Date());
  1131. omstruckOrder.setInsertUsername("admin");
  1132. omstruckOrder.setUpdateUsername("admin");
  1133. omstruckOrder.setInsertUpdateRemark("无");
  1134. omstruckOrder.setDeleted(new BigDecimal(0));
  1135. omstruckOrder.setOrderType(new BigDecimal(orderType));
  1136. omstruckOrder.setLineId(new BigDecimal(lineId));
  1137. result +=omstruckOrderMapper.insertSelective(omstruckOrder);
  1138. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  1139. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  1140. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  1141. omstruckOrderMaterial.setOrderId(orderId);
  1142. omstruckOrderMaterial.setMaterialId(materialId);
  1143. omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
  1144. omstruckOrderMaterial.setInsertTime(new Date());
  1145. omstruckOrderMaterial.setUpdateTime(new Date());
  1146. omstruckOrderMaterial.setInsertUsername("admin");
  1147. omstruckOrderMaterial.setUpdateUsername("admin");
  1148. omstruckOrderMaterial.setInsertUpdateRemark("无");
  1149. omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
  1150. result +=omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  1151. }
  1152. return result;
  1153. }
  1154. /**
  1155. * 查询分解计划
  1156. * @param mapValue
  1157. * @return
  1158. */
  1159. @Override
  1160. public List<Map<String, Object>> getInwardOrderList(Map<String, Object> mapValue) {
  1161. List<Map<String,Object>> mapList = omstruckOrderMapper.getInwardOrderList(mapValue);
  1162. return mapList;
  1163. }
  1164. /**
  1165. * 下发计划
  1166. * @param mapList
  1167. * @return
  1168. */
  1169. @Override
  1170. public int issuePlanOrder(List<Map<String, Object>> mapList) {
  1171. int result = 0;
  1172. for (Map<String,Object> map : mapList) {
  1173. Integer orderId = (Integer) map.get("orderId");
  1174. OmstruckOrder omstruckOrder = omstruckOrderMapper.selectByPrimaryKey(new BigDecimal(orderId));
  1175. omstruckOrder.setOrderStatus(new BigDecimal(4));
  1176. omstruckOrder.setOrderIssueTime(new Date());
  1177. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  1178. }
  1179. return result;
  1180. }
  1181. /**
  1182. * 分派计划
  1183. * @param mapList
  1184. * @return
  1185. */
  1186. @Override
  1187. public int apportionInwardOrder(List<Map<String, Object>> mapList) {
  1188. int result = 0;
  1189. for (Map<String,Object> map : mapList) {
  1190. BigDecimal orderId = new BigDecimal((Integer) map.get("orderId"));
  1191. OmstruckOrder omstruckOrder = omstruckOrderMapper.selectByPrimaryKey(orderId);
  1192. omstruckOrder.setOrderIssueTime(new Date());
  1193. omstruckOrder.setOrderStatus(new BigDecimal(4));
  1194. // Map<Object, Object> map9 = new HashMap<>();
  1195. // long data = new Date().getTime();
  1196. // //根据运输订单id查询车牌号
  1197. // String capacityNumber = omstruckOrderMapper.selectCapacityNumber(orderId);
  1198. // BigDecimal orderType = omstruckOrderMapper.selectOrderType(orderId);
  1199. //
  1200. // map9.put("receivePerson",capacityNumber);
  1201. // map9.put("messageType",2);
  1202. // map9.put("snedPerson","system");
  1203. // map9.put("creatTime",data);
  1204. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  1205. }
  1206. return result;
  1207. }
  1208. /**
  1209. * 司机APP端查询下发给自己运输订单
  1210. * @param capacityNumber
  1211. * @return
  1212. */
  1213. @Override
  1214. public List<Map<String, Object>> sendOrderToApp(String capacityNumber) {
  1215. //通过车牌号匹配运力ID
  1216. BigDecimal capacityId = omstruckOrderMapper.getCapacityIdByCapacityNum(capacityNumber);
  1217. List<Map<String,Object>> resultList = omstruckOrderMapper.getResultList(capacityId);
  1218. for (Map<String,Object> map : resultList) {
  1219. BigDecimal orderId = (BigDecimal) map.get("orderId");
  1220. BigDecimal orderType = (BigDecimal) map.get("orderType");
  1221. // 查询物资信息
  1222. List<Map<String,Object>> materialMapList = omstruckOrderMapper.getMaterialMes(orderId);
  1223. String allMaterialName = "";
  1224. String allMaterialNumber = "";
  1225. String allMaterialWeight = "";
  1226. String allMaterialSpecificationModel = "";
  1227. // 对物资信息进行处理
  1228. if (materialMapList == null && materialMapList.size() == 0) {
  1229. } else {
  1230. for (Map<String,Object> materialMap : materialMapList) {
  1231. String materialName = (String) materialMap.get("materialName");
  1232. BigDecimal materialNumber = (BigDecimal) materialMap.get("materialNumber");
  1233. BigDecimal materialWeight = (BigDecimal) materialMap.get("materialWeight");
  1234. String materialModel = (String) materialMap.get("materialModel");
  1235. String materialSpecification = (String) materialMap.get("materialSpecification");
  1236. if (materialName != null) {
  1237. allMaterialName += materialName + "/";
  1238. }
  1239. if (materialNumber != null) {
  1240. allMaterialNumber += materialNumber.toString() + "/";
  1241. }
  1242. if (materialWeight != null) {
  1243. allMaterialWeight += materialWeight.toString() + "/";
  1244. }
  1245. if (materialSpecification != null || materialModel != null) {
  1246. allMaterialSpecificationModel += materialSpecification + materialModel + "/";
  1247. }
  1248. }
  1249. String subMaterialName = "";
  1250. String subMaterialNumber = "";
  1251. String subMaterialWeight = "";
  1252. String subMaterialSpecificationModel = "";
  1253. if (allMaterialName.length() >= 2) {
  1254. subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 2);
  1255. }
  1256. if (allMaterialName.length() < 2) {
  1257. subMaterialName = allMaterialName;
  1258. }
  1259. if (allMaterialNumber.length() >= 2) {
  1260. subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 1);
  1261. }
  1262. if (allMaterialNumber.length() < 2) {
  1263. subMaterialNumber = allMaterialNumber;
  1264. }
  1265. if (allMaterialWeight.length() >= 2) {
  1266. subMaterialWeight = allMaterialWeight.substring(0, allMaterialWeight.length() - 1);
  1267. }
  1268. if (allMaterialWeight.length() < 2) {
  1269. subMaterialWeight = allMaterialWeight;
  1270. }
  1271. if (allMaterialSpecificationModel.length() >= 2) {
  1272. subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 2);
  1273. }
  1274. if (allMaterialSpecificationModel.length() < 2) {
  1275. subMaterialSpecificationModel = allMaterialSpecificationModel;
  1276. }
  1277. map.put("allMaterialName", subMaterialName);
  1278. map.put("allMaterialNumber", subMaterialNumber);
  1279. map.put("allMaterialWeight", subMaterialWeight);
  1280. map.put("allMaterialSpecificationModel", subMaterialSpecificationModel);
  1281. }
  1282. Map<String,Object> orderMap = null;
  1283. int intValue = orderType.intValue();
  1284. if (intValue == 1 || intValue == 2 || intValue == 3) {
  1285. orderMap = omstruckOrderMapper.getSaleOrderMap(orderId);
  1286. }
  1287. if (intValue == 4) {
  1288. orderMap = omstruckOrderMapper.getSteelInwardOrderMap(orderId);
  1289. }
  1290. if (intValue == 5 || intValue == 6 || intValue == 7 || intValue == 8) {
  1291. orderMap = omstruckOrderMapper.getPurchaseOrderMap(orderId);
  1292. }
  1293. if (intValue == 9 || intValue == 10 || intValue == 11) {
  1294. orderMap = omstruckOrderMapper.getInwardOrderMap(orderId);
  1295. }
  1296. map.putAll(orderMap);
  1297. }
  1298. return resultList;
  1299. }
  1300. //新增内转异地库计划订单(新增运输订单)
  1301. @Override
  1302. public int apportionInwardOffsetOrder(Map<String, Object> mapValue) {
  1303. int result = 0;
  1304. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  1305. String dayPlanId = (String) mapValue.get("dayPlanId");
  1306. Integer lineId = (Integer) mapValue.get("lineId");
  1307. String orderType = (String) mapValue.get("orderType");
  1308. // Integer carrierId = (Integer) mapValue.get("carrierId");
  1309. // AmstruckInwardPlan amstruckInwardPlan = amstruckInwardPlanMapper.selectByPrimaryKey(new BigDecimal(planId));
  1310. // amstruckInwardPlan.setPlanStatus(new BigDecimal(3));
  1311. // result += amstruckInwardPlanMapper.updateByPrimaryKeySelective(amstruckInwardPlan);
  1312. BigDecimal materialId = omstruckOrderMapper.getInwardMaterial(new BigDecimal(dayPlanId));
  1313. for (Map<String,Object> orderMap : mapList) {
  1314. OmstruckOrder omstruckOrder = new OmstruckOrder();
  1315. String capacityNumber = (String)orderMap.get("capacityNumber");
  1316. BigDecimal materialNumber = DataChange.dataToBigDecimal(orderMap.get("materialNumber")) ;
  1317. // BigDecimal materialWeight = DataChange.dataToBigDecimal(orderMap.get("materialWeight"));
  1318. Map<String,Object> capacityMap = new HashMap<>();
  1319. capacityMap.put("capacityNumber",capacityNumber);
  1320. List<RmsCapacity> rmsCapacities = rmsCapacityMapper.selectByParameters(capacityMap);
  1321. RmsCapacity rmsCapacity = rmsCapacities.get(0);
  1322. rmsCapacity.setCapacityStatus(new BigDecimal(2));
  1323. result +=rmsCapacityMapper.updateByPrimaryKeySelective(rmsCapacity);
  1324. BigDecimal capacityId = rmsCapacity.getCapacityId();
  1325. capacityMap.clear();
  1326. capacityMap.put("capacityId",capacityId);
  1327. List<RmsDriverCapacity> rmsDriverCapacities = rmsDriverCapacityMapper.selectByParameters(capacityMap);
  1328. RmsDriverCapacity rmsDriverCapacity = rmsDriverCapacities.get(0);
  1329. BigDecimal dcId = rmsDriverCapacity.getDriverCapacityId();
  1330. if(dcId!=null){
  1331. BigDecimal orderId = omstruckOrderMapper.selectOrderId(dcId);
  1332. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  1333. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  1334. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  1335. omstruckOrderMaterial.setOrderId(orderId);
  1336. omstruckOrderMaterial.setMaterialId(materialId);
  1337. omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
  1338. omstruckOrderMaterial.setInsertTime(new Date());
  1339. omstruckOrderMaterial.setUpdateTime(new Date());
  1340. omstruckOrderMaterial.setInsertUsername("admin");
  1341. omstruckOrderMaterial.setUpdateUsername("admin");
  1342. omstruckOrderMaterial.setInsertUpdateRemark("无");
  1343. }
  1344. // rmsDriverCapacity.setCarrierId(new BigDecimal(carrierId));
  1345. result +=rmsDriverCapacityMapper.updateByPrimaryKeySelective(rmsDriverCapacity);
  1346. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  1347. omstruckOrder.setOrderId(orderId);
  1348. omstruckOrder.setOrderPlanId(new BigDecimal(dayPlanId));
  1349. String orderNumber = DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue());
  1350. omstruckOrder.setOrderNumber(orderNumber);
  1351. omstruckOrder.setOrderIssueTime(new Date());
  1352. omstruckOrder.setOrderStatus(new BigDecimal(3));
  1353. omstruckOrder.setInsertTime(new Date());
  1354. omstruckOrder.setUpdateTime(new Date());
  1355. omstruckOrder.setInsertUsername("admin");
  1356. omstruckOrder.setUpdateUsername("admin");
  1357. omstruckOrder.setInsertUpdateRemark("无");
  1358. omstruckOrder.setDeleted(new BigDecimal(0));
  1359. omstruckOrder.setOrderType(new BigDecimal(orderType));
  1360. omstruckOrder.setLineId(new BigDecimal(lineId));
  1361. result +=omstruckOrderMapper.insertSelective(omstruckOrder);
  1362. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  1363. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  1364. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  1365. omstruckOrderMaterial.setOrderId(orderId);
  1366. omstruckOrderMaterial.setMaterialId(materialId);
  1367. omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
  1368. omstruckOrderMaterial.setInsertTime(new Date());
  1369. omstruckOrderMaterial.setUpdateTime(new Date());
  1370. omstruckOrderMaterial.setInsertUsername("admin");
  1371. omstruckOrderMaterial.setUpdateUsername("admin");
  1372. omstruckOrderMaterial.setInsertUpdateRemark("无");
  1373. // omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
  1374. result +=omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  1375. }
  1376. return result;
  1377. }
  1378. /**
  1379. * 查询运单下的所有信息
  1380. * @param capacityNumber
  1381. * @return
  1382. */
  1383. @Override
  1384. public List<Map<String, Object>> getAllOrderMessage(String capacityNumber) {
  1385. List<Map<String, Object>> resultList;
  1386. // 判断是走采购,销售还是内转
  1387. resultList = omstruckOrderMapper.getResultListByCapacity(capacityNumber);
  1388. // 如果不是内转则取下面的orderId和orderType
  1389. if (resultList == null || resultList.size() == 0) {
  1390. //通过车牌号匹配运力ID
  1391. BigDecimal capacityId = omstruckOrderMapper.getCapacityIdByCapacityNum(capacityNumber);
  1392. BigDecimal driverCapacityId = omstruckOrderMapper.getDriverCapacityId(capacityId);
  1393. resultList = omstruckOrderMapper.getResultList(driverCapacityId);
  1394. }
  1395. // 循环遍历出每一条运输订单的信息
  1396. for (Map<String, Object> map : resultList) {
  1397. BigDecimal orderId = (BigDecimal) map.get("orderId");
  1398. BigDecimal orderType = (BigDecimal) map.get("orderType");
  1399. // 查询物资信息
  1400. List<Map<String, Object>> materialMapList = omstruckOrderMapper.getMaterialMes(orderId);
  1401. String allMaterialName = "";
  1402. String allMaterialNumber = "";
  1403. String allMaterialWeight = "";
  1404. String allMaterialSpecificationModel = "";
  1405. // 对物资信息进行处理
  1406. if (materialMapList == null && materialMapList.size() == 0) {
  1407. } else {
  1408. for (Map<String, Object> materialMap : materialMapList) {
  1409. String materialName = (String) materialMap.get("materialName");
  1410. BigDecimal materialNumber = (BigDecimal) materialMap.get("materialNumber");
  1411. BigDecimal materialWeight = (BigDecimal) materialMap.get("materialWeight");
  1412. String materialModel = (String) materialMap.get("materialModel");
  1413. String materialSpecification = (String) materialMap.get("materialSpecification");
  1414. if (materialName != null) {
  1415. allMaterialName += materialName + "/";
  1416. }
  1417. if (materialNumber != null) {
  1418. allMaterialNumber += materialNumber.toString() + "/";
  1419. }
  1420. if (materialWeight != null) {
  1421. allMaterialWeight += materialWeight.toString() + "/";
  1422. }
  1423. if (materialSpecification != null || materialModel != null) {
  1424. allMaterialSpecificationModel += materialSpecification + materialModel + "/";
  1425. }
  1426. }
  1427. String subMaterialName = "";
  1428. String subMaterialNumber = "";
  1429. String subMaterialWeight = "";
  1430. String subMaterialSpecificationModel = "";
  1431. if (allMaterialName.length() >= 2) {
  1432. subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 2);
  1433. }
  1434. if (allMaterialName.length() < 2) {
  1435. subMaterialName = allMaterialName;
  1436. }
  1437. if (allMaterialNumber.length() >= 2) {
  1438. subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 1);
  1439. }
  1440. if (allMaterialNumber.length() < 2) {
  1441. subMaterialNumber = allMaterialNumber;
  1442. }
  1443. if (allMaterialWeight.length() >= 2) {
  1444. subMaterialWeight = allMaterialWeight.substring(0, allMaterialWeight.length() - 1);
  1445. }
  1446. if (allMaterialWeight.length() < 2) {
  1447. subMaterialWeight = allMaterialWeight;
  1448. }
  1449. if (allMaterialSpecificationModel.length() >= 2) {
  1450. subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 2);
  1451. }
  1452. if (allMaterialSpecificationModel.length() < 2) {
  1453. subMaterialSpecificationModel = allMaterialSpecificationModel;
  1454. }
  1455. map.put("allMaterialName", subMaterialName);
  1456. map.put("allMaterialNumber", subMaterialNumber);
  1457. map.put("allMaterialWeight", subMaterialWeight);
  1458. map.put("allMaterialSpecificationModel", subMaterialSpecificationModel);
  1459. }
  1460. Map<String, Object> orderMap = null;
  1461. int intValue = orderType.intValue();
  1462. if (intValue == 1 || intValue == 2 || intValue == 3) {
  1463. orderMap = omstruckOrderMapper.getSaleMap(orderId);
  1464. }
  1465. if (intValue == 4) {
  1466. orderMap = omstruckOrderMapper.getSteelInwardMap(orderId);
  1467. }
  1468. if (intValue == 5 || intValue == 6 || intValue == 7 || intValue == 8) {
  1469. orderMap = omstruckOrderMapper.getPurchaseMap(orderId);
  1470. }
  1471. if (intValue == 9 || intValue == 10 || intValue == 11) {
  1472. orderMap = omstruckOrderMapper.getInwardMap(orderId);
  1473. }
  1474. map.putAll(orderMap);
  1475. }
  1476. return resultList;
  1477. }
  1478. /**
  1479. * 司机确认订单
  1480. * orderNumber 运输订单号
  1481. * @param map
  1482. * @return
  1483. */
  1484. @Override
  1485. public int driverConfirmation(Map<String, Object> map) {
  1486. OmstruckOrder omstruckOrder = new OmstruckOrder();
  1487. //通过运输订单号查询运输订单Id
  1488. Integer orderId = omstruckOrderMapper.getOrderIdByOrderNumber((String) map.get("orderNumber"));
  1489. omstruckOrder.setOrderId(new BigDecimal(orderId));
  1490. //设置司机确认订单
  1491. omstruckOrder.setDriverConfirmation(new BigDecimal(1));
  1492. omstruckOrder.setUpdateTime(new Date());
  1493. return omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  1494. }
  1495. /**
  1496. * 通过运输订单号查询订单信息给司机
  1497. * @param orderId
  1498. * @return
  1499. */
  1500. public Map<String, Object> getMessageToApp(BigDecimal orderId){
  1501. //通过运输订单Id查询订单类型
  1502. Integer orderType = omstruckOrderMapper.getOrderTypeByOrderNumber(orderId);
  1503. Map<String, Object> mesMap = new HashMap<>();
  1504. switch (orderType){
  1505. case 1:
  1506. mesMap = omstruckOrderMapper.getXSOrderMessageToApp(orderId);
  1507. break;
  1508. case 2:
  1509. case 3:
  1510. case 4:
  1511. mesMap = omstruckOrderMapper.getFYJHOrderMessageToApp(orderId);
  1512. break;
  1513. case 5:
  1514. case 6:
  1515. case 7:
  1516. case 8:
  1517. mesMap = omstruckOrderMapper.getCGOrderMessageToApp(orderId);
  1518. break;
  1519. case 9:
  1520. case 10:
  1521. case 11:
  1522. mesMap = omstruckOrderMapper.getNZOrderMessageToApp(orderId);
  1523. break;
  1524. case 12:
  1525. mesMap =omstruckOrderMapper.getSporadicOrder(orderId);
  1526. break;
  1527. case 13:
  1528. mesMap = omstruckOrderMapper.getSporadicOrder(orderId);
  1529. break;
  1530. }
  1531. mesMap.put("materialMesList", omstruckOrderMapper.getMaterialMes(orderId));
  1532. return mesMap;
  1533. }
  1534. /**
  1535. * 通过车牌号查询所有已下发未接收的订单信息
  1536. * @param map
  1537. * @return
  1538. */
  1539. public List<Map<String, Object>> getAllOrderMessagesByCapacityNum(Map<String, Object> map){
  1540. String capacityNumber = (String) map.get("capacityNumber");
  1541. //通过车牌号查询所有未下发的订单ID
  1542. List<Integer> orderIdList = omstruckOrderMapper.getOrderIdListByCapacityNumber(capacityNumber);
  1543. List<Map<String, Object>> mesMapList = new ArrayList<>();
  1544. for (Integer orderId : orderIdList) {
  1545. Map<String, Object> mesMap = getMessageToApp(new BigDecimal(orderId));
  1546. mesMapList.add(mesMap);
  1547. }
  1548. return mesMapList;
  1549. }
  1550. /**
  1551. * 新增进口矿
  1552. * @param mapValue
  1553. * @return
  1554. */
  1555. @Transactional
  1556. @Override
  1557. public int addInputOrder(Map<String, Object> mapValue) {
  1558. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  1559. BigDecimal purchaseOrderId = new BigDecimal((Integer) mapValue.get("purchaseOrderId"));
  1560. BigDecimal materialId = new BigDecimal((Integer) mapValue.get("materialId"));
  1561. BigDecimal orderType = new BigDecimal((Integer) mapValue.get("orderType"));
  1562. BigDecimal lineId = new BigDecimal((Integer) mapValue.get("lineId"));
  1563. Integer planId = (Integer) mapValue.get("planId");
  1564. int result = 0;
  1565. for (Map<String, Object> map : mapList) {
  1566. OmstruckOrder omstruckOrder = new OmstruckOrder();
  1567. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  1568. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  1569. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  1570. String capacityNumber = (String)map.get("capacityNumber");
  1571. BigDecimal capacityId = omstruckOrderMapper.getCapacityId(capacityNumber);
  1572. BigDecimal materialWeight = DataChange.dataToBigDecimal(map.get("orderMaterialWeight"));
  1573. String unloadPoint = (String) map.get("unloadPoint");
  1574. BigDecimal unloadPointId = omstruckOrderMapper.getUnloadPointId(unloadPoint);
  1575. // Date orderEntryTime = new Date((Long) map.get("orderEntryTime"));
  1576. // 运输订单
  1577. omstruckOrder.setOrderId(orderId);
  1578. omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD",orderId.intValue()));
  1579. omstruckOrder.setCapacityId(capacityId);
  1580. omstruckOrder.setOrderPlanId(purchaseOrderId);
  1581. omstruckOrder.setOrderType(orderType);
  1582. omstruckOrder.setOrderStatus(new BigDecimal(3));
  1583. omstruckOrder.setLineId(lineId);
  1584. omstruckOrder.setUnloadPointId(unloadPointId);
  1585. // omstruckOrder.setOrderEntryTime(orderEntryTime);
  1586. omstruckOrder.setInsertTime(new Date());
  1587. omstruckOrder.setInsertUsername("admin");
  1588. // 运输订单子表
  1589. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  1590. omstruckOrderMaterial.setOrderId(orderId);
  1591. omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
  1592. omstruckOrderMaterial.setMaterialId(materialId);
  1593. omstruckOrderMaterial.setInsertTime(new Date());
  1594. omstruckOrderMaterial.setInsertUsername("admin");
  1595. result += omstruckOrderMapper.insertSelective(omstruckOrder);
  1596. result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  1597. //新增实绩总表关联订单 feign 调用truckTms
  1598. map.put("orderId", omstruckOrder.getOrderId());
  1599. tmsTruckFeign.addTotalResult(map);
  1600. //更改运输计划子表 增加已分配重量 减少未分配重量 feign调用ams
  1601. map.put("planId",planId);
  1602. amsFeign.updateMaterial(map);
  1603. }
  1604. return result;
  1605. }
  1606. }