AmsSaleOrderServiceImpl.java 73 KB

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