AmsSaleOrderServiceImpl.java 65 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364
  1. package com.steerinfo.dil.service.impl;
  2. import com.alibaba.druid.support.json.JSONUtils;
  3. import com.steerinfo.dil.feign.JoinFeign;
  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.IAmsSaleOrderService;
  8. import com.steerinfo.dil.util.DataChange;
  9. import com.steerinfo.dil.util.EASUtil;
  10. import com.steerinfo.dil.util.NumberToWeightUtil;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import java.math.BigDecimal;
  15. import java.text.ParseException;
  16. import java.text.SimpleDateFormat;
  17. import java.util.*;
  18. /**
  19. * AmsSaleOrder服务实现:
  20. *
  21. * @author generator
  22. * @version 1.0-SNAPSHORT 2021-09-06 07:10
  23. * 类描述
  24. * 修订历史:
  25. * 日期:2021-09-06
  26. * 作者:generator
  27. * 参考:
  28. * 描述:AmsSaleOrder服务实现
  29. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  30. * @see null
  31. */
  32. @Service(value = "amsSaleOrderService")
  33. public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
  34. @Autowired
  35. private AmsSaleOrderMapper amsSaleOrderMapper;
  36. @Autowired
  37. private AmsSaleOrderMaterialMapper amsSaleOrderMaterialMapper;
  38. @Autowired
  39. private AmsSaleTrucknoMaterialMapper trucknoMaterialMapper;
  40. @Autowired
  41. AmsDispatchSaleOrderMapper amsDispatchSaleOrderMapper;
  42. @Autowired
  43. AmsSaleMaterialMapper amsSaleMaterialMapper;
  44. @Autowired
  45. AmsSaleTrucknoMaterialMapper amsSaleTrucknoMaterialMapper;
  46. @Autowired
  47. RmsReceivePlaceMapper rmsReceivePlaceMapper;
  48. @Autowired
  49. JoinFeign joinFeign;
  50. @Autowired
  51. OmstruckOrderMapper omstruckOrderMapper;
  52. @Autowired
  53. OmstruckOrderMaterialMapper omstruckOrderMaterialMapper;
  54. @Autowired
  55. AmsSaleOrderMaterialServiceImpl amsSaleOrderMaterialService;
  56. @Autowired
  57. TmsTruckFeign tmsTruckFeign;
  58. @Autowired
  59. EASUtil easUtil;
  60. @Override
  61. public List<Map<String, Object>> getSaleOrderInfo(Map<String, Object> map) {
  62. return amsSaleOrderMapper.getSaleOrderInfo(map);
  63. }
  64. @Override
  65. public List<Map<String, Object>> getSaleOrderReported(Map<String, Object> map) {
  66. return amsSaleOrderMapper.getSaleOrderReported(map);
  67. }
  68. @Override
  69. public List<Map<String, Object>> getSaleOrderDetail(Map<String, Object> map) {
  70. return amsSaleOrderMapper.getSaleOrderDetail(map);
  71. }
  72. @Override
  73. public List<Map<String, Object>> getSalePlanName() {
  74. return amsSaleOrderMapper.getSalePlanName();
  75. }
  76. @Override
  77. public List<Map<String, Object>> getShipperName() {
  78. return amsSaleOrderMapper.getShipperName();
  79. }
  80. @Override
  81. public List<Map<String, Object>> getConsigneeCompanyName() {
  82. return amsSaleOrderMapper.getConsigneeCompanyName();
  83. }
  84. @Override
  85. /**
  86. * map存放为前端获取的amsSaleOrder基础数据以及selectionList物资信息
  87. * map1为基础数据包括,收货地址,收货人等
  88. * map2存放的从selectionList取出的数据,包括物资id,物资名称等。
  89. */
  90. public int addAmsSaleOrder(Map<String, Object> map) throws ParseException {
  91. //获取前端传过来的map,
  92. int i = 0;
  93. Map<String, Object> map1 = (Map<String, Object>) map.get("amsSaleOrder");
  94. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  95. Integer id = (amsSaleOrderMapper.selectMaxId()).intValue();
  96. //生成主键id
  97. amsSaleOrder.setSaleOrderId(new BigDecimal(id));
  98. //WXSDD-年月日-8位数的顺序号
  99. String wxsdd = DataChange.generateEightDigitsNumber("WXSDD", id);
  100. amsSaleOrder.setSaleNumber(wxsdd);
  101. //获得是否自提
  102. amsSaleOrder.setSaleOrderIsselfMention((String) map1.get("saleOrderIsselfMention"));
  103. //获取收货地址id
  104. amsSaleOrder.setReceiveId(DataChange.dataToBigDecimal(map1.get("receiveId")));
  105. //获取发货单位id
  106. amsSaleOrder.setShipperId(DataChange.dataToBigDecimal(map1.get("shipperId")));
  107. //获取备注
  108. amsSaleOrder.setSaleRemark((String) map1.get("saleRemark"));
  109. //设置销售订单状态
  110. amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
  111. amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
  112. amsSaleOrder.setSaleOrderTax("13%");
  113. amsSaleOrder.setInsertUsername("admin");
  114. amsSaleOrder.setInsertTime(new Date());
  115. amsSaleOrder.setUpdateUsername("admin");
  116. amsSaleOrder.setUpdateTime(new Date());
  117. amsSaleOrder.setInsertUpdateRemark("无");
  118. amsSaleOrder.setDeleted(new BigDecimal(0));
  119. amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
  120. //设置收款客户
  121. amsSaleOrder.setSaleOrderReceiveCustomer((String) map1.get("saleOrderReceiveCustomer"));
  122. i += amsSaleOrderMapper.insertSelective(amsSaleOrder);
  123. //获取车序号和物资信息进行新增车序号与物资中间表
  124. //一个销售订单对应多个车序号
  125. List<Map<String, Object>> selectionList = (List<Map<String, Object>>) map.get("selectionList");
  126. for (Map<String, Object> map2 : selectionList) {
  127. BigDecimal materialId = DataChange.dataToBigDecimal(map2.get("materialId"));
  128. Integer cxh = (Integer) map2.get("cxh");
  129. //生成车序号与物资实体
  130. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  131. //生成主键
  132. amsSaleOrderMaterial.setSaleOrderMaterialId(amsSaleOrderMaterialMapper.selectMaxId());
  133. amsSaleOrderMaterial.setSaleOrderId(amsSaleOrder.getSaleOrderId());
  134. // 生成定向派单
  135. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  136. amsDispatchSaleOrder.setDispatchId(amsDispatchSaleOrderMapper.selectOtherId());
  137. amsDispatchSaleOrder.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  138. //获取收货地址
  139. Integer saleShipperAddressId =(Integer) map2.get("saleShipperAddressId");
  140. amsSaleOrderMaterial.setSaleShippingAddressId(new BigDecimal(saleShipperAddressId));
  141. //根据收货地址查询承运商
  142. Map<String,Object> map4 = amsSaleOrderMapper.selectProvince(saleShipperAddressId);
  143. BigDecimal carrierId = amsSaleOrderMapper.selectCarrierIdByprovince(map4);
  144. //获取收货方电话号码
  145. amsDispatchSaleOrder.setCarrierId(carrierId);
  146. amsDispatchSaleOrder.setDispatchTime(new Date());
  147. //设置成交类型
  148. amsDispatchSaleOrder.setDispatchType(new BigDecimal(0));
  149. //设置下发状态为未下发
  150. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(1));
  151. amsDispatchSaleOrder.setInsertTime(new Date());
  152. amsDispatchSaleOrder.setInsertUsername("admin");
  153. amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
  154. amsSaleOrderMaterial.setSaleOrderConsigneeTel(map2.get("saleOrderConsigneeTel").toString());
  155. //获取收货日期
  156. String saleDateOfReceipt =(String) map2.get("saleDateOfReceipt");
  157. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
  158. Date date = simpleDateFormat.parse(saleDateOfReceipt);
  159. amsSaleOrderMaterial.setSaleDateOfReceipt(date);
  160. //获取收货方姓名
  161. amsSaleOrderMaterial.setSaleOrderConsignee((String) map2.get("saleOrderConsignee"));
  162. //设置车序号
  163. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(cxh));
  164. //设置删除状态
  165. amsSaleOrderMaterial.setDeleted(new BigDecimal(0));
  166. i += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  167. //新增车序号与物资中间表
  168. AmsSaleTrucknoMaterial trucknoMaterial = new AmsSaleTrucknoMaterial();
  169. trucknoMaterial.setTrucknoMaterialId(trucknoMaterialMapper.selectMaxId());
  170. //设置物资id
  171. trucknoMaterial.setMaterialId(materialId);
  172. //获取车序号物资id
  173. trucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  174. Integer orderPlanWeight = (Integer) map2.get("orderPlanWeight");
  175. trucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(orderPlanWeight));
  176. //获取物资理重
  177. BigDecimal materialTheoreticalWeight = DataChange.dataToBigDecimal(map2.get("materialTheoreticalWeight"));
  178. //判断是否有物资理重
  179. if (materialTheoreticalWeight.intValue() != 0) {
  180. trucknoMaterial.setMaterialTheoreticalWeight(materialTheoreticalWeight);
  181. }
  182. //新增车序号与物资中间表
  183. i += trucknoMaterialMapper.insertSelective(trucknoMaterial);
  184. }
  185. return i;
  186. }
  187. @Override
  188. public int uploadSaleOrder(BigDecimal saleOrderId) {
  189. AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
  190. // 调用金蝶接口,将销售订单推送到金蝶系统
  191. Map<String, Object> input = joinFeign.getSaleOrder(saleOrderId);
  192. // 获得金蝶接口配置
  193. Map<String, Object> totalMap = easUtil.getTotalMap();
  194. // 组装报文
  195. totalMap.put("input",input);
  196. System.out.println(totalMap);
  197. String json = JSONUtils.toJSONString(totalMap);
  198. System.out.println(json);
  199. String s = joinFeign.pushSaleOrderToEas(totalMap);
  200. System.out.println(s);
  201. amsSaleOrder.setSaleOrderStatus(new BigDecimal(1));
  202. return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder);
  203. }
  204. @Override
  205. public List<Map<String, Object>> selectBySaleOrderId(BigDecimal saleOrderId) {
  206. return amsSaleOrderMapper.selectBySaleOrderId(saleOrderId);
  207. }
  208. /**
  209. * 修改订单信息、车序号表、车序号物资中间表
  210. *
  211. * @param map
  212. * @return
  213. */
  214. @Override
  215. @Transactional
  216. public int updateAmsSaleOrder(Map<String, Object> map) throws ParseException {
  217. int i = 0;
  218. int j = 0;
  219. Map<String, Object> map1 = (Map<String, Object>) map.get("amsSaleOrder");
  220. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  221. //修改销售订单表 更新销售订单基础信息
  222. amsSaleOrder.setSaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId")));
  223. amsSaleOrder.setShipperId(DataChange.dataToBigDecimal(map1.get("shipperId")));
  224. amsSaleOrder.setReceiveId(DataChange.dataToBigDecimal(map1.get("reciveId")));
  225. amsSaleOrder.setSaleOrderIsselfMention((String) map1.get("saleOrderIsselfMention"));
  226. amsSaleOrder.setSaleOrderReceiveCustomer((String) map1.get("saleOrderReciveCustomer"));
  227. amsSaleOrder.setSaleRemark((String) map1.get("saleRemark"));
  228. amsSaleOrder.setUpdateTime(new Date());
  229. i += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  230. //根据销售订单id查找销售车序号和车序号与物资中间表主键
  231. List<Map<String, Object>> map2 = amsSaleOrderMapper.selectSaleOrderMaterialIdBySaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId")));
  232. for (Map<String,Object> Id:map2){
  233. BigDecimal truckNoMaterialId =(BigDecimal) Id.get("TruckNoMaterialId");
  234. BigDecimal saleOrderMaterialId=(BigDecimal) Id.get("saleOrderMaterialId");
  235. //删除对应的车序号表与车序号与物资中间表
  236. j+=amsSaleOrderMaterialMapper.deleteByPrimaryKey(saleOrderMaterialId);
  237. j+=trucknoMaterialMapper.deleteByPrimaryKey(truckNoMaterialId);
  238. }
  239. //新增车序号和物资中间表
  240. //获取车序号和物资信息进行新增车序号与物资中间表
  241. //一个销售订单对应多个车序号
  242. List<Map<String, Object>> selectionList = (List<Map<String, Object>>) map.get("selectionList");
  243. for (Map<String, Object> map3 : selectionList) {
  244. BigDecimal materialId = DataChange.dataToBigDecimal(map3.get("materialId"));
  245. Integer cxh = (Integer) map3.get("cxh");
  246. //生成车序号与物资实体
  247. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  248. //生成主键
  249. amsSaleOrderMaterial.setSaleOrderMaterialId(amsSaleOrderMaterialMapper.selectMaxId());
  250. amsSaleOrderMaterial.setSaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId")));
  251. //获取收货地址
  252. amsSaleOrderMaterial.setSaleShippingAddressId(DataChange.dataToBigDecimal(map3.get("saleShipperAddressId")));
  253. //获取收货方电话号码
  254. amsSaleOrderMaterial.setSaleOrderConsigneeTel(map3.get("saleOrderConsigneeTel").toString());
  255. //获取收货日期
  256. String saleDateOfReceipt =(String) map3.get("saleDateOfReceipt");
  257. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
  258. Date date = simpleDateFormat.parse(saleDateOfReceipt);
  259. amsSaleOrderMaterial.setSaleDateOfReceipt(date);
  260. //获取收货方姓名
  261. amsSaleOrderMaterial.setSaleOrderConsignee((String) map3.get("saleOrderConsignee"));
  262. //设置车序号
  263. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(cxh));
  264. //设置删除状态
  265. amsSaleOrderMaterial.setDeleted(new BigDecimal(0));
  266. i += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  267. // 生成定向派单
  268. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  269. amsDispatchSaleOrder.setDispatchId(amsDispatchSaleOrderMapper.selectOtherId());
  270. amsDispatchSaleOrder.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  271. //获取收货地址
  272. Integer saleShipperAddressId =(Integer) map3.get("saleShipperAddressId");
  273. amsSaleOrderMaterial.setSaleShippingAddressId(new BigDecimal(saleShipperAddressId));
  274. //根据收货地址查询承运商
  275. Map<String,Object> map4 = amsSaleOrderMapper.selectProvince(saleShipperAddressId);
  276. BigDecimal carrierId = amsSaleOrderMapper.selectCarrierIdByprovince(map4);
  277. //获取收货方电话号码
  278. amsDispatchSaleOrder.setCarrierId(carrierId);
  279. amsDispatchSaleOrder.setDispatchTime(new Date());
  280. //设置成交类型
  281. amsDispatchSaleOrder.setDispatchType(new BigDecimal(0));
  282. //设置下发状态为已下发
  283. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0));
  284. amsDispatchSaleOrder.setInsertTime(new Date());
  285. amsDispatchSaleOrder.setInsertUsername("admin");
  286. //新增车序号与物资中间表
  287. AmsSaleTrucknoMaterial trucknoMaterial = new AmsSaleTrucknoMaterial();
  288. trucknoMaterial.setTrucknoMaterialId(trucknoMaterialMapper.selectMaxId());
  289. //设置物资id
  290. trucknoMaterial.setMaterialId(materialId);
  291. //获取车序号物资id
  292. trucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  293. Integer orderPlanWeight = (Integer) map3.get("orderPlanWeight");
  294. trucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(orderPlanWeight));
  295. //获取物资理重
  296. BigDecimal materialTheoreticalWeight = DataChange.dataToBigDecimal(map3.get("materialTheoreticalWeight"));
  297. //判断是否有物资理重
  298. if (materialTheoreticalWeight.intValue() != 0) {
  299. trucknoMaterial.setMaterialTheoreticalWeight(materialTheoreticalWeight);
  300. }
  301. //新增车序号与物资中间表
  302. i += trucknoMaterialMapper.insertSelective(trucknoMaterial);
  303. }
  304. // List<Map<String, Object>> mapList = (List<Map<String, Object>>) map.get("mapList");
  305. // ArrayList<Integer> list = new ArrayList<>();
  306. // for (Map<String, Object> truckMesMap : mapList) {
  307. // //修改车序号表
  308. // BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(truckMesMap.get("saleOrderMaterialId"));
  309. // if (!list.contains(saleOrderMaterialId.intValue())) {
  310. // //车序号表专用字段
  311. // BigDecimal saleShipperAddressId = DataChange.dataToBigDecimal(truckMesMap.get("saleShipperAddressId"));
  312. // String saleDateOfReceipt =(String) truckMesMap.get("saleDateOfReceipt");
  313. // SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
  314. // Date date = simpleDateFormat.parse(saleDateOfReceipt);
  315. // String saleOrderConsignee = (String) truckMesMap.get("saleOrderConsignee");
  316. // String saleOrderConsigneeTel = (String) truckMesMap.get("saleOrderConsigneeTel");
  317. // AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  318. // amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  319. // amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(DataChange.dataToBigDecimal(truckMesMap.get("cxh")));
  320. // amsSaleOrderMaterial.setSaleShippingAddressId(saleShipperAddressId);
  321. // amsSaleOrderMaterial.setSaleDateOfReceipt(date);
  322. // amsSaleOrderMaterial.setSaleOrderConsignee(saleOrderConsignee);
  323. // amsSaleOrderMaterial.setSaleOrderConsigneeTel(saleOrderConsigneeTel);
  324. // i += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial);
  325. // list.add(saleOrderMaterialId.intValue());
  326. // }
  327. // //修改车车序号物资表
  328. // AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  329. // amsSaleTrucknoMaterial.setTrucknoMaterialId(DataChange.dataToBigDecimal(truckMesMap.get("trucknoMaterialId")));
  330. // amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(truckMesMap.get("orderPlanWeight")));
  331. // amsSaleTrucknoMaterial.setMaterialId(DataChange.dataToBigDecimal(truckMesMap.get("materialId")));
  332. // i += trucknoMaterialMapper.updateByPrimaryKeySelective(amsSaleTrucknoMaterial);
  333. // }
  334. return i;
  335. }
  336. @Override
  337. public int deleteAmsSaleOrderBySaleOrderId(BigDecimal saleOrderId) {
  338. //删除所有从表信息
  339. //amsSaleOrderMapper.deleteBySaleOrderId(saleOrderId);
  340. AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
  341. amsSaleOrder.setDeleted(new BigDecimal(1));
  342. return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder);
  343. }
  344. @Override
  345. public List<Map<String, Object>> getSaleOrderUpdateLog(Map<String, Object> map) {
  346. return amsSaleOrderMapper.getSaleOrderUpdateLog(map);
  347. }
  348. /**
  349. * 销售公司查询已审核的订单
  350. * @param map
  351. * @return
  352. */
  353. @Override
  354. public List<Map<String, Object>> getSaleOrderListBySaleCompany(Map<String, Object> map) {
  355. return amsSaleOrderMapper.getSaleOrderListBySaleCompany(map);
  356. }
  357. @Override
  358. public List<Map<String, Object>> getAmsSaleOrderApproved(Map<String, Object> map) {
  359. return amsSaleOrderMapper.getAmsSaleOrderApproved(map);
  360. }
  361. @Override
  362. public List<Map<String, Object>> getSaleOrderList(Map<String, Object> mapValue) {
  363. return amsSaleOrderMapper.getSaleOrderList(mapValue);
  364. }
  365. public Map<String, Object> getCarrier(Integer addressId) {
  366. return amsSaleOrderMapper.selectProvince(addressId);
  367. }
  368. /**
  369. * 根据销售订单id查找信息
  370. */
  371. @Override
  372. public Map<String, Object> selectInfoBySaleOrderId(BigDecimal saleOrderId) {
  373. return amsSaleOrderMapper.selectInfoBySaleOrderId(saleOrderId);
  374. }
  375. /**
  376. * 根据销售订单id查找物资信息
  377. *
  378. * @param saleOrderId
  379. * @return
  380. */
  381. @Override
  382. public List<Map<String, Object>> selectMaterialInfoBySaleOrderId(BigDecimal saleOrderId) {
  383. return amsSaleOrderMapper.selectMaterialInfoBySaleOrderId(saleOrderId);
  384. }
  385. @Override
  386. public int addAmsDispatchSaleOrder(List<Map<String, Object>> mapValue) {
  387. int result = 0;
  388. for (Map<String,Object> map : mapValue) {
  389. Integer dispatchId = (Integer)map.get("dispatchId");
  390. AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(new BigDecimal(dispatchId));
  391. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0));
  392. result = amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder);
  393. }
  394. return result;
  395. }
  396. @Override
  397. public List<Map<String, Object>> getSaleOrderInfoes(Map<String, Object> map) {
  398. return amsSaleOrderMapper.getSaleOrderInfoes(map);
  399. }
  400. @Override
  401. public List<Map<String, Object>> getSaleOrderReportedes(Map<String, Object> map) {
  402. return amsSaleOrderMapper.getSaleOrderReportedes(map);
  403. }
  404. @Override
  405. public List<Map<String, Object>> getSaleOrderListBySaleCompanyes(Map<String, Object> map) {
  406. List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleOrderListBySaleCompanyes(map);
  407. for (Map<String, Object> resultMap : resultList) {
  408. BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
  409. Map<String,Object> loserMap = new HashMap<>();
  410. BigDecimal netWeight = amsSaleOrderMapper.getNetWeight(saleOrderId);
  411. BigDecimal carNum = amsSaleOrderMapper.getCarNum(saleOrderId);
  412. loserMap.put("saleOrderId",saleOrderId);
  413. loserMap.put("con",map.get("con"));
  414. // 物资
  415. List<Map<String,Object>> materialList = amsSaleOrderMapper.getSaleMaterial(loserMap);
  416. if (materialList != null && materialList.size() > 0) {
  417. Map<String, Object> materialMap = materialList.get(0);
  418. String materialName = (String) materialMap.get("materialName");
  419. if (materialList.size() != 1) {
  420. materialName += "...";
  421. }
  422. resultMap.put("materialName",materialName);
  423. }
  424. resultMap.put("netWeight",netWeight);
  425. resultMap.put("carNum",carNum);
  426. }
  427. return resultList;
  428. }
  429. @Override
  430. public List<Map<String, Object>> getAmsSaleOrderApprovedes(Map<String, Object> map) {
  431. List<Map<String,Object>> resultList = amsSaleOrderMapper.getAmsSaleOrderApprovedes(map);
  432. for (Map<String, Object> resultMap : resultList) {
  433. BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
  434. Map<String,Object> loserMap = new HashMap<>();
  435. BigDecimal netWeight = amsSaleOrderMapper.getNetWeight(saleOrderId);
  436. BigDecimal carNum = amsSaleOrderMapper.getCarNum(saleOrderId);
  437. loserMap.put("saleOrderId",saleOrderId);
  438. loserMap.put("con",map.get("con"));
  439. // 物资
  440. List<Map<String,Object>> materialList = amsSaleOrderMapper.getSaleMaterial(loserMap);
  441. if (materialList != null && materialList.size() > 0) {
  442. Map<String, Object> materialMap = materialList.get(0);
  443. String materialName = (String) materialMap.get("materialName");
  444. if (materialList.size() != 1) {
  445. materialName += "...";
  446. }
  447. resultMap.put("materialName",materialName);
  448. }
  449. resultMap.put("netWeight",netWeight);
  450. resultMap.put("carNum",carNum);
  451. }
  452. return resultList;
  453. }
  454. /*
  455. * 根据销售订单主键展示销售基本信息、物资信息
  456. * */
  457. @Override
  458. public List<Map<String, Object>> getSaleOrderAndMaterialById(Map<String,Object> mapValue) {
  459. List<Map<String, Object>> mapList=amsSaleOrderMapper.getSaleOrderAndMaterialById(mapValue);
  460. for (Map<String, Object> map : mapList) {
  461. BigDecimal number;
  462. BigDecimal materialNumber = (BigDecimal) map.get("materialNumber");
  463. BigDecimal materialWeight = (BigDecimal) map.get("materialWeight");
  464. if (materialNumber != null && materialNumber.toString().length() != 0) {
  465. number = materialNumber;
  466. }
  467. else {
  468. number = materialWeight;
  469. }
  470. map.put("number",number);
  471. }
  472. return mapList;
  473. }
  474. /**
  475. * 销售焦炭订单
  476. * @param mapValue
  477. * @return
  478. */
  479. @Override
  480. public List<Map<String, Object>> getCokeSaleOrderList(Map<String, Object> mapValue) {
  481. List<Map<String,Object>> mapList = amsSaleOrderMapper.getCokeSaleOrderList(mapValue);
  482. for (Map<String, Object> resultMap : mapList) {
  483. BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
  484. BigDecimal netWeight = amsSaleOrderMapper.getNetWeight(saleOrderId);
  485. BigDecimal carNum = amsSaleOrderMapper.getCarNum(saleOrderId);
  486. resultMap.put("netWeight",netWeight);
  487. resultMap.put("carNum",carNum);
  488. }
  489. return mapList;
  490. }
  491. /**
  492. * 新增钢材销售订单
  493. * @param mapValue
  494. * @return
  495. */
  496. @Override
  497. public int addSteelSaleOrder(Map<String, Object> mapValue) {
  498. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  499. // 得到发货单位
  500. BigDecimal shipperId = DataChange.dataToBigDecimal(mapValue.get("shipperId"));
  501. // 收货单位
  502. BigDecimal receiveId = DataChange.dataToBigDecimal(mapValue.get("receiveId"));
  503. // 是否自提
  504. String isSelfMention = (String) mapValue.get("isSelfMention");
  505. // 备注
  506. String saleRemark = (String) mapValue.get("saleRemark");
  507. // 收款客户
  508. String saleOrderReceiveCustomer = (String) mapValue.get("saleOrderReceiveCustomer");
  509. // 业务员
  510. BigDecimal salerId = DataChange.dataToBigDecimal(mapValue.get("salerId"));
  511. BigDecimal saleOrderId = amsSaleOrderMapper.selectMaxId();
  512. int result = 0;
  513. // 销售订单
  514. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  515. amsSaleOrder.setReceiveId(receiveId);
  516. amsSaleOrder.setSaleRemark(saleRemark == null ? "":saleRemark);
  517. amsSaleOrder.setShipperId(shipperId);
  518. amsSaleOrder.setSaleOrderIsselfMention(isSelfMention);
  519. amsSaleOrder.setSaleOrderId(saleOrderId);
  520. amsSaleOrder.setSalerId(salerId);
  521. // 设置钢材订单
  522. amsSaleOrder.setSaleType(new BigDecimal(1));
  523. amsSaleOrder.setSaleNumber(DataChange.generateEightDigitsNumber("WXSDD",saleOrderId.intValue(),"-"));
  524. amsSaleOrder.setInsertTime(new Date());
  525. amsSaleOrder.setInsertUpdateRemark("物流新增销售订单");
  526. amsSaleOrder.setInsertUsername("物流");
  527. amsSaleOrder.setUpdateTime(new Date());
  528. amsSaleOrder.setDeleted(new BigDecimal(0));
  529. amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
  530. // 税率默认13%
  531. amsSaleOrder.setSaleOrderTax("13%");
  532. // 含税单价某人4000
  533. amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
  534. // 收款客户
  535. amsSaleOrder.setSaleOrderReceiveCustomer(saleOrderReceiveCustomer);
  536. // 销售订单物资表
  537. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  538. // 车序号物资表
  539. AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  540. // 遍历每一行
  541. for (Map<String, Object> map : mapList) {
  542. /*
  543. 车序号表
  544. */
  545. // 得到车序号
  546. BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("truckNo"));
  547. Map<String,Object> saleMap = new HashMap<>();
  548. saleMap.put("saleOrderId",saleOrderId);
  549. saleMap.put("saleOrderMaterialTruckNo",truckNo);
  550. // 检测销售订单下的车序号是否已存在
  551. List<AmsSaleOrderMaterial> amsSaleOrderMaterials = amsSaleOrderMaterialMapper.selectByParameters(saleMap);
  552. // 车序号表
  553. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  554. if (amsSaleOrderMaterials == null || amsSaleOrderMaterials.size() == 0) {
  555. // 车序号主键
  556. BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
  557. BigDecimal shippingAddressId = DataChange.dataToBigDecimal(map.get("shipperAddressId"));
  558. // 车号备注
  559. String truckRemark = (String) (map.get("truckRemark"));
  560. String place = (String) (map.get("place"));
  561. if (place != null && !"null".equals(place)) {
  562. List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
  563. if (placeIdList == null || placeIdList.size() == 0) {
  564. RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
  565. rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
  566. rmsReceivePlace.setAddressId(shippingAddressId);
  567. rmsReceivePlace.setAddressDeliveryAddress(place);
  568. amsSaleOrderMaterial.setSaleShippingAddressId(rmsReceivePlace.getPlaceId());
  569. rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
  570. } else {
  571. amsSaleOrderMaterial.setSaleShippingAddressId((BigDecimal) placeIdList.get(0).get("placeId"));
  572. }
  573. }
  574. if (amsSaleOrderMaterial.getSaleShippingAddressId() != null && isSelfMention.equals("否")) {
  575. // 自动匹配承运商
  576. List<Map<String, Object>> carrierList = getCarrierByPlace(amsSaleOrderMaterial.getSaleShippingAddressId());
  577. // 单一承运商才进行匹配
  578. if (carrierList != null && carrierList.size() == 1) {
  579. List<Map<String, Object>> list = new ArrayList<>();
  580. Map<String, Object> map1 = carrierList.get(0);
  581. // 传入车序号主键和承运商id
  582. map1.put("saleOrderMaterialId", saleOrderMaterialId);
  583. map1.put("carrierId", map1.get("value"));
  584. list.add(map1);
  585. dispatchToCarrier(list);
  586. }
  587. }
  588. if (isSelfMention.equals("是")) {
  589. // 根据收货单位id查询出收货单位名称
  590. String consigneeName = amsSaleOrderMapper.selectConsigneeName(receiveId);
  591. // 根据收货单位名称查询承运商id
  592. BigDecimal carrierId = amsSaleOrderMapper.selectCarrierId(consigneeName);
  593. List<Map<String, Object>> list = new ArrayList<>();
  594. Map<String,Object> map1 = new HashMap<>();
  595. // 传入车序号主键和承运商id
  596. if (carrierId != null) {
  597. map1.put("saleOrderMaterialId", saleOrderMaterialId);
  598. map1.put("carrierId", carrierId);
  599. list.add(map1);
  600. dispatchToCarrier(list);
  601. }
  602. }
  603. // 收货方姓名
  604. String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
  605. // 收货方电话
  606. String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
  607. // 截止日期
  608. String dateOfReceiptStr = String.valueOf(map.get("saleDateOfReceipt"));
  609. Date dateOfReceipt = null;
  610. if (!"null".equals(dateOfReceiptStr) && !"undefined".equals(dateOfReceiptStr)) {
  611. dateOfReceipt = new Date(Long.valueOf(dateOfReceiptStr));
  612. }
  613. amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  614. amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
  615. amsSaleOrderMaterial.setTruckRemark(truckRemark);
  616. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(truckNo);
  617. if (consigneeName != null && !consigneeName.equals("null")) {
  618. amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
  619. }
  620. if (consigneeTel != null && !consigneeTel.equals("null")) {
  621. amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
  622. }
  623. amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
  624. amsSaleOrderMaterial.setInsertTime(new Date());
  625. amsSaleOrderMaterial.setUpdateTime(new Date());
  626. amsSaleOrderMaterial.setInsertUpdateRemark("物流新增");
  627. result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  628. }
  629. else {
  630. amsSaleOrderMaterial = amsSaleOrderMaterials.get(0);
  631. }
  632. /*
  633. 销售订单物资表
  634. */
  635. // 物资
  636. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  637. // 物资件数
  638. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  639. // 钢材米数
  640. BigDecimal steelMeters = DataChange.dataToBigDecimal(map.get("steelMeters"));
  641. // 是否磅重销售(0:磅重;1:理重)
  642. BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPoundSale"));
  643. // 销售订单物资表主键
  644. BigDecimal saleMaterialId = amsSaleMaterialMapper.selectMaxId();
  645. amsSaleMaterial.setSaleMaterialId(saleMaterialId);
  646. amsSaleMaterial.setSaleOrderId(saleOrderId);
  647. amsSaleMaterial.setMaterialId(materialId);
  648. amsSaleMaterial.setMaterialNumber(materialNumber);
  649. amsSaleMaterial.setInsertTime(new Date());
  650. amsSaleMaterial.setUpdateTime(new Date());
  651. if (steelMeters != null && !steelMeters.toString().equals("0")) {
  652. amsSaleMaterial.setSteelMeter(steelMeters);
  653. }
  654. amsSaleMaterial.setIsPoundSale(isPoundSale);
  655. amsSaleMaterial.setInsertUpdateRemark("物流新增");
  656. result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
  657. /*
  658. 车序号物资表
  659. */
  660. // 车序号物资表主键
  661. BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
  662. amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
  663. amsSaleTrucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  664. amsSaleTrucknoMaterial.setMaterialId(amsSaleMaterial.getSaleMaterialId());
  665. amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
  666. amsSaleTrucknoMaterial.setInsertTime(new Date());
  667. amsSaleTrucknoMaterial.setUpdateTime(new Date());
  668. amsSaleTrucknoMaterial.setInsertUpdateRemark("物流新增");
  669. result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
  670. }
  671. result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
  672. return result;
  673. }
  674. /**
  675. * 展示销售订单下的车序号和物资
  676. * @param saleOrderId
  677. * @return
  678. */
  679. @Override
  680. public List<Map<String, Object>> getTruckNoAndMaterialList(BigDecimal saleOrderId) {
  681. List<Map<String,Object>> mapList = amsSaleOrderMapper.getTruckNoAndMaterial(saleOrderId);
  682. for (Map<String,Object> map : mapList) {
  683. BigDecimal placeId = (BigDecimal) map.get("placeId");
  684. if (placeId != null) {
  685. List<Map<String, Object>> carrierAndPriceList = getCarrierByPlace(placeId);
  686. map.put("carrierAndPriceList", carrierAndPriceList);
  687. }
  688. }
  689. return mapList;
  690. }
  691. /**
  692. * 销售钢材派车
  693. * @param mapList
  694. * @return
  695. */
  696. @Transactional
  697. @Override
  698. public int dispatchSteelOrder(List<Map<String, Object>> mapList) {
  699. int result = 0;
  700. // 遍历每一行
  701. for (Map<String,Object> map : mapList) {
  702. // 得到车牌号
  703. String capacityNumber = (String) map.get("capacityNumber");
  704. // 得到车序号表主键
  705. BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
  706. // 得到承运商
  707. BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
  708. // 查询到车序号的单价
  709. BigDecimal priceId = amsSaleOrderMapper.getOrderPrice(map);
  710. // 运输线路id
  711. BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
  712. // 司机电话号码
  713. String driverTel = (String) map.get("driverTel");
  714. BigDecimal isSteel = new BigDecimal(1);
  715. // 得到运力id
  716. BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
  717. List<Map<String,Object>> materialList = amsSaleOrderMaterialMapper.getMaterial(saleOrderMaterialId);
  718. /*
  719. 定向派单表
  720. */
  721. // 通过车序号主键确认定向派单是否已存在
  722. BigDecimal dispatchId0 = amsDispatchSaleOrderMapper.isDispatchExist(saleOrderMaterialId);
  723. if (dispatchId0 == null || dispatchId0.toString().length() == 0) {
  724. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  725. // 主键
  726. BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
  727. amsDispatchSaleOrder.setDispatchId(dispatchId);
  728. // 车序号表id
  729. amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
  730. // 承运商id
  731. amsDispatchSaleOrder.setCarrierId(carrierId);
  732. // 派单时间和成交时间
  733. amsDispatchSaleOrder.setDispatchTime(new Date());
  734. amsDispatchSaleOrder.setDispatchDealTime(new Date());
  735. // 成交类型
  736. amsDispatchSaleOrder.setDispatchType(new BigDecimal(2));
  737. // 车序号状态
  738. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
  739. result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
  740. }
  741. // 如果已经匹配过承运商或者给某个承运商授权过,则派车时做修改承运商操作
  742. else {
  743. AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(dispatchId0);
  744. amsDispatchSaleOrder.setCarrierId(carrierId);
  745. result += amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder);
  746. }
  747. /*
  748. 运输订单
  749. */
  750. OmstruckOrder omstruckOrder = new OmstruckOrder();
  751. Map<String,Object> map1 = new HashMap<>();
  752. map1.put("orderType",new BigDecimal(2));
  753. map1.put("orderPlanId",saleOrderMaterialId);
  754. List<OmstruckOrder> omstruckOrders = omstruckOrderMapper.selectByParameters(map1);
  755. if (omstruckOrders == null || omstruckOrders.size() == 0) {
  756. // 运输订单主键
  757. BigDecimal orderId = omstruckOrderMapper.selectMaxId();
  758. omstruckOrder.setOrderId(orderId);
  759. // 车序号主键
  760. omstruckOrder.setOrderPlanId(saleOrderMaterialId);
  761. //添加承运商ID 和 运价ID
  762. // Object priceId = map.get("priceId");
  763. if (priceId != null) {
  764. omstruckOrder.setPriceId(priceId);
  765. }
  766. else {
  767. omstruckOrder.setPriceId(new BigDecimal(0));
  768. }
  769. omstruckOrder.setCarrierId(carrierId);
  770. // 运输订单号
  771. omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue()));
  772. // 运力id
  773. omstruckOrder.setCapacityId(capacityId);
  774. // 承运商
  775. omstruckOrder.setCarrierId(carrierId);
  776. // 下发时间
  777. omstruckOrder.setOrderIssueTime(new Date());
  778. // 运单状态
  779. omstruckOrder.setOrderStatus(new BigDecimal(4));
  780. // 司机电话
  781. if (driverTel != null && !"null".equals(driverTel)) {
  782. omstruckOrder.setDriverTel(driverTel);
  783. }
  784. BigDecimal status;
  785. // 钢材
  786. if (isSteel != null && isSteel.intValue() == 1) {
  787. status = new BigDecimal(1);
  788. }
  789. // 非钢材(危化品,焦炭,副产品)
  790. else {
  791. status = new BigDecimal(2);
  792. }
  793. // 订单类型
  794. omstruckOrder.setOrderType(status);
  795. // 运输线路id
  796. omstruckOrder.setLineId(lineId);
  797. omstruckOrder.setInsertTime(new Date());
  798. omstruckOrder.setInsertUsername("");
  799. result += omstruckOrderMapper.insertSelective(omstruckOrder);
  800. }
  801. else {
  802. omstruckOrder = omstruckOrders.get(0);
  803. }
  804. for (Map<String, Object> materialMap : materialList) {
  805. BigDecimal materialId = (BigDecimal) materialMap.get("materialId");
  806. BigDecimal materialWeight = (BigDecimal) materialMap.get("materialWeight");
  807. BigDecimal materialNumber = (BigDecimal) materialMap.get("materialNumber");
  808. /*
  809. 运输订单物资子表
  810. */
  811. OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
  812. // 主键
  813. BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
  814. omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
  815. // 运输订单id
  816. omstruckOrderMaterial.setOrderId(omstruckOrder.getOrderId());
  817. // 物资id
  818. omstruckOrderMaterial.setMaterialId(materialId);
  819. // 物资重量
  820. omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
  821. // 物资件数
  822. omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
  823. // 新增运输订单子表
  824. result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
  825. }
  826. // 调用websocket
  827. Map<String,Object> orderIdMap = new HashMap<>();
  828. orderIdMap.put("orderId",omstruckOrder.getOrderId());
  829. amsSaleOrderMaterialService.pushMesToWebsocket(orderIdMap);
  830. // 生成运输执行总实绩
  831. result += tmsTruckFeign.addTotalResult(orderIdMap);
  832. }
  833. return result;
  834. }
  835. /**
  836. * 根据详细地址匹配承运商
  837. * @param placeId
  838. * @return
  839. */
  840. @Override
  841. public synchronized List<Map<String,Object>> getCarrierByPlace(BigDecimal placeId) {
  842. BigDecimal addressId = amsSaleOrderMapper.getAddressByPlace(placeId);
  843. List<Map<String,Object>> mapList = amsSaleOrderMapper.getCarrierByPlace(placeId);
  844. return mapList;
  845. }
  846. /**
  847. * 根据详细地址和承运商匹配单价
  848. * @param mapValue
  849. * @return
  850. */
  851. @Override
  852. public Map<String, Object> getPriceByCarrierAndPlace(Map<String, Object> mapValue) {
  853. Map<String,Object> map = amsSaleOrderMapper.getPriceByCarrierAndPlace(mapValue);
  854. return map;
  855. }
  856. /**
  857. * 将车序号下发给承运商
  858. * @param mapList
  859. * @return
  860. */
  861. @Override
  862. public int dispatchToCarrier(List<Map<String,Object>> mapList) {
  863. int result = 0;
  864. // 遍历每一行
  865. for (Map<String, Object> map : mapList) {
  866. // 得到承运商
  867. BigDecimal carrierId =DataChange.dataToBigDecimal(map.get("carrierId"));
  868. // 得到车序号表主键
  869. BigDecimal saleOrderMaterialId =DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
  870. AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
  871. BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
  872. amsDispatchSaleOrder.setDispatchId(dispatchId);
  873. amsDispatchSaleOrder.setCarrierId(carrierId);
  874. amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
  875. amsDispatchSaleOrder.setInsertTime(new Date());
  876. amsDispatchSaleOrder.setInsertUpdateRemark("授权承运商");
  877. // 派单时间和成交时间
  878. amsDispatchSaleOrder.setDispatchTime(new Date());
  879. amsDispatchSaleOrder.setDispatchDealTime(new Date());
  880. // 成交类型
  881. amsDispatchSaleOrder.setDispatchType(new BigDecimal(2));
  882. // 车序号状态
  883. amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
  884. result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
  885. }
  886. return result;
  887. }
  888. @Override
  889. public List<Map<String, Object>> getSaleOrderListToCarrier(Map<String, Object> map) {
  890. List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleOrderListToCarrier(map);
  891. for (Map<String, Object> resultMap : resultList) {
  892. BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
  893. // 物资
  894. List<Map<String,Object>> materialList = amsSaleOrderMapper.getTruckNoAndMaterial(saleOrderId);
  895. if (materialList != null && materialList.size() > 0) {
  896. Map<String, Object> materialMap = materialList.get(0);
  897. String materialName = (String) materialMap.get("materialName");
  898. if (materialList.size() != 1) {
  899. materialName += "...";
  900. }
  901. resultMap.put("materialName",materialName);
  902. }
  903. }
  904. return resultList;
  905. }
  906. @Override
  907. public List<Map<String, Object>> getSaleOrderListByCarrierSsoId(Map<String, Object> map) {
  908. List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleOrderListByCarrierSsoId(map);
  909. String statusStr;
  910. for (Map<String, Object> resultMap : resultList) {
  911. BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
  912. Map<String,Object> loserMap = new HashMap<>();
  913. BigDecimal netWeight = amsSaleOrderMapper.getNetWeight(saleOrderId);
  914. BigDecimal carNum = amsSaleOrderMapper.getCarNum(saleOrderId);
  915. loserMap.put("saleOrderId",saleOrderId);
  916. loserMap.put("con",map.get("con"));
  917. // 物资
  918. List<Map<String,Object>> materialList = amsSaleOrderMapper.getSaleMaterial(loserMap);
  919. if (materialList != null && materialList.size() > 0) {
  920. Map<String, Object> materialMap = materialList.get(0);
  921. String materialName = (String) materialMap.get("materialName");
  922. if (materialList.size() != 1) {
  923. materialName += "...";
  924. }
  925. resultMap.put("materialName",materialName);
  926. }
  927. BigDecimal saleOrderStatus = (BigDecimal) resultMap.get("saleOrderStatus");
  928. // if (saleOrderStatus.intValue() == 2) {
  929. // statusStr = "销售公司已审核";
  930. // }
  931. // else {
  932. // statusStr = "财务已审核";
  933. // }
  934. statusStr = saleOrderStatus.intValue() == 2 ? "销售公司已审批" : "财务已审批";
  935. resultMap.put("statusStr",statusStr);
  936. resultMap.put("netWeight",netWeight);
  937. resultMap.put("carNum",carNum);
  938. }
  939. return resultList;
  940. }
  941. /**
  942. *
  943. * @param saleOrderId
  944. * @return
  945. */
  946. @Override
  947. public int deleteSaleOrderById(BigDecimal saleOrderId) {
  948. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  949. amsSaleOrder.setSaleOrderId(saleOrderId);
  950. amsSaleOrder.setDeleted(new BigDecimal(1));
  951. int result = amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  952. return result;
  953. }
  954. /**
  955. * 查询出销售订单下的所有数据
  956. * @param saleOrderId
  957. * @return
  958. */
  959. @Override
  960. public Map<String, Object> getAllSaleMessages(BigDecimal saleOrderId) {
  961. Map<String,Object> saleMap = amsSaleOrderMapper.getSaleMapMessages(saleOrderId);
  962. List<Map<String,Object>> mapList = amsSaleOrderMapper.getSaleListMessages(saleOrderId);
  963. saleMap.put("mapList",mapList);
  964. return saleMap;
  965. }
  966. /**
  967. * 修改承运商授权
  968. * @param mapValue
  969. * @return
  970. */
  971. @Override
  972. public int updateTruckNoCarrier(Map<String, Object> mapValue) {
  973. BigDecimal carrierId = DataChange.dataToBigDecimal(mapValue.get("carrierId"));
  974. mapValue.remove("carrierId");
  975. List<AmsDispatchSaleOrder> amsDispatchSaleOrders = amsDispatchSaleOrderMapper.selectByParameters(mapValue);
  976. AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrders.get(0);
  977. amsDispatchSaleOrder.setCarrierId(carrierId);
  978. int result = amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder);
  979. return result;
  980. }
  981. /**
  982. * 批量上传销售订单至金蝶
  983. * @param saleOrderIdList
  984. * @return
  985. */
  986. @Override
  987. public int uploadSaleOrderList(List<Map<String, Object>> saleOrderIdList) {
  988. int result = 0;
  989. for (Map<String, Object> map : saleOrderIdList) {
  990. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  991. BigDecimal saleOrderId = DataChange.dataToBigDecimal(map.get("saleOrderId"));
  992. // 调用金蝶接口,将销售订单推送到金蝶系统
  993. Map<String, Object> input = joinFeign.getSaleOrder(saleOrderId);
  994. // 获得金蝶接口配置
  995. Map<String, Object> totalMap = easUtil.getTotalMap();
  996. // 组装报文
  997. totalMap.put("input",input);
  998. System.out.println(totalMap);
  999. String json = JSONUtils.toJSONString(totalMap);
  1000. System.out.println(json);
  1001. String s = joinFeign.pushSaleOrderToEas(totalMap);
  1002. System.out.println(s);
  1003. amsSaleOrder.setSaleOrderId(saleOrderId);
  1004. amsSaleOrder.setSaleOrderStatus(new BigDecimal(1));
  1005. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  1006. }
  1007. return result;
  1008. }
  1009. /**
  1010. * 新增钒渣销售订单
  1011. * @param mapValue
  1012. * @return
  1013. */
  1014. @Override
  1015. public int addVanadiumSaleOrder(Map<String, Object> mapValue) {
  1016. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  1017. // 得到发货单位
  1018. BigDecimal shipperId = DataChange.dataToBigDecimal(mapValue.get("shipperId"));
  1019. // 收货单位
  1020. BigDecimal receiveId = DataChange.dataToBigDecimal(mapValue.get("receiveId"));
  1021. // 是否自提
  1022. String isSelfMention = (String) mapValue.get("isSelfMention");
  1023. // 备注
  1024. String saleRemark = (String) mapValue.get("saleRemark");
  1025. // 收款客户
  1026. String saleOrderReceiveCustomer = (String) mapValue.get("saleOrderReceiveCustomer");
  1027. // 业务员
  1028. BigDecimal salerId = DataChange.dataToBigDecimal(mapValue.get("salerId"));
  1029. BigDecimal saleOrderId = amsSaleOrderMapper.selectMaxId();
  1030. int result = 0;
  1031. // 销售订单
  1032. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  1033. amsSaleOrder.setReceiveId(receiveId);
  1034. amsSaleOrder.setSaleRemark(saleRemark == null ? "":saleRemark);
  1035. amsSaleOrder.setShipperId(shipperId);
  1036. amsSaleOrder.setSaleOrderIsselfMention(isSelfMention);
  1037. amsSaleOrder.setSaleOrderId(saleOrderId);
  1038. amsSaleOrder.setSalerId(salerId);
  1039. // 设置钢材订单
  1040. amsSaleOrder.setSaleType(new BigDecimal(1));
  1041. amsSaleOrder.setSaleNumber(DataChange.generateEightDigitsNumber("WXSDD",saleOrderId.intValue(),"-"));
  1042. amsSaleOrder.setInsertTime(new Date());
  1043. amsSaleOrder.setInsertUpdateRemark("物流新增销售订单");
  1044. amsSaleOrder.setInsertUsername("物流");
  1045. amsSaleOrder.setUpdateTime(new Date());
  1046. amsSaleOrder.setDeleted(new BigDecimal(0));
  1047. amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
  1048. // 税率默认13%
  1049. amsSaleOrder.setSaleOrderTax("13%");
  1050. // 含税单价某人4000
  1051. amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
  1052. // 收款客户
  1053. amsSaleOrder.setSaleOrderReceiveCustomer(saleOrderReceiveCustomer);
  1054. // 销售订单物资表
  1055. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  1056. // 车序号物资表
  1057. AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  1058. // 遍历每一行
  1059. for (Map<String, Object> map : mapList) {
  1060. /*
  1061. 车序号表
  1062. */
  1063. // 得到车序号
  1064. BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("truckNo"));
  1065. Map<String,Object> saleMap = new HashMap<>();
  1066. saleMap.put("saleOrderId",saleOrderId);
  1067. saleMap.put("saleOrderMaterialTruckNo",truckNo);
  1068. // 检测销售订单下的车序号是否已存在
  1069. List<AmsSaleOrderMaterial> amsSaleOrderMaterials = amsSaleOrderMaterialMapper.selectByParameters(saleMap);
  1070. // 车序号表
  1071. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  1072. if (amsSaleOrderMaterials == null || amsSaleOrderMaterials.size() == 0) {
  1073. // 车序号主键
  1074. BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
  1075. BigDecimal shippingAddressId = DataChange.dataToBigDecimal(map.get("shipperAddressId"));
  1076. // 车号备注
  1077. String truckRemark = (String) (map.get("truckRemark"));
  1078. String place = (String) (map.get("place"));
  1079. if (place != null && !"null".equals(place)) {
  1080. List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
  1081. if (placeIdList == null || placeIdList.size() == 0) {
  1082. RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
  1083. rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
  1084. rmsReceivePlace.setAddressId(shippingAddressId);
  1085. rmsReceivePlace.setAddressDeliveryAddress(place);
  1086. amsSaleOrderMaterial.setSaleShippingAddressId(rmsReceivePlace.getPlaceId());
  1087. rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
  1088. } else {
  1089. amsSaleOrderMaterial.setSaleShippingAddressId((BigDecimal) placeIdList.get(0).get("placeId"));
  1090. }
  1091. }
  1092. if (amsSaleOrderMaterial.getSaleShippingAddressId() != null && isSelfMention.equals("否")) {
  1093. // 自动匹配承运商
  1094. List<Map<String, Object>> carrierList = getCarrierByPlace(amsSaleOrderMaterial.getSaleShippingAddressId());
  1095. // 单一承运商才进行匹配
  1096. if (carrierList != null && carrierList.size() == 1) {
  1097. List<Map<String, Object>> list = new ArrayList<>();
  1098. Map<String, Object> map1 = carrierList.get(0);
  1099. // 传入车序号主键和承运商id
  1100. map1.put("saleOrderMaterialId", saleOrderMaterialId);
  1101. map1.put("carrierId", map1.get("value"));
  1102. list.add(map1);
  1103. dispatchToCarrier(list);
  1104. }
  1105. }
  1106. if (isSelfMention.equals("是")) {
  1107. // 根据收货单位id查询出收货单位名称
  1108. String consigneeName = amsSaleOrderMapper.selectConsigneeName(receiveId);
  1109. // 根据收货单位名称查询承运商id
  1110. BigDecimal carrierId = amsSaleOrderMapper.selectCarrierId(consigneeName);
  1111. List<Map<String, Object>> list = new ArrayList<>();
  1112. Map<String,Object> map1 = new HashMap<>();
  1113. // 传入车序号主键和承运商id
  1114. if (carrierId != null) {
  1115. map1.put("saleOrderMaterialId", saleOrderMaterialId);
  1116. map1.put("carrierId", carrierId);
  1117. list.add(map1);
  1118. dispatchToCarrier(list);
  1119. }
  1120. }
  1121. // 收货方姓名
  1122. String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
  1123. // 收货方电话
  1124. String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
  1125. // 截止日期
  1126. String dateOfReceiptStr = String.valueOf(map.get("saleDateOfReceipt"));
  1127. Date dateOfReceipt = null;
  1128. if (!"null".equals(dateOfReceiptStr) && !"undefined".equals(dateOfReceiptStr)) {
  1129. dateOfReceipt = new Date(Long.valueOf(dateOfReceiptStr));
  1130. }
  1131. amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  1132. amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
  1133. amsSaleOrderMaterial.setTruckRemark(truckRemark);
  1134. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(truckNo);
  1135. if (consigneeName != null && !consigneeName.equals("null")) {
  1136. amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
  1137. }
  1138. if (consigneeTel != null && !consigneeTel.equals("null")) {
  1139. amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
  1140. }
  1141. amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
  1142. amsSaleOrderMaterial.setInsertTime(new Date());
  1143. amsSaleOrderMaterial.setUpdateTime(new Date());
  1144. amsSaleOrderMaterial.setInsertUpdateRemark("物流新增");
  1145. result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  1146. }
  1147. else {
  1148. amsSaleOrderMaterial = amsSaleOrderMaterials.get(0);
  1149. }
  1150. /*
  1151. 销售订单物资表
  1152. */
  1153. // 物资
  1154. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  1155. // 物资件数
  1156. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  1157. // 钢材米数
  1158. BigDecimal steelMeters = DataChange.dataToBigDecimal(map.get("steelMeters"));
  1159. // 是否磅重销售(0:磅重;1:理重)
  1160. BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPoundSale"));
  1161. // 销售订单物资表主键
  1162. BigDecimal saleMaterialId = amsSaleMaterialMapper.selectMaxId();
  1163. amsSaleMaterial.setSaleMaterialId(saleMaterialId);
  1164. amsSaleMaterial.setSaleOrderId(saleOrderId);
  1165. amsSaleMaterial.setMaterialId(materialId);
  1166. amsSaleMaterial.setMaterialNumber(materialNumber);
  1167. amsSaleMaterial.setInsertTime(new Date());
  1168. amsSaleMaterial.setUpdateTime(new Date());
  1169. if (steelMeters != null && !steelMeters.toString().equals("0")) {
  1170. amsSaleMaterial.setSteelMeter(steelMeters);
  1171. }
  1172. amsSaleMaterial.setIsPoundSale(isPoundSale);
  1173. amsSaleMaterial.setInsertUpdateRemark("物流新增");
  1174. result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
  1175. /*
  1176. 车序号物资表
  1177. */
  1178. // 车序号物资表主键
  1179. BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
  1180. amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
  1181. amsSaleTrucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  1182. amsSaleTrucknoMaterial.setMaterialId(amsSaleMaterial.getSaleMaterialId());
  1183. amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
  1184. amsSaleTrucknoMaterial.setInsertTime(new Date());
  1185. amsSaleTrucknoMaterial.setUpdateTime(new Date());
  1186. amsSaleTrucknoMaterial.setInsertUpdateRemark("物流新增");
  1187. result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
  1188. }
  1189. result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
  1190. return result;
  1191. }
  1192. /**
  1193. * 自动匹配出最近的一个地址
  1194. * @param receiveId
  1195. * @return
  1196. */
  1197. @Override
  1198. public List<Map<String, Object>> matchingAddressRecently(BigDecimal receiveId) {
  1199. List<Map<String,Object>> mapList = amsSaleOrderMapper.matchingAddressRecently(receiveId);
  1200. List<Map<String,Object>> salerList = amsSaleOrderMapper.getSalerByReceiveId(receiveId);
  1201. if (mapList != null && mapList.size() != 0) {
  1202. if (salerList != null && salerList.size() !=0) {
  1203. Map<String, Object> salerMap = salerList.get(0);
  1204. for (Map<String, Object> map : mapList) {
  1205. map.putAll(salerMap);
  1206. }
  1207. }
  1208. }
  1209. return mapList;
  1210. }
  1211. /**
  1212. * 自动匹配上一条运单的司机电话
  1213. * @param capacityNumber
  1214. * @return
  1215. */
  1216. @Override
  1217. public String matchingDriverTelRecently(String capacityNumber) {
  1218. String driverTel = amsSaleOrderMapper.matchingDriverTelRecently(capacityNumber);
  1219. return driverTel;
  1220. }
  1221. /**
  1222. * 展示未匹配承运商的车序号
  1223. * @param mapValue
  1224. * @return
  1225. */
  1226. @Override
  1227. public List<Map<String, Object>> getSteelTruckNoList(Map<String, Object> mapValue) {
  1228. List<Map<String, Object>> resultList = amsSaleOrderMapper.getSteelTruckNoList(mapValue);
  1229. for (Map<String, Object> resultMap : resultList) {
  1230. BigDecimal saleOrderMaterialId = (BigDecimal) resultMap.get("saleOrderMaterialId");
  1231. // 物资
  1232. List<Map<String,Object>> materialList = amsSaleOrderMapper.getTruckNoMaterial(saleOrderMaterialId);
  1233. if (materialList != null && materialList.size() > 0) {
  1234. Map<String, Object> materialMap = materialList.get(0);
  1235. String materialName = (String) materialMap.get("materialName");
  1236. if (materialList.size() != 1) {
  1237. materialName += "...";
  1238. }
  1239. resultMap.put("materialName",materialName);
  1240. }
  1241. }
  1242. return resultList;
  1243. }
  1244. /**
  1245. * 展示车序号的详情
  1246. * @param saleOrderMaterialId
  1247. * @return
  1248. */
  1249. @Override
  1250. public List<Map<String, Object>> getTruckNoMaterial(BigDecimal saleOrderMaterialId) {
  1251. List<Map<String,Object>> mapList = amsSaleOrderMapper.getTruckNoMaterialAndCarrier(saleOrderMaterialId);
  1252. for (Map<String,Object> map : mapList) {
  1253. BigDecimal placeId = (BigDecimal) map.get("placeId");
  1254. if (placeId != null) {
  1255. List<Map<String, Object>> carrierAndPriceList = getCarrierByPlace(placeId);
  1256. map.put("carrierAndPriceList", carrierAndPriceList);
  1257. }
  1258. }
  1259. return mapList;
  1260. }
  1261. /**
  1262. * 展示已分配承运商但未派车的车序号
  1263. * @param mapValue
  1264. * @return
  1265. */
  1266. @Override
  1267. public List<Map<String, Object>> getNoCarTruckNoList(Map<String, Object> mapValue) {
  1268. List<Map<String, Object>> resultList = amsSaleOrderMapper.getCarrierTruckNoList(mapValue);
  1269. for (Map<String, Object> resultMap : resultList) {
  1270. BigDecimal saleOrderMaterialId = (BigDecimal) resultMap.get("saleOrderMaterialId");
  1271. // 物资
  1272. List<Map<String,Object>> materialList = amsSaleOrderMapper.getTruckNoMaterial(saleOrderMaterialId);
  1273. if (materialList != null && materialList.size() > 0) {
  1274. Map<String, Object> materialMap = materialList.get(0);
  1275. String materialName = (String) materialMap.get("materialName");
  1276. if (materialList.size() != 1) {
  1277. materialName += "...";
  1278. }
  1279. resultMap.put("materialName",materialName);
  1280. }
  1281. }
  1282. return resultList;
  1283. }
  1284. /**
  1285. * 展示已派车的车序号
  1286. * @param mapValue
  1287. * @return
  1288. */
  1289. @Override
  1290. public List<Map<String, Object>> getHaveCarTruckNoList(Map<String, Object> mapValue) {
  1291. List<Map<String, Object>> resultList = amsSaleOrderMapper.getHaveCarTruckNoList(mapValue);
  1292. for (Map<String, Object> resultMap : resultList) {
  1293. BigDecimal saleOrderMaterialId = (BigDecimal) resultMap.get("saleOrderMaterialId");
  1294. // 物资
  1295. List<Map<String,Object>> materialList = amsSaleOrderMapper.getTruckNoMaterial(saleOrderMaterialId);
  1296. if (materialList != null && materialList.size() > 0) {
  1297. Map<String, Object> materialMap = materialList.get(0);
  1298. String materialName = (String) materialMap.get("materialName");
  1299. if (materialList.size() != 1) {
  1300. materialName += "...";
  1301. }
  1302. resultMap.put("materialName",materialName);
  1303. }
  1304. }
  1305. return resultList;
  1306. }
  1307. }