OmstruckOrderServiceImpl.java 76 KB

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