AmsSaleOrderMaterialServiceImpl.java 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.feign.IMFeign;
  3. import com.steerinfo.dil.feign.TmsTruckFeign;
  4. import com.steerinfo.dil.mapper.*;
  5. import com.steerinfo.dil.model.*;
  6. import com.steerinfo.dil.service.IAmsSaleOrderMaterialService;
  7. import com.steerinfo.dil.util.DataChange;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import java.math.BigDecimal;
  12. import java.util.*;
  13. /**
  14. * AmsSaleOrderMaterial服务实现:
  15. * @author generator
  16. * @version 1.0-SNAPSHORT 2021-09-06 07:10
  17. * 类描述
  18. * 修订历史:
  19. * 日期:2021-09-06
  20. * 作者:generator
  21. * 参考:
  22. * 描述:AmsSaleOrderMaterial服务实现
  23. * @see null
  24. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  25. */
  26. @Service(value = "amsSaleOrderMaterialService")
  27. public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialService {
  28. @Autowired
  29. private AmsSaleOrderMaterialMapper amsSaleOrderMaterialMapper;
  30. @Autowired
  31. AmsSaleTrucknoMaterialMapper amsSaleTrucknoMaterialMapper;
  32. @Autowired
  33. AmsDispatchSaleOrderMapper amsDispatchSaleOrderMapper;
  34. @Autowired
  35. OmstruckOrderMapper omstruckOrderMapper;
  36. @Autowired
  37. OmstruckOrderMaterialMapper omstruckOrderMaterialMapper;
  38. @Autowired
  39. IMFeign imFeign;
  40. @Autowired
  41. TmsTruckFeign tmsTruckFeign;
  42. @Autowired
  43. AmsSaleOrderMapper amsSaleOrderMapper;
  44. @Autowired
  45. AmsContractTransportPriceMapper amsContractTransportPriceMapper;
  46. @Autowired
  47. RmsReceivePlaceMapper rmsReceivePlaceMapper;
  48. @Override
  49. public int addAmsSaleOrderMaterial(AmsSaleOrderMaterial amsSaleOrderMaterial) {
  50. long id;
  51. if(amsSaleOrderMaterialMapper.selectMaxId()==null){
  52. id = 1;
  53. }else {
  54. id = amsSaleOrderMaterialMapper.selectMaxId().longValue()+1;
  55. }
  56. //生成主键id
  57. amsSaleOrderMaterial.setSaleOrderMaterialId(new BigDecimal(id));
  58. //生成车序号
  59. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(id));
  60. //常规字段
  61. amsSaleOrderMaterial.setInsertUsername("admin");
  62. amsSaleOrderMaterial.setInsertTime(new Date());
  63. amsSaleOrderMaterial.setUpdateUsername("admin");
  64. amsSaleOrderMaterial.setUpdateTime(new Date());
  65. amsSaleOrderMaterial.setInsertUpdateRemark("无");
  66. amsSaleOrderMaterial.setDeleted(new BigDecimal(0));
  67. amsSaleOrderMaterial.setUpdated(new BigDecimal(0));
  68. return amsSaleOrderMaterialMapper.insert(amsSaleOrderMaterial);
  69. }
  70. @Override
  71. public List<Map<String, Object>> selectBySaleOrderMaterialId(BigDecimal saleOrderMaterialId) {
  72. return amsSaleOrderMaterialMapper.selectBySaleOrderMaterialId(saleOrderMaterialId);
  73. }
  74. @Override
  75. public int updateAmsSaleOrderMaterial(AmsSaleOrderMaterial amsSaleOrderMaterial) {
  76. amsSaleOrderMaterial.setUpdateTime(new Date());
  77. return amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial);
  78. }
  79. @Override
  80. public int deleteAmsSaleOrderMaterialBySaleOrderMaterialId(BigDecimal saleOrderMaterialId) {
  81. AmsSaleOrderMaterial amsSaleOrderMaterial = amsSaleOrderMaterialMapper.selectByPrimaryKey(saleOrderMaterialId);
  82. amsSaleOrderMaterial.setDeleted(new BigDecimal(1));
  83. return amsSaleOrderMaterialMapper.updateByPrimaryKey(amsSaleOrderMaterial);
  84. }
  85. @Override
  86. public String getAddress(BigDecimal saleOrderMaterialId) {
  87. return amsSaleOrderMaterialMapper.getAddress(saleOrderMaterialId);
  88. }
  89. @Override
  90. public int updateAddress(Map<String, Object> map) {
  91. String saleOrderMaterialId = map.get("saleOrderMaterialId").toString();
  92. //查询收货地址表中是否有该地址,无则新增,有则取收货地址Id
  93. String saleShippingAddress = (String) map.get("saleShippingAddress");
  94. BigDecimal addressId = amsSaleOrderMaterialMapper.getReceiveAddressId(saleShippingAddress);
  95. //获得原车次表信息
  96. AmsSaleOrderMaterial amsSaleOrderMaterial1 = amsSaleOrderMaterialMapper.selectByPrimaryKey(new BigDecimal(saleOrderMaterialId));
  97. if(addressId!=null){
  98. long id;
  99. if(amsSaleOrderMaterialMapper.selectMaxId()==null){
  100. id = 1;
  101. }else {
  102. id = amsSaleOrderMaterialMapper.selectMaxId().longValue()+1;
  103. }
  104. //生成主键id
  105. amsSaleOrderMaterial1.setSaleOrderMaterialId(new BigDecimal(id));
  106. amsSaleOrderMaterial1.setSaleShippingAddressId(addressId);
  107. //新增修改了地址的数据
  108. amsSaleOrderMaterialMapper.insert(amsSaleOrderMaterial1);
  109. }else {
  110. //新增收货地址,取得收货地址的Id
  111. Map<String,Object> mapReceive = new HashMap<>();
  112. long id;
  113. if(amsSaleOrderMaterialMapper.selectMaxIdReceive()==null){
  114. id = 1;
  115. }else {
  116. id = amsSaleOrderMaterialMapper.selectMaxIdReceive().longValue()+1;
  117. }
  118. mapReceive.put("addressId",new BigDecimal(id));
  119. mapReceive.put("addressDeliveryAddress",saleShippingAddress);
  120. amsSaleOrderMaterialMapper.insertReceiveAddress(mapReceive);
  121. //新增修改了地址的数据
  122. long id1;
  123. if(amsSaleOrderMaterialMapper.selectMaxId()==null){
  124. id1 = 1;
  125. }else {
  126. id1 = amsSaleOrderMaterialMapper.selectMaxId().longValue()+1;
  127. }
  128. //生成主键id
  129. amsSaleOrderMaterial1.setSaleOrderMaterialId(new BigDecimal(id1));
  130. amsSaleOrderMaterial1.setSaleShippingAddressId(new BigDecimal(id));
  131. //新增修改了地址的数据
  132. amsSaleOrderMaterialMapper.insert(amsSaleOrderMaterial1);
  133. }
  134. //修改原地址记录状态
  135. AmsSaleOrderMaterial amsSaleOrderMaterial2 = amsSaleOrderMaterialMapper.selectByPrimaryKey(new BigDecimal(saleOrderMaterialId));
  136. amsSaleOrderMaterial2.setUpdated(new BigDecimal(1));
  137. return amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial2);
  138. }
  139. @Override
  140. public List<Map<String, Object>> getAddressDeliveryAddress() {
  141. return amsSaleOrderMaterialMapper.getAddressDeliveryAddress();
  142. }
  143. public List<Map<String, Object>> getSaleMaterial(Map<String, Object> mapValue) {
  144. return amsSaleOrderMaterialMapper.getSaleMaterial(mapValue);
  145. }
  146. public Integer selectById(BigDecimal saleOrderMaterialId) {
  147. return amsSaleOrderMaterialMapper.selectById(saleOrderMaterialId);
  148. }
  149. public Integer selectByCxh(Map<String, Object> m) {
  150. return amsSaleOrderMaterialMapper.selectByCxh(m);
  151. }
  152. /**
  153. * 展示车序号信息
  154. * @param mapValue
  155. * @return
  156. */
  157. @Override
  158. public List<Map<String, Object>> getTruckNoList(Map<String, Object> mapValue) {
  159. List<Map<String,Object>> mapList = amsSaleOrderMaterialMapper.getTruckNoList(mapValue);
  160. return mapList;
  161. }
  162. /**
  163. * 添加车序号与物资
  164. * @param mapList
  165. * @return
  166. */
  167. @Transactional
  168. @Override
  169. public int addTruckNo(List<Map<String, Object>> mapList) {
  170. int result = 0;
  171. for (Map<String, Object> map : mapList) {
  172. // 销售订单id
  173. BigDecimal saleOrderId = DataChange.dataToBigDecimal(map.get("saleOrderId"));
  174. // 车序号
  175. BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("truckNo"));
  176. AmsSaleOrderMaterial amsSaleOrderMaterial;
  177. Map<String,Object> saleMap = new HashMap<>();
  178. saleMap.put("saleOrderId",saleOrderId);
  179. saleMap.put("saleOrderMaterialTruckNo",truckNo);
  180. // 检测销售订单下的车序号是否已存在
  181. List<AmsSaleOrderMaterial> amsSaleOrderMaterials = amsSaleOrderMaterialMapper.selectByParameters(saleMap);
  182. // 如果已存在则不处理
  183. if (amsSaleOrderMaterials != null && amsSaleOrderMaterials.size() != 0) {
  184. amsSaleOrderMaterial = amsSaleOrderMaterials.get(0);
  185. }
  186. // 如果不存在则新增车序号
  187. else {
  188. amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  189. // 收货地址id
  190. BigDecimal shippingAddressId = DataChange.dataToBigDecimal(map.get("shippingAddressId"));
  191. String place = (String) (map.get("place"));
  192. if (place != null) {
  193. List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
  194. if (placeIdList == null || placeIdList.size() == 0) {
  195. RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
  196. rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
  197. rmsReceivePlace.setAddressId(shippingAddressId);
  198. rmsReceivePlace.setAddressDeliveryAddress(place);
  199. amsSaleOrderMaterial.setSaleShippingAddressId(rmsReceivePlace.getPlaceId());
  200. rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
  201. } else {
  202. amsSaleOrderMaterial.setSaleShippingAddressId((BigDecimal) placeIdList.get(0).get("placeId"));
  203. }
  204. }
  205. // 截止日期
  206. // String dateOfReceiptStr = (String) map.get("dateOfReceipt");
  207. // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  208. Date dateOfReceipt = new Date((Long) map.get("dateOfReceipt"));
  209. // try {
  210. // dateOfReceipt = sdf.parse(dateOfReceiptStr);
  211. // } catch (ParseException e) {
  212. // e.printStackTrace();
  213. // }
  214. // 收货方姓名
  215. String orderConsignee = (String) map.get("orderConsignee");
  216. // 收货方联系方式
  217. Object orderConsigneeTel = map.get("orderConsigneeTel");
  218. BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
  219. amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  220. amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
  221. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(truckNo);
  222. // 钢材收货日期
  223. amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
  224. amsSaleOrderMaterial.setSaleOrderConsignee(orderConsignee);
  225. if (orderConsignee != null) {
  226. amsSaleOrderMaterial.setSaleOrderConsigneeTel(orderConsigneeTel.toString());
  227. }
  228. Object priceId = map.get("priceId");
  229. if(priceId != null && !"".equals(priceId)) amsSaleOrderMaterial.setPriceId(DataChange.dataToBigDecimal(priceId));
  230. amsSaleOrderMaterial.setInsertTime(new Date());
  231. amsSaleOrderMaterial.setInsertUsername("admin");
  232. amsSaleOrderMaterial.setDeleted(new BigDecimal(0));
  233. amsSaleOrderMaterial.setInsertUpdateRemark("无");
  234. amsSaleOrderMaterial.setUpdated(new BigDecimal(0));
  235. amsSaleOrderMaterial.setIssueStatus(new BigDecimal(0));
  236. result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  237. }
  238. // 新增车序号与物资中间表
  239. AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  240. // 物资id
  241. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("saleMaterialId"));
  242. // 物资数量
  243. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  244. BigDecimal saleTrucknoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
  245. amsSaleTrucknoMaterial.setTrucknoMaterialId(saleTrucknoMaterialId);
  246. amsSaleTrucknoMaterial.setMaterialId(materialId);
  247. amsSaleTrucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  248. amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
  249. amsSaleTrucknoMaterial.setInsertTime(new Date());
  250. amsSaleTrucknoMaterial.setInsertUsername("admin");
  251. amsSaleTrucknoMaterial.setInsertUpdateRemark("无");
  252. result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
  253. }
  254. return result;
  255. }
  256. /**
  257. * 下发车序号
  258. * @param mapList
  259. * @return
  260. */
  261. @Override
  262. public int issueTruckNo(List<Map<String, Object>> mapList) {
  263. int result = 0;
  264. for (Map<String, Object> map : mapList) {
  265. BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
  266. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  267. amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  268. amsSaleOrderMaterial.setIssueStatus(new BigDecimal(1));
  269. result += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial);
  270. }
  271. return result;
  272. }
  273. /**
  274. * 展示车序号下的物资详情
  275. * @param saleOrderMaterialId
  276. * @return
  277. */
  278. @Override
  279. public List<Map<String, Object>> getTruckNoMaterialList(BigDecimal saleOrderMaterialId) {
  280. List<Map<String, Object>> mapList = amsSaleOrderMaterialMapper.getTruckNoMaterialList(saleOrderMaterialId);
  281. return mapList;
  282. }
  283. /**
  284. * 销售订单下的物资
  285. * @param saleOrderId
  286. * @return
  287. */
  288. @Override
  289. public List<Map<String, Object>> getSaleMaterialList(BigDecimal saleOrderId) {
  290. List<Map<String, Object>> saleMaterialList = amsSaleOrderMaterialMapper.getSaleMaterialList(saleOrderId);
  291. return saleMaterialList;
  292. }
  293. /**
  294. * 销售直接派发销售订单
  295. * @param mapValue
  296. * @return
  297. */
  298. @Transactional
  299. @Override
  300. public int dispatchTruckOrderBySale(Map<String, Object> mapValue) {
  301. int result = 0;
  302. // 得到列内容
  303. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  304. // 销售订单主键
  305. BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapValue.get("saleOrderId"));
  306. if(mapValue.get("sendAgain") == null){
  307. // 得到销售订单中的总重量和销售订单下的总净重
  308. BigDecimal saleMaterialWeight = amsSaleOrderMaterialMapper.getMaterialWeightByOrderId(saleOrderId);
  309. BigDecimal saleMaterialNetWeight = amsSaleOrderMaterialMapper.getMaterialNetWeightBySaleId(saleOrderId);
  310. if (saleMaterialNetWeight == null) {
  311. saleMaterialNetWeight = new BigDecimal(0);
  312. }
  313. // 计算净重所占销售订单中的比例
  314. Double percent = saleMaterialNetWeight.doubleValue()/saleMaterialWeight.doubleValue();
  315. if (percent >= 0.97) {
  316. return -1;
  317. }
  318. }
  319. // 车序号计数
  320. int count = 1;
  321. // 遍历每一个列
  322. for (Map<String, Object> map : mapList) {
  323. // 销售订单-物资中间表id
  324. BigDecimal saleMaterialId = DataChange.dataToBigDecimal(map.get("saleMaterialId"));
  325. // 物资id
  326. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  327. // 承运商id
  328. BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
  329. // 运输线路id
  330. BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
  331. // 通过线路id判断是否是钢材
  332. BigDecimal isSteel = amsSaleOrderMaterialMapper.getIsSteel(lineId);
  333. // 物资重量
  334. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("orderPlanWeight"));
  335. // 车牌号
  336. String capacityNumber = (String) map.get("capacityNumber");
  337. // 得到运力id
  338. BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
  339. // 收货方姓名
  340. String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
  341. // 收货方电话
  342. String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
  343. // 截止日期
  344. String dateOfReceiptStr = String.valueOf(map.get("saleDateOfReceipt"));
  345. Date dateOfReceipt = null;
  346. if (!"null".equals(dateOfReceiptStr) && !"undefined".equals(dateOfReceiptStr)) {
  347. dateOfReceipt = new Date(Long.valueOf(dateOfReceiptStr));
  348. }
  349. /*
  350. 车序号表
  351. */
  352. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  353. // 收货地址id
  354. BigDecimal shippingAddressId = DataChange.dataToBigDecimal(map.get("saleShipperAddressId"));
  355. String place = (String) (map.get("place"));
  356. if (place != null) {
  357. List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
  358. if (placeIdList == null || placeIdList.size() == 0) {
  359. RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
  360. rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
  361. rmsReceivePlace.setAddressId(shippingAddressId);
  362. rmsReceivePlace.setAddressDeliveryAddress(place);
  363. amsSaleOrderMaterial.setSaleShippingAddressId(rmsReceivePlace.getPlaceId());
  364. rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
  365. } else {
  366. amsSaleOrderMaterial.setSaleShippingAddressId((BigDecimal) placeIdList.get(0).get("placeId"));
  367. }
  368. }
  369. // 主键
  370. BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
  371. amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  372. // 销售订单主键
  373. amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
  374. // 车序号
  375. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(count));
  376. // 截止日期
  377. amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
  378. // 收货方姓名
  379. if (!consigneeName.equals("null") && !consigneeName.equals("undefined")) {
  380. amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
  381. }
  382. // 收货方联系方式
  383. if (!consigneeTel.equals("null") && !consigneeTel.equals("undefined")) {
  384. amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
  385. }
  386. // 下发状态
  387. amsSaleOrderMaterial.setIssueStatus(new BigDecimal(2));
  388. /*
  389. 车序号与物资子表
  390. */
  391. AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  392. // 主键
  393. BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
  394. amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
  395. // 销售订单-物资中间表id
  396. amsSaleTrucknoMaterial.setMaterialId(saleMaterialId);
  397. // 车序号主键
  398. amsSaleTrucknoMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  399. // 物资重量
  400. amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
  401. /*
  402. 定向派单表
  403. */
  404. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  405. // 主键
  406. BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
  407. amsDispatchSaleOrder.setDispatchId(dispatchId);
  408. // 车序号表id
  409. amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
  410. // 承运商id
  411. amsDispatchSaleOrder.setCarrierId(carrierId);
  412. // 派单时间和成交时间
  413. amsDispatchSaleOrder.setDispatchTime(new Date());
  414. amsDispatchSaleOrder.setDispatchDealTime(new Date());
  415. // 成交类型
  416. amsDispatchSaleOrder.setDispatchType(new BigDecimal(0));
  417. // 车序号状态
  418. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
  419. /*
  420. 运输订单
  421. */
  422. OmstruckOrder omstruckOrder = new OmstruckOrder();
  423. // 运输订单主键
  424. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  425. omstruckOrder.setOrderId(orderId);
  426. // 车序号主键
  427. omstruckOrder.setOrderPlanId(saleOrderMaterialId);
  428. //添加承运商ID 和 运价ID
  429. // Object priceId = map.get("priceId");
  430. Object priceId = map.get("priceId");
  431. if (priceId != null) {
  432. omstruckOrder.setPriceId(DataChange.dataToBigDecimal(priceId));
  433. }
  434. omstruckOrder.setCarrierId(carrierId);
  435. // 运输订单号
  436. omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD",orderId.intValue()));
  437. // 运力id
  438. omstruckOrder.setCapacityId(capacityId);
  439. // 承运商
  440. omstruckOrder.setCarrierId(carrierId);
  441. // 下发时间
  442. omstruckOrder.setOrderIssueTime(new Date());
  443. // 运单状态
  444. omstruckOrder.setOrderStatus(new BigDecimal(4));
  445. BigDecimal status;
  446. // 钢材
  447. if (isSteel != null && isSteel.intValue() == 1) {
  448. status = new BigDecimal(1);
  449. }
  450. // 非钢材(危化品,焦炭,副产品)
  451. else {
  452. status = new BigDecimal(2);
  453. }
  454. // 订单类型
  455. omstruckOrder.setOrderType(status);
  456. // 运输线路id
  457. omstruckOrder.setLineId(lineId);
  458. omstruckOrder.setInsertTime(new Date());
  459. /*
  460. 运输订单子表
  461. */
  462. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  463. // 主键
  464. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  465. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  466. // 运输订单id
  467. omstruckOrderMaterial.setOrderId(orderId);
  468. // 物资id
  469. omstruckOrderMaterial.setMaterialId(materialId);
  470. // 物资重量
  471. omstruckOrderMaterial.setOrderMaterialWeight(materialNumber);
  472. omstruckOrderMaterial.setInsertTime(new Date());
  473. // 新增车序号表
  474. result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  475. // 新增车序号-物资中间表
  476. result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
  477. // 新增定向派单表
  478. result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
  479. // 新增运输订单
  480. result += omstruckOrderMapper.insertSelective(omstruckOrder);
  481. // 新增运输订单子表
  482. result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  483. // 调用websocket
  484. Map<String,Object> orderIdMap = new HashMap<>();
  485. orderIdMap.put("orderId",orderId);
  486. pushMesToWebsocket(orderIdMap);
  487. // 生成运输执行总实绩
  488. result += tmsTruckFeign.addTotalResult(orderIdMap);
  489. // 车序号累加
  490. count++;
  491. }
  492. return result;
  493. }
  494. @Override
  495. public int updateInwardConsignee(Map<String, Object> mapValue) {
  496. if(mapValue.get("saleMaterialId") != null && mapValue.get("sendStationId") != null ){
  497. amsSaleOrderMaterialMapper.updateSendStation(mapValue);
  498. }
  499. if(mapValue.get("saleOrderId") != null && mapValue.get("consigneeId") != null){
  500. amsSaleOrderMaterialMapper.updateInwardConsignee(mapValue);
  501. }
  502. return 1;
  503. }
  504. /**
  505. * 内转钢材派发订单
  506. * @param mapValue
  507. * @return
  508. */
  509. @Override
  510. @Transactional(rollbackFor = Exception.class)
  511. public int dispatchInwardTruckOrderBySale(Map<String, Object> mapValue) {
  512. int result = 0;
  513. // 得到列内容
  514. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  515. // 销售订单主键
  516. BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapValue.get("saleOrderId"));
  517. // 车序号计数
  518. int count = 1;
  519. /*
  520. 车序号表,只生成一次,对应多个子表(物资)
  521. */
  522. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  523. // 主键
  524. BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
  525. amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  526. // 销售订单主键
  527. amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
  528. // 车序号
  529. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(count));
  530. // 下发状态
  531. amsSaleOrderMaterial.setIssueStatus(new BigDecimal(2));
  532. // 新增车序号表
  533. result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  534. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  535. if(mapList.size()>=1){
  536. //更新发站
  537. Map<String,Object> map=mapList.get(0);
  538. amsSaleOrderMaterialMapper.updateSendStation(map);
  539. /*
  540. 运输订单
  541. */
  542. OmstruckOrder omstruckOrder = new OmstruckOrder();
  543. // 运输订单主键
  544. omstruckOrder.setOrderId(orderId);
  545. // 车序号主键
  546. omstruckOrder.setOrderPlanId(saleOrderMaterialId);
  547. //添加承运商ID 和 运价ID
  548. // Object priceId = map.get("priceId");
  549. Object priceId = map.get("priceId");
  550. if (priceId != null) {
  551. omstruckOrder.setPriceId(DataChange.dataToBigDecimal(priceId));
  552. }
  553. // 承运商id
  554. BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
  555. // 运输线路id
  556. BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
  557. // 车牌号
  558. String capacityNumber = (String) map.get("capacityNumber");
  559. // 得到运力id
  560. BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
  561. // 运输订单号
  562. omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD",orderId.intValue()));
  563. // 运力id
  564. omstruckOrder.setCapacityId(capacityId);
  565. // 承运商
  566. omstruckOrder.setCarrierId(carrierId);
  567. // 下发时间
  568. omstruckOrder.setOrderIssueTime(new Date());
  569. // 运单状态
  570. omstruckOrder.setOrderStatus(new BigDecimal(4));
  571. // 订单类型
  572. omstruckOrder.setOrderType(new BigDecimal(4));
  573. // 运输线路id
  574. omstruckOrder.setLineId(lineId);
  575. omstruckOrder.setInsertTime(new Date());
  576. // 新增运输订单
  577. result += omstruckOrderMapper.insertSelective(omstruckOrder);
  578. }
  579. // 遍历每一个列
  580. for (Map<String, Object> map : mapList) {
  581. // 销售订单-物资中间表id
  582. BigDecimal saleMaterialId = DataChange.dataToBigDecimal(map.get("saleMaterialId"));
  583. // 物资id
  584. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  585. // 承运商id
  586. BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
  587. // 运输线路id
  588. BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
  589. // 通过线路id判断是否是钢材
  590. BigDecimal isSteel = amsSaleOrderMaterialMapper.getIsSteel(lineId);
  591. // 物资重量
  592. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialWeight"));
  593. // 物资数量
  594. BigDecimal materialNum = DataChange.dataToBigDecimal(map.get("materialNum"));
  595. // 车牌号
  596. String capacityNumber = (String) map.get("capacityNumber");
  597. // 得到运力id
  598. BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
  599. // 收货方姓名
  600. String consigneeName = String.valueOf(map.get("consigneeName"));
  601. // 收货方电话
  602. //String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
  603. // 截止日期
  604. String dateOfReceiptStr = String.valueOf(map.get("saleDateOfReceipt"));
  605. Date dateOfReceipt = null;
  606. if (!"null".equals(dateOfReceiptStr) && !"undefined".equals(dateOfReceiptStr)) {
  607. dateOfReceipt = new Date(Long.valueOf(dateOfReceiptStr));
  608. }
  609. /*
  610. 车序号与物资子表
  611. */
  612. AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  613. // 主键
  614. BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
  615. amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
  616. // 销售订单-物资中间表id
  617. amsSaleTrucknoMaterial.setMaterialId(saleMaterialId);
  618. // 车序号主键
  619. amsSaleTrucknoMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  620. // 物资重量
  621. amsSaleTrucknoMaterial.setMaterialTheoreticalWeight(materialNumber);
  622. amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNum);
  623. /*
  624. 定向派单表
  625. */
  626. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  627. // 主键
  628. BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
  629. amsDispatchSaleOrder.setDispatchId(dispatchId);
  630. // 车序号表id
  631. amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
  632. // 承运商id
  633. amsDispatchSaleOrder.setCarrierId(carrierId);
  634. // 派单时间和成交时间
  635. amsDispatchSaleOrder.setDispatchTime(new Date());
  636. amsDispatchSaleOrder.setDispatchDealTime(new Date());
  637. // 成交类型
  638. amsDispatchSaleOrder.setDispatchType(new BigDecimal(0));
  639. // 车序号状态
  640. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
  641. /*
  642. 运输订单子表
  643. */
  644. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  645. // 主键
  646. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  647. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  648. // 运输订单id
  649. omstruckOrderMaterial.setOrderId(orderId);
  650. // 物资id
  651. omstruckOrderMaterial.setMaterialId(materialId);
  652. // 物资重量
  653. omstruckOrderMaterial.setOrderMaterialWeight(materialNumber);
  654. //物资数量
  655. omstruckOrderMaterial.setOrderMaterialNumber(materialNum);
  656. omstruckOrderMaterial.setInsertTime(new Date());
  657. // 新增车序号-物资中间表
  658. result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
  659. // 新增定向派单表
  660. result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
  661. // 新增运输订单子表
  662. result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  663. // 车序号累加
  664. count++;
  665. }
  666. // 调用websocket
  667. Map<String,Object> orderIdMap = new HashMap<>();
  668. orderIdMap.put("orderId",orderId);
  669. pushMesToWebsocket(orderIdMap);
  670. // 生成运输执行总实绩
  671. result += tmsTruckFeign.addTotalResult(orderIdMap);
  672. return result;
  673. }
  674. /**
  675. * 承运商直接派发销售订单
  676. * @param mapValue
  677. * @return
  678. */
  679. @Override
  680. public int dispatchTruckOrderByCarrier(Map<String, Object> mapValue) {
  681. int result = 0;
  682. // 得到列内容
  683. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  684. // 销售订单主键
  685. BigDecimal saleOrderId = DataChange.dataToBigDecimal(mapValue.get("saleOrderId"));
  686. // 得到最大的车序号
  687. BigDecimal count = DataChange.dataToBigDecimal(mapValue.get("truckNo"));
  688. // 车序号计数
  689. if (count.intValue() == 0) {
  690. count = new BigDecimal(1);
  691. }
  692. // 遍历每一个列
  693. for (Map<String, Object> map : mapList) {
  694. // 销售订单-物资中间表id
  695. BigDecimal saleMaterialId = DataChange.dataToBigDecimal(map.get("saleMaterialId"));
  696. // 物资id
  697. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  698. // 收货地址id
  699. BigDecimal saleShippingAddressId = DataChange.dataToBigDecimal(map.get("saleShippingAddressId"));
  700. if (saleShippingAddressId.intValue() == 0) {
  701. saleShippingAddressId = null;
  702. }
  703. // 承运商id
  704. BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
  705. // 运输线路id
  706. BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
  707. // 通过线路id判断是否是钢材
  708. BigDecimal isSteel = amsSaleOrderMaterialMapper.getIsSteel(lineId);
  709. // 物资重量
  710. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("orderPlanWeight"));
  711. // 车牌号
  712. String capacityNumber = (String) map.get("capacityNumber");
  713. // 得到运力id
  714. BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
  715. // 收货方姓名
  716. String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
  717. // 收货方电话
  718. String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
  719. // 截止日期
  720. String dateOfReceiptStr = "4102415999000";
  721. Date dateOfReceipt = new Date(Long.valueOf(dateOfReceiptStr));
  722. /*
  723. 车序号表
  724. */
  725. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  726. // 主键
  727. BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
  728. amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  729. // 销售订单主键
  730. amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
  731. // 车序号
  732. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(count);
  733. // 收货地址
  734. amsSaleOrderMaterial.setSaleShippingAddressId(saleShippingAddressId);
  735. // 截止日期
  736. amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
  737. // 收货方姓名
  738. if (!consigneeName.equals("null") && !consigneeName.equals("undefined")) {
  739. amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
  740. }
  741. // 收货方联系方式
  742. if (!consigneeTel.equals("null") && !consigneeTel.equals("undefined")) {
  743. amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
  744. }
  745. // 下发状态
  746. amsSaleOrderMaterial.setIssueStatus(new BigDecimal(2));
  747. /*
  748. 车序号与物资子表
  749. */
  750. AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  751. // 主键
  752. BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
  753. amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
  754. // 销售订单-物资中间表id
  755. amsSaleTrucknoMaterial.setMaterialId(saleMaterialId);
  756. // 车序号主键
  757. amsSaleTrucknoMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  758. // 物资重量
  759. amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
  760. /*
  761. 定向派单表
  762. */
  763. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  764. // 主键
  765. BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
  766. amsDispatchSaleOrder.setDispatchId(dispatchId);
  767. // 车序号表id
  768. amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
  769. // 承运商id
  770. amsDispatchSaleOrder.setCarrierId(carrierId);
  771. // 派单时间和成交时间
  772. amsDispatchSaleOrder.setDispatchTime(new Date());
  773. amsDispatchSaleOrder.setDispatchDealTime(new Date());
  774. // 成交类型
  775. amsDispatchSaleOrder.setDispatchType(new BigDecimal(0));
  776. // 车序号状态
  777. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
  778. /*
  779. 运输订单
  780. */
  781. OmstruckOrder omstruckOrder = new OmstruckOrder();
  782. String orgCode =(String) mapValue.get("orgCode");
  783. if (orgCode==null||orgCode.equals("")){
  784. }else {
  785. omstruckOrder.setOptionerCode(orgCode);
  786. }
  787. // 运输订单主键
  788. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  789. omstruckOrder.setOrderId(orderId);
  790. omstruckOrder.setCarrierId(carrierId);
  791. // 车序号主键
  792. omstruckOrder.setOrderPlanId(saleOrderMaterialId);
  793. // 运输订单号
  794. omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD",orderId.intValue()));
  795. // 运力id
  796. omstruckOrder.setCapacityId(capacityId);
  797. // 下发时间
  798. omstruckOrder.setOrderIssueTime(new Date());
  799. // 承运商
  800. omstruckOrder.setCarrierId(carrierId);
  801. // 运单状态
  802. omstruckOrder.setOrderStatus(new BigDecimal(4));
  803. BigDecimal status;
  804. status = new BigDecimal(2);
  805. // 非钢材(危化品和焦炭)
  806. // if (isSteel != null && (isSteel.intValue() == 3 || isSteel.intValue() == 4 || isSteel.intValue() == 6)) {
  807. // status = new BigDecimal(2);
  808. // }
  809. // // 钢材
  810. // else {
  811. // status = new BigDecimal(1);
  812. // }
  813. // 订单类型
  814. omstruckOrder.setOrderType(status);
  815. // 运输线路id
  816. omstruckOrder.setLineId(lineId);
  817. omstruckOrder.setInsertTime(new Date());
  818. /*
  819. 运输订单子表
  820. */
  821. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  822. // 主键
  823. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  824. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  825. // 运输订单id
  826. omstruckOrderMaterial.setOrderId(orderId);
  827. // 物资id
  828. omstruckOrderMaterial.setMaterialId(materialId);
  829. // 物资重量
  830. omstruckOrderMaterial.setOrderMaterialWeight(materialNumber);
  831. // 新增车序号表
  832. result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  833. // 新增车序号-物资中间表
  834. result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
  835. // 新增定向派单表
  836. result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
  837. // 新增运输订单
  838. result += omstruckOrderMapper.insertSelective(omstruckOrder);
  839. // 新增运输订单子表
  840. result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  841. // 调用websocket
  842. Map<String,Object> orderIdMap = new HashMap<>();
  843. orderIdMap.put("orderId",orderId);
  844. pushMesToWebsocket(orderIdMap);
  845. // 生成运输执行总实绩
  846. result += tmsTruckFeign.addTotalResult(orderIdMap);
  847. // 车序号累加
  848. count = new BigDecimal(count.intValue() + 1);
  849. }
  850. // 修改状态为开启状态
  851. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  852. amsSaleOrder.setSaleOrderId(saleOrderId);
  853. amsSaleOrder.setCloseStatus(new BigDecimal(0));
  854. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  855. return result;
  856. }
  857. /**
  858. * 关闭销售订单
  859. * @param saleOrderId
  860. * @return
  861. */
  862. @Override
  863. public int closeSaleOrder(BigDecimal saleOrderId) {
  864. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  865. amsSaleOrder.setSaleOrderId(saleOrderId);
  866. amsSaleOrder.setCloseStatus(new BigDecimal(1));
  867. int result = amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  868. return result;
  869. }
  870. /**
  871. * 发送消息到 websocket 推送消息
  872. * orderId 订单Id
  873. * @return
  874. */
  875. public String pushMesToWebsocket(Map<String, Object> map) {
  876. Map<String, Object> mesMap = omstruckOrderMapper.pushMesToWebsocket(map);
  877. //添加消息实体
  878. HashMap<Object, Object> mapp = new HashMap<>();
  879. mapp.put("messageType", 3);
  880. mapp.put("sendPerson", "system");
  881. mapp.put("receivePerson", mesMap.get("capacityNumber"));
  882. mapp.put("messageContent",(String) mesMap.get("orderNumber") + new Date());
  883. mapp.put("createTime", new Date());
  884. ArrayList<Object> list = new ArrayList<>();
  885. list.add(mapp);
  886. //调用websocket接口推送
  887. HashMap<Object, Object> sendMap = new HashMap<>();
  888. //将消息实体放入list中存到map中
  889. sendMap.put("messages", list);
  890. String s = imFeign.sendToUser(sendMap);
  891. System.out.println(s);
  892. return s;
  893. }
  894. @Override
  895. public Map<String, Object> getPriceMap(Map<String, Object> map) {
  896. Object addressId = map.get("addressId");
  897. String place = (String) map.get("place");
  898. Map<String,Object> priceMap = new HashMap<>();
  899. priceMap.put("addressId",addressId);
  900. priceMap.put("place",place);
  901. BigDecimal priceId = omstruckOrderMapper.getPriceId(priceMap);
  902. BigDecimal priceValue;
  903. if (priceId == null) {
  904. priceValue = omstruckOrderMapper.findMaxPrice(addressId);
  905. if (priceValue != null) {
  906. priceMap.put("priceValue", priceValue);
  907. List<Map<String, Object>> priceIdList = omstruckOrderMapper.findMaxPriceId(priceMap);
  908. priceId = (BigDecimal) priceIdList.get(0).get("priceId");
  909. }
  910. else {
  911. Map<String,Object> map1 = new HashMap<>();
  912. map1.put("priceValue",-1);
  913. map1.put("priceId",-1);
  914. return map1;
  915. }
  916. }
  917. else {
  918. AmsContractTransportPrice amsContractTransportPrice = amsContractTransportPriceMapper.selectByPrimaryKey(priceId);
  919. priceValue = amsContractTransportPrice.getPriceValue();
  920. }
  921. priceMap.put("priceId",priceId);
  922. priceMap.put("priceValue",priceValue);
  923. return priceMap;
  924. }
  925. /**
  926. * 得到单价和单价id
  927. * @param map
  928. * @return
  929. */
  930. @Override
  931. public Map<String, Object> getBenPrice(Map<String, Object> map) {
  932. BigDecimal saleOrderId = DataChange.dataToBigDecimal(map.get("saleOrderId"));
  933. BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
  934. Map<String, Object> saleMessage = amsSaleOrderMaterialMapper.getSaleMessage(saleOrderId);
  935. String isSelfMention = (String) saleMessage.get("isSelfMention");
  936. BigDecimal receiveId = (BigDecimal) saleMessage.get("receiveId");
  937. BigDecimal priceId = null;
  938. BigDecimal priceValue = null;
  939. Map<String,Object> resultMap = new HashMap<>();
  940. List<Map<String,Object>> mapList = amsSaleOrderMaterialMapper.getPriceList(carrierId);
  941. if ((isSelfMention.equals("否") && receiveId.intValue() == 1516) && (mapList != null && mapList.size() != 0)) {
  942. Map<String, Object> priceMap = mapList.get(1);
  943. priceId = (BigDecimal) priceMap.get("priceId");
  944. priceValue = (BigDecimal) priceMap.get("priceValue");
  945. }
  946. if ((isSelfMention.equals("否") && receiveId.intValue() == 836) && (mapList != null && mapList.size() != 0)) {
  947. Map<String, Object> priceMap = mapList.get(0);
  948. priceId = (BigDecimal) priceMap.get("priceId");
  949. priceValue = (BigDecimal) priceMap.get("priceValue");
  950. }
  951. resultMap.put("priceId",priceId);
  952. resultMap.put("priceValue",priceValue);
  953. return resultMap;
  954. }
  955. }