AmsDispatchSaleOrderServiceImpl.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.AmsDispatchSaleOrderMapper;
  3. import com.steerinfo.dil.mapper.AmsSaleOrderMaterialMapper;
  4. import com.steerinfo.dil.mapper.AmsSaleTrucknoMaterialMapper;
  5. import com.steerinfo.dil.model.AmsDispatchSaleOrder;
  6. import com.steerinfo.dil.model.AmsSaleOrderMaterial;
  7. import com.steerinfo.dil.service.IAmsDispatchSaleOrderService;
  8. import com.steerinfo.dil.util.DataChange;
  9. import com.steerinfo.dil.util.MapRemoveUtil;
  10. import com.steerinfo.framework.mapper.IBaseMapper;
  11. import com.steerinfo.framework.service.impl.BaseServiceImpl;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.transaction.annotation.Transactional;
  15. import java.math.BigDecimal;
  16. import java.util.*;
  17. /**
  18. * AmsDispatchSaleOrder服务实现:
  19. * @author generator
  20. * @version 1.0-SNAPSHORT 2021-09-10 03:59
  21. * 类描述
  22. * 修订历史:
  23. * 日期:2021-09-10
  24. * 作者:generator
  25. * 参考:
  26. * 描述:AmsDispatchSaleOrder服务实现
  27. * @see null
  28. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  29. */
  30. @Service(value = "amsDispatchSaleOrderService")
  31. public class AmsDispatchSaleOrderServiceImpl extends BaseServiceImpl<AmsDispatchSaleOrder, BigDecimal> implements IAmsDispatchSaleOrderService {
  32. @Autowired
  33. private AmsDispatchSaleOrderMapper amsDispatchSaleOrderMapper;
  34. @Autowired
  35. AmsSaleOrderMaterialMapper amsSaleOrderMaterialMapper;
  36. @Override
  37. protected IBaseMapper<AmsDispatchSaleOrder, BigDecimal> getMapper() {
  38. return amsDispatchSaleOrderMapper;
  39. }
  40. public List<Map<String, Object>> getOpenDispatchSaleOrder(Map<String, Object> mapValue) {
  41. return amsDispatchSaleOrderMapper.getOpenDispatchSaleOrder(mapValue);
  42. }
  43. /**
  44. * 查询最大id
  45. * @return
  46. */
  47. @Override
  48. public BigDecimal selectMaxId() {
  49. return amsDispatchSaleOrderMapper.selectOtherId();
  50. }
  51. public int insert(AmsDispatchSaleOrder ad) {
  52. ad.setDispatchTime(new Date());
  53. ad.setInsertTime(new Date());
  54. ad.setInsertUsername("admin");
  55. return amsDispatchSaleOrderMapper.insertSelective(ad);
  56. }
  57. /**
  58. * 查询app端公开抢单
  59. * @return
  60. */
  61. @Override
  62. public List<Map<String, Object>> getDispatchSaleOrderList() {
  63. List<Map<String, Object>> dispatchSaleOrderList = amsDispatchSaleOrderMapper.getDispatchSaleOrderList();
  64. for (Map<String,Object> map: dispatchSaleOrderList) {
  65. Date dispatchDealTime = (Date) map.get("dispatchDealTime");
  66. BigDecimal dispatchId = (BigDecimal) map.get("dispatchId");
  67. String isDeal;
  68. if (dispatchDealTime == null) {
  69. isDeal = "已成交";
  70. }
  71. else {
  72. isDeal = "未成交";
  73. }
  74. map.put("isDeal",isDeal);
  75. // // 先把map中的key-value放到新的saleMap里面
  76. // Map<String,Object> saleMap = new HashMap<>();
  77. // saleMap.putAll(map);
  78. // 使用Map清空工具迭代删除map中的所有key-value
  79. // MapRemoveUtil.removeMap(map);
  80. List<Map<String, Object>> materialMessages = amsDispatchSaleOrderMapper.getMaterialMessages(dispatchId);
  81. String allMaterialName = "";
  82. String allMaterialNumber = "";
  83. String allMaterialTheoreticalWeight = "";
  84. String allMaterialSpecificationModel = "";
  85. for (Map<String,Object> materialMap : materialMessages) {
  86. if (materialMap != null) {
  87. String materialName = (String) materialMap.get("materialName");
  88. allMaterialName += materialName + "/";
  89. String materialTheoreticalWeight = materialMap.get("materialTheoreticalWeight").toString();
  90. if (materialTheoreticalWeight != null) {
  91. allMaterialTheoreticalWeight += materialTheoreticalWeight + "/";
  92. }
  93. String saleOrderMaterialNumber = materialMap.get("saleOrderMaterialNumber").toString();
  94. allMaterialNumber += saleOrderMaterialNumber + "/";
  95. String specificationModel = materialMap.get("specificationModel").toString();
  96. if (specificationModel != null) {
  97. allMaterialSpecificationModel += specificationModel + "/";
  98. }
  99. }
  100. }
  101. String subMaterialName = null;
  102. String subMaterialNumber = null;
  103. String subMaterialTheoreticalWeight = null;
  104. String subMaterialSpecificationModel = null;
  105. if (allMaterialName.length() >= 2) {
  106. subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 1);
  107. }
  108. if (allMaterialName.length() < 2) {
  109. subMaterialName = allMaterialName;
  110. }
  111. if (allMaterialNumber.length() >= 2) {
  112. subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 1);
  113. }
  114. if (allMaterialNumber.length() < 2) {
  115. subMaterialNumber = allMaterialNumber;
  116. }
  117. if (allMaterialTheoreticalWeight.length() >= 2) {
  118. subMaterialTheoreticalWeight = allMaterialTheoreticalWeight.substring(0, allMaterialTheoreticalWeight.length() - 1);
  119. }
  120. if (allMaterialTheoreticalWeight.length() < 2) {
  121. subMaterialTheoreticalWeight = allMaterialTheoreticalWeight;
  122. }
  123. if (allMaterialSpecificationModel.length() >= 2) {
  124. subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 1);
  125. }
  126. if (allMaterialSpecificationModel.length() < 2) {
  127. subMaterialSpecificationModel = allMaterialSpecificationModel;
  128. }
  129. map.put("allMaterialName",subMaterialName);
  130. map.put("allMaterialNumber",subMaterialNumber);
  131. map.put("allMaterialTheoreticalWeight",subMaterialTheoreticalWeight);
  132. map.put("allMaterialSpecificationModel",subMaterialSpecificationModel);
  133. }
  134. return dispatchSaleOrderList;
  135. }
  136. /**
  137. * 抢单/接收订单
  138. * @param dispatchId
  139. * @param carrierId
  140. * @return
  141. */
  142. @Override
  143. public int lockDispatchSaleOrder(BigDecimal dispatchId, BigDecimal carrierId) {
  144. AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(dispatchId);
  145. amsDispatchSaleOrder.setDispatchDealTime(new Date());
  146. amsDispatchSaleOrder.setCarrierId(carrierId);
  147. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0));
  148. amsDispatchSaleOrder.setUpdateTime(new Date());
  149. int result = amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder);
  150. return result;
  151. }
  152. /**
  153. * 查询app端已抢的销售订单
  154. * @param carrierId
  155. * @return
  156. */
  157. @Override
  158. public List<Map<String, Object>> getLockDispatchSaleOrderList(Integer carrierId) {
  159. List<Map<String,Object>> mapList = amsDispatchSaleOrderMapper.getLockDispatchSaleOrderList(new BigDecimal(carrierId));
  160. if (mapList == null) {
  161. return null;
  162. }
  163. for (Map<String, Object> map : mapList) {
  164. BigDecimal dispatchId = (BigDecimal) map.get("dispatchId");
  165. List<Map<String,Object>> orderIdList = amsDispatchSaleOrderMapper.getNullOrNotNull(dispatchId);
  166. if (orderIdList != null || orderIdList.size() != 0) {
  167. mapList.remove(map);
  168. }
  169. List<Map<String, Object>> materialMessages = amsDispatchSaleOrderMapper.getMaterialMessages(dispatchId);
  170. String allMaterialName = "";
  171. String allMaterialNumber = "";
  172. String allMaterialTheoreticalWeight = "";
  173. String allMaterialSpecificationModel = "";
  174. if (materialMessages != null) {
  175. for (Map<String, Object> materialMap : materialMessages) {
  176. if (materialMap != null) {
  177. String materialName = (String) materialMap.get("materialName");
  178. allMaterialName += materialName + "/";
  179. String materialTheoreticalWeight = materialMap.get("materialTheoreticalWeight").toString();
  180. if (materialTheoreticalWeight != null) {
  181. allMaterialTheoreticalWeight += materialTheoreticalWeight + "/";
  182. }
  183. String saleOrderMaterialNumber = materialMap.get("saleOrderMaterialNumber").toString();
  184. allMaterialNumber += saleOrderMaterialNumber + "/";
  185. String specificationModel = materialMap.get("specificationModel").toString();
  186. if (specificationModel != null) {
  187. allMaterialSpecificationModel += specificationModel + "/";
  188. }
  189. }
  190. }
  191. String subMaterialName = null;
  192. String subMaterialNumber = null;
  193. String subMaterialTheoreticalWeight = null;
  194. String subMaterialSpecificationModel = null;
  195. if (allMaterialName.length() >= 2) {
  196. subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 1);
  197. }
  198. if (allMaterialName.length() < 2) {
  199. subMaterialName = allMaterialName;
  200. }
  201. if (allMaterialNumber.length() >= 2) {
  202. subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 1);
  203. }
  204. if (allMaterialNumber.length() < 2) {
  205. subMaterialNumber = allMaterialNumber;
  206. }
  207. if (allMaterialTheoreticalWeight.length() >= 2) {
  208. subMaterialTheoreticalWeight = allMaterialTheoreticalWeight.substring(0, allMaterialTheoreticalWeight.length() - 1);
  209. }
  210. if (allMaterialTheoreticalWeight.length() < 2) {
  211. subMaterialTheoreticalWeight = allMaterialTheoreticalWeight;
  212. }
  213. if (allMaterialSpecificationModel.length() >= 2) {
  214. subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 1);
  215. }
  216. if (allMaterialSpecificationModel.length() < 2) {
  217. subMaterialSpecificationModel = allMaterialSpecificationModel;
  218. }
  219. map.put("allMaterialName",subMaterialName);
  220. map.put("allMaterialNumber",subMaterialNumber);
  221. map.put("allMaterialTheoreticalWeight",subMaterialTheoreticalWeight);
  222. map.put("allMaterialSpecificationModel",subMaterialSpecificationModel);
  223. }
  224. // // 将已经清空的map里面put进一个map和一个list<Map>
  225. // map.put("materialMessages",materialMessages);
  226. // map.put("saleMap",saleMap);
  227. else {
  228. map.put("allMaterialName",allMaterialName);
  229. map.put("allMaterialNumber",allMaterialNumber);
  230. map.put("allMaterialTheoreticalWeight",allMaterialTheoreticalWeight);
  231. map.put("allMaterialSpecificationModel",allMaterialSpecificationModel);
  232. }
  233. }
  234. return mapList;
  235. }
  236. /**
  237. * 展示pc端司机已经抢到的订单
  238. * @param mapValue
  239. * @return
  240. */
  241. @Override
  242. public List<Map<String, Object>> getLockDispatchSaleOrderListForPc(Map<String,Object> mapValue) {
  243. String carrierSSOId = (String) mapValue.get("carrierSSOId");
  244. BigDecimal carrierId = amsDispatchSaleOrderMapper.getCarrierIdBySSO(carrierSSOId);
  245. mapValue.put("carrierId",carrierId);
  246. List<Map<String, Object>> mapList = amsDispatchSaleOrderMapper.getLockDispatchSaleOrderListForPc(mapValue);
  247. if (mapList == null) {
  248. return null;
  249. }
  250. for (Map<String, Object> map : mapList) {
  251. BigDecimal dispatchId = (BigDecimal) map.get("dispatchId");
  252. BigDecimal orderId = (BigDecimal) map.get("orderId");
  253. if (orderId == null) {
  254. List<Map<String, Object>> materialMessages = amsDispatchSaleOrderMapper.getMaterialMessages(dispatchId);
  255. String allMaterialName = "";
  256. String allMaterialNumber = "";
  257. String allMaterialTheoreticalWeight = "";
  258. String allMaterialSpecificationModel = "";
  259. if (materialMessages != null) {
  260. for (Map<String, Object> materialMap : materialMessages) {
  261. if (materialMap != null) {
  262. String materialName = (String) materialMap.get("materialName");
  263. allMaterialName += materialName + "/";
  264. BigDecimal materialTheoreticalWeight = (BigDecimal) materialMap.get("materialTheoreticalWeight");
  265. if (materialTheoreticalWeight != null) {
  266. allMaterialTheoreticalWeight += materialTheoreticalWeight + "/";
  267. }
  268. BigDecimal saleOrderMaterialNumber = (BigDecimal) materialMap.get("saleOrderMaterialNumber");
  269. allMaterialNumber += saleOrderMaterialNumber + "/";
  270. String specificationModel = (String) materialMap.get("specificationModel");
  271. if (specificationModel != null) {
  272. allMaterialSpecificationModel += specificationModel + "/";
  273. }
  274. }
  275. }
  276. String subMaterialName = null;
  277. String subMaterialNumber = null;
  278. String subMaterialTheoreticalWeight = null;
  279. String subMaterialSpecificationModel = null;
  280. if (allMaterialName.length() >= 2) {
  281. subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 1);
  282. }
  283. if (allMaterialName.length() < 2) {
  284. subMaterialName = allMaterialName;
  285. }
  286. if (allMaterialNumber.length() >= 2) {
  287. subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 1);
  288. }
  289. if (allMaterialNumber.length() < 2) {
  290. subMaterialNumber = allMaterialNumber;
  291. }
  292. if (allMaterialTheoreticalWeight.length() >= 2) {
  293. subMaterialTheoreticalWeight = allMaterialTheoreticalWeight.substring(0, allMaterialTheoreticalWeight.length() - 1);
  294. }
  295. if (allMaterialTheoreticalWeight.length() < 2) {
  296. subMaterialTheoreticalWeight = allMaterialTheoreticalWeight;
  297. }
  298. if (allMaterialSpecificationModel.length() >= 2) {
  299. subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 1);
  300. }
  301. if (allMaterialSpecificationModel.length() < 2) {
  302. subMaterialSpecificationModel = allMaterialSpecificationModel;
  303. }
  304. map.put("allMaterialName", subMaterialName);
  305. map.put("allMaterialNumber", subMaterialNumber);
  306. map.put("allMaterialTheoreticalWeight", subMaterialTheoreticalWeight);
  307. map.put("allMaterialSpecificationModel", subMaterialSpecificationModel);
  308. }
  309. // // 将已经清空的map里面put进一个map和一个list<Map>
  310. // map.put("materialMessages",materialMessages);
  311. // map.put("saleMap",saleMap);
  312. else {
  313. map.put("allMaterialName", allMaterialName);
  314. map.put("allMaterialNumber", allMaterialNumber);
  315. map.put("allMaterialTheoreticalWeight", allMaterialTheoreticalWeight);
  316. map.put("allMaterialSpecificationModel", allMaterialSpecificationModel);
  317. }
  318. }
  319. }
  320. return mapList;
  321. }
  322. /**
  323. * 查询PC端公开抢单
  324. * @param mapValue
  325. * @return
  326. */
  327. @Override
  328. public List<Map<String, Object>> getPCDispatchSaleOrderList(Map<String, Object> mapValue) {
  329. List<Map<String, Object>> dispatchSaleOrderList = amsDispatchSaleOrderMapper.getPCDispatchSaleOrderList(mapValue);
  330. for (Map<String,Object> map: dispatchSaleOrderList) {
  331. // Date dispatchDealTime = (Date) map.get("dispatchDealTime");
  332. BigDecimal dispatchId = (BigDecimal) map.get("dispatchId");
  333. // String isDeal;
  334. // if (dispatchDealTime == null) {
  335. // isDeal = "已成交";
  336. // }
  337. // else {
  338. // isDeal = "未成交";
  339. // }
  340. // map.put("isDeal",isDeal);
  341. // // 先把map中的key-value放到新的saleMap里面
  342. // Map<String,Object> saleMap = new HashMap<>();
  343. // saleMap.putAll(map);
  344. // 使用Map清空工具迭代删除map中的所有key-value
  345. // MapRemoveUtil.removeMap(map);
  346. List<Map<String, Object>> materialMessages = amsDispatchSaleOrderMapper.getMaterialMessages(dispatchId);
  347. String allMaterialName = "";
  348. String allMaterialNumber = "";
  349. String allMaterialTheoreticalWeight = "";
  350. String allMaterialSpecificationModel = "";
  351. for (Map<String,Object> materialMap : materialMessages) {
  352. if (materialMap != null) {
  353. String materialName = (String) materialMap.get("materialName");
  354. allMaterialName += materialName + "/";
  355. BigDecimal materialTheoreticalWeight = (BigDecimal)materialMap.get("materialTheoreticalWeight");
  356. if (materialTheoreticalWeight != null) {
  357. allMaterialTheoreticalWeight += materialTheoreticalWeight + "/";
  358. }
  359. BigDecimal saleOrderMaterialNumber = (BigDecimal) materialMap.get("saleOrderMaterialNumber");
  360. allMaterialNumber += saleOrderMaterialNumber + "/";
  361. String specificationModel = (String) materialMap.get("specificationModel");
  362. if (specificationModel != null) {
  363. allMaterialSpecificationModel += specificationModel + "/";
  364. }
  365. }
  366. }
  367. String subMaterialName = null;
  368. String subMaterialNumber = null;
  369. String subMaterialTheoreticalWeight = null;
  370. String subMaterialSpecificationModel = null;
  371. if (allMaterialName.length() >= 2) {
  372. subMaterialName = allMaterialName.substring(0, allMaterialName.length() - 1);
  373. }
  374. if (allMaterialName.length() < 2) {
  375. subMaterialName = allMaterialName;
  376. }
  377. if (allMaterialNumber.length() >= 2) {
  378. subMaterialNumber = allMaterialNumber.substring(0, allMaterialNumber.length() - 1);
  379. }
  380. if (allMaterialNumber.length() < 2) {
  381. subMaterialNumber = allMaterialNumber;
  382. }
  383. if (allMaterialTheoreticalWeight.length() >= 2) {
  384. subMaterialTheoreticalWeight = allMaterialTheoreticalWeight.substring(0, allMaterialTheoreticalWeight.length() - 1);
  385. }
  386. if (allMaterialTheoreticalWeight.length() < 2) {
  387. subMaterialTheoreticalWeight = allMaterialTheoreticalWeight;
  388. }
  389. if (allMaterialSpecificationModel.length() >= 2) {
  390. subMaterialSpecificationModel = allMaterialSpecificationModel.substring(0, allMaterialSpecificationModel.length() - 1);
  391. }
  392. if (allMaterialSpecificationModel.length() < 2) {
  393. subMaterialSpecificationModel = allMaterialSpecificationModel;
  394. }
  395. map.put("allMaterialName",subMaterialName);
  396. map.put("allMaterialNumber",subMaterialNumber);
  397. map.put("allMaterialTheoreticalWeight",subMaterialTheoreticalWeight);
  398. map.put("allMaterialSpecificationModel",subMaterialSpecificationModel);
  399. }
  400. return dispatchSaleOrderList;
  401. }
  402. /**
  403. * 接收定向派单
  404. * @param dispatchId
  405. * @return
  406. */
  407. @Override
  408. public int receiveDispatchOrder(BigDecimal dispatchId) {
  409. return 0;
  410. }
  411. /**
  412. * 销售新增定向派单且直接下发
  413. * @param mapValue
  414. * @return
  415. */
  416. @Transactional
  417. @Override
  418. public int addDispatchSaleOrder(Map<String, Object> mapValue) {
  419. int result = 0;
  420. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  421. // 承运商id
  422. BigDecimal carrierId = DataChange.dataToBigDecimal(mapValue.get("carrierId"));
  423. for (Map<String, Object> map : mapList) {
  424. // 车序号表id
  425. BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
  426. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  427. amsDispatchSaleOrder.setDispatchId(amsDispatchSaleOrderMapper.selectOtherId());
  428. amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
  429. amsDispatchSaleOrder.setCarrierId(carrierId);
  430. amsDispatchSaleOrder.setDispatchTime(new Date());
  431. // 设置为定向派单
  432. amsDispatchSaleOrder.setDispatchType(new BigDecimal(0));
  433. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0));
  434. amsDispatchSaleOrder.setInsertTime(new Date());
  435. amsDispatchSaleOrder.setInsertUsername("admin");
  436. amsDispatchSaleOrder.setInsertUpdateRemark("无");
  437. // 将车序号表改为已选承运商状态
  438. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  439. amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  440. amsSaleOrderMaterial.setIssueStatus(new BigDecimal(2));
  441. result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
  442. result += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial);
  443. }
  444. return result;
  445. }
  446. /**
  447. * 展示销售派单物资信息
  448. * @param dispatchId
  449. * @return
  450. */
  451. @Override
  452. public List<Map<String, Object>> getDispatchMaterialList(BigDecimal dispatchId) {
  453. List<Map<String, Object>> mapList = amsDispatchSaleOrderMapper.getDispatchMaterialList(dispatchId);
  454. return mapList;
  455. }
  456. }