AmsSaleOrderServiceImpl.java 56 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054
  1. package com.steerinfo.dil.service.impl;
  2. import com.alibaba.druid.support.json.JSONUtils;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.steerinfo.dil.util.newFileTool;
  6. import com.google.gson.JsonObject;
  7. import com.steerinfo.dil.feign.AmsFeign;
  8. import com.steerinfo.dil.mapper.*;
  9. import com.steerinfo.dil.model.*;
  10. import com.steerinfo.dil.service.IAmsSaleOrderService;
  11. import com.steerinfo.dil.util.DataChange;
  12. import com.steerinfo.dil.util.MyException;
  13. import com.sun.org.apache.bcel.internal.generic.NEW;
  14. import io.swagger.models.auth.In;
  15. import org.apache.ibatis.executor.loader.ResultLoader;
  16. import org.apache.shiro.crypto.hash.Hash;
  17. import org.assertj.core.internal.bytebuddy.implementation.FieldAccessor;
  18. import org.slf4j.Logger;
  19. import org.slf4j.LoggerFactory;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import springfox.documentation.spring.web.json.Json;
  24. import javax.xml.crypto.Data;
  25. import java.io.IOException;
  26. import java.math.BigDecimal;
  27. import java.text.ParseException;
  28. import java.text.SimpleDateFormat;
  29. import java.util.*;
  30. import static java.util.stream.Collectors.toList;
  31. /**
  32. * AmsSaleOrder服务实现:
  33. * @author generator
  34. * @version 1.0-SNAPSHORT 2021-10-26 07:26
  35. * 类描述
  36. * 修订历史:
  37. * 日期:2021-10-26
  38. * 作者:generator
  39. * 参考:
  40. * 描述:AmsSaleOrder服务实现
  41. * @see null
  42. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  43. */
  44. @Service(value = "amsSaleOrderService")
  45. public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
  46. @Autowired
  47. private AmsSaleOrderMapper amsSaleOrderMapper;
  48. @Autowired
  49. AmsSaleMaterialMapper amsSaleMaterialMapper;
  50. @Autowired
  51. RmsConsigneeMapper rmsConsigneeMapper;
  52. @Autowired
  53. AmsSaleTrucknoMaterialMapper amsSaleTrucknoMaterialMapper;
  54. @Autowired
  55. AmsSaleOrderCarrierMapper amsSaleOrderCarrierMapper;
  56. @Autowired
  57. OmstruckOrderMapper omstruckOrderMapper;
  58. @Autowired
  59. RmsMaterialMapper rmsMaterialMapper;
  60. @Autowired
  61. private TmstrainPleaseApproveResultMapper tmstrainPleaseApproveResultMapper;
  62. @Autowired
  63. RmstrainArrivalSendMapper rmstrainArrivalSendMapper;
  64. @Autowired
  65. OmstrainOrderMapper omstrainOrderMapper;
  66. @Autowired
  67. AmsFeign amsFeign;
  68. Logger logger = LoggerFactory.getLogger(getClass());
  69. /**
  70. * 查询销售订单
  71. * @param saleOrderId
  72. * @return
  73. */
  74. @Override
  75. @Transactional(rollbackFor = Exception.class)
  76. public Map<String, Object> getSaleOrder(BigDecimal saleOrderId) {
  77. List<Map<String,Object>> entries = amsSaleOrderMapper.getMaterialMessages(saleOrderId);
  78. Map<String,Object> head = amsSaleOrderMapper.getSaleOrderMessage(saleOrderId);
  79. // 单价
  80. BigDecimal taxPrice = (BigDecimal) head.get("unitPrice");
  81. // 税率
  82. String taxRate = (String) head.get("tax");
  83. // 收款客户
  84. String customer = (String) head.get("customer");
  85. for (Map<String, Object> entry : entries) {
  86. // 物流销售订单分录主键
  87. BigDecimal stEntryId = (BigDecimal) entry.get("stEntryId");
  88. // 是否磅重(0:磅重,1:理重)
  89. BigDecimal isPoundSale = (BigDecimal) entry.get("isPoundSale");
  90. // 长度
  91. BigDecimal forChangdu = (BigDecimal) entry.get("forChangdu");
  92. // 物资数量
  93. BigDecimal assistQty = (BigDecimal) entry.get("materialNumber");
  94. entry.put("assistQty",assistQty.toString());
  95. entry.remove("materialNumber");
  96. entry.put("taxPrice",taxPrice.toString());
  97. entry.put("taxRate",taxRate);
  98. entry.put("customer",customer);
  99. entry.replace("stEntryId",stEntryId.toString());
  100. entry.put("isTheory",isPoundSale.toString());
  101. entry.replace("forChangdu", forChangdu == null ? "" : forChangdu.toString());
  102. }
  103. Map<String,Object> input = new HashMap<>();
  104. head.remove("unitPrice");
  105. head.remove("tax");
  106. head.remove("customer");
  107. head.put("isFillCarNum","1");
  108. head.put("isCp","0");
  109. input.put("head",head);
  110. input.put("entries",entries);
  111. return input;
  112. }
  113. /**
  114. * 修改销售订单
  115. * @param mapVal
  116. * @return
  117. */
  118. @Transactional
  119. @Override
  120. public int operationSaleOrder(Map<String, Object> mapVal) {
  121. System.out.println("-----------------------------" + new Date() + "销售订单对接接口" + "-----------------------------");
  122. JSONObject jsonObject = new JSONObject(mapVal);
  123. logger.info(jsonObject.toString());
  124. System.out.println("-----------------------------" + new Date() + "销售订单对接接口" + "-----------------------------");
  125. //try {
  126. // newFileTool.newFile(jsonObject.toString(),"销售订单");
  127. //} catch (IOException e) {
  128. // e.printStackTrace();
  129. //}
  130. int result = 0;
  131. // 审批状态
  132. String orderStatus = (String) mapVal.get("orderStatus");
  133. // 得到销售订单号
  134. String saleNumber = (String) mapVal.get("saleNumber");
  135. Map<String,Object> map = new HashMap<>();
  136. map.put("saleNumber",saleNumber);
  137. // 判断是删除还是非删除
  138. String closeStatus = (String) mapVal.get("closeStatus");
  139. List<AmsSaleOrder> amsSaleOrders = amsSaleOrderMapper.selectByParameters(map);
  140. // 关闭分录
  141. Object closeEntryId = mapVal.get("closeEntryId");
  142. // 反关闭分录
  143. Object unCloseEntryId = mapVal.get("unCloseEntryId");
  144. // 关闭原因
  145. Object reason = mapVal.get("reason");
  146. // 是否整单
  147. Object wholeOrder = mapVal.get("wholeOrder");
  148. // 关闭副产品整个订单
  149. if (closeStatus.equals("-1") && "1".equals(wholeOrder) && amsSaleOrders.size() != 0 && amsSaleOrders.get(0) != null) {
  150. AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0);
  151. amsSaleOrder.setDeleted(new BigDecimal(2));
  152. if (reason != null) {
  153. amsSaleOrder.setInsertUpdateRemark(reason.toString());
  154. }
  155. result += amsSaleMaterialMapper.closeAllSaleMaterial(amsSaleOrder.getSaleOrderId());
  156. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  157. List<Map<String, Object>> warehouseList = amsSaleOrderMapper.getWareHouse(amsSaleOrder.getSaleOrderId());
  158. if (warehouseList != null && warehouseList.size() != 0 && warehouseList.get(0) != null) {
  159. Object warehouse = warehouseList.get(0).get("warehouse");
  160. if (warehouse != null && "副产品库".equals(warehouse)) {
  161. result += amsSaleOrderMapper.closeOrderNotIn(amsSaleOrder.getSaleOrderId());
  162. }
  163. }
  164. //如果是钢材订单
  165. if(amsSaleOrder.getSaleType().intValue() == 1){
  166. //获取该钢材销售订单下所有的运输订单ID,状态
  167. result += amsSaleOrderMapper.closeOrderNotIn(amsSaleOrder.getSaleOrderId());
  168. }
  169. }
  170. // 关闭单个分录订单
  171. if (closeStatus.equals("-1") && wholeOrder.equals("0")) {
  172. if (closeEntryId != null) {
  173. Map<String, Object> easMap = new HashMap<>();
  174. easMap.put("easPrimaryId", closeEntryId);
  175. List<AmsSaleMaterial> amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(easMap);
  176. if (amsSaleMaterials != null && amsSaleMaterials.size() != 0 && amsSaleMaterials.get(0) != null) {
  177. AmsSaleMaterial amsSaleMaterial = amsSaleMaterials.get(0);
  178. //amsSaleMaterial.setDeleted(new BigDecimal(0));
  179. //result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
  180. BigDecimal saleMaterialId = amsSaleMaterial.getSaleMaterialId();
  181. //调用自己关闭分录服务接口--运单id,车序号id,理由,物流分录id
  182. Map<String, Object> closeEntryMap = omstruckOrderMapper.selecrCloseEntryMes(saleMaterialId);
  183. closeEntryMap.put("reason","金蝶关闭分录,物流同步关闭");
  184. closeEntryMap.put("closeEntryFlag",1);
  185. //判断该分录有没有运单
  186. try {
  187. amsFeign.closeSteelMaterialId(closeEntryMap);
  188. } catch (Exception e) {
  189. e.printStackTrace();
  190. }
  191. }
  192. }
  193. }
  194. // 反关闭整单
  195. if (closeStatus.equals("-2") && "1".equals(wholeOrder)) {
  196. AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0);
  197. amsSaleOrder.setDeleted(new BigDecimal(0));
  198. BigDecimal saleOrderId = amsSaleOrder.getSaleOrderId();
  199. if (reason != null) {
  200. amsSaleOrder.setInsertUpdateRemark(reason.toString());
  201. }
  202. // 反关闭销售订单下的所有分录
  203. result += amsSaleMaterialMapper.openAllSaleMaterial(saleOrderId);
  204. //反关闭这个销售订单下面被关闭的运单
  205. try {
  206. List<Map<String,Object>> orderMapList = amsSaleOrderMapper.selectOrderList(saleOrderId);
  207. for (Map<String,Object> orderMap :orderMapList) {
  208. OmstruckOrder omstruckOrder = new OmstruckOrder();
  209. if(orderMap.get("factoryResultId") != null) {
  210. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(orderMap.get("orderId")));
  211. omstruckOrder.setInsertUpdateRemark("金蝶反关闭整单,物流同步反关闭销售订单下的整单");
  212. omstruckOrder.setOrderStatus(new BigDecimal(5));
  213. omstruckOrder.setUpdateTime(new Date());
  214. omstruckOrder.setUpdateUsername("金蝶");
  215. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  216. }else{
  217. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(orderMap.get("orderId")));
  218. omstruckOrder.setInsertUpdateRemark("金蝶反关闭整单,物流同步反关闭销售订单下的整单");
  219. omstruckOrder.setOrderStatus(new BigDecimal(4));
  220. omstruckOrder.setUpdateUsername("金蝶");
  221. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  222. }
  223. }
  224. } catch (Exception e) {
  225. e.printStackTrace();
  226. }
  227. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  228. }
  229. // 反关闭单个分录订单
  230. if (closeStatus.equals("-2") && wholeOrder.equals("0")) {
  231. if (unCloseEntryId != null) {
  232. Map<String, Object> easMap = new HashMap<>();
  233. easMap.put("easPrimaryId", unCloseEntryId);
  234. List<AmsSaleMaterial> amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(easMap);
  235. if (amsSaleMaterials != null && amsSaleMaterials.size() != 0 && amsSaleMaterials.get(0) != null) {
  236. AmsSaleMaterial amsSaleMaterial = amsSaleMaterials.get(0);
  237. //result += amsSaleMaterialMapper.unCloseSaleMaterial(amsSaleMaterial.getSaleMaterialId());
  238. BigDecimal saleMaterialId = amsSaleMaterial.getSaleMaterialId();
  239. //判断该分录有没有运单
  240. try {
  241. amsFeign.adverseCloseSaleMaterialByEas(saleMaterialId);
  242. } catch (Exception e) {
  243. e.printStackTrace();
  244. }
  245. }
  246. }
  247. }
  248. if (closeStatus.equals("0")) {
  249. AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0);
  250. amsSaleOrder.setDeleted(new BigDecimal(1));
  251. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  252. //反审的订单需将下面的运输订单关闭
  253. try {
  254. amsSaleOrderMapper.reverseApprovalOrder(amsSaleOrder.getSaleOrderId());
  255. } catch (Exception e) {
  256. e.printStackTrace();
  257. }
  258. }
  259. if (orderStatus.equals("4") && closeStatus.equals("1")){
  260. AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0);
  261. amsSaleOrder.setSaleOrderStatus(new BigDecimal(4));
  262. amsSaleOrder.setDeleted(new BigDecimal(0));
  263. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  264. BigDecimal saleOrderId = amsSaleOrder.getSaleOrderId();
  265. // 如果是财务审批后,将不可作业的运输订单改为已接收状态
  266. //反关闭这个销售订单下面被关闭的运单
  267. try {
  268. List<Map<String,Object>> orderMapList = amsSaleOrderMapper.selectOrderList(saleOrderId);
  269. for (Map<String,Object> orderMap :orderMapList) {
  270. OmstruckOrder omstruckOrder = new OmstruckOrder();
  271. if(orderMap.get("factoryResultId") != null) {
  272. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(orderMap.get("orderId")));
  273. omstruckOrder.setInsertUpdateRemark("金蝶反关闭整单,物流同步反关闭销售订单下的整单");
  274. omstruckOrder.setOrderStatus(new BigDecimal(5));
  275. omstruckOrder.setUpdateTime(new Date());
  276. omstruckOrder.setUpdateUsername("金蝶");
  277. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  278. }else{
  279. omstruckOrder.setOrderId(DataChange.dataToBigDecimal(orderMap.get("orderId")));
  280. omstruckOrder.setInsertUpdateRemark("金蝶反关闭整单,物流同步反关闭销售订单下的整单");
  281. omstruckOrder.setOrderStatus(new BigDecimal(4));
  282. omstruckOrder.setUpdateUsername("金蝶");
  283. result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
  284. }
  285. }
  286. } catch (Exception e) {
  287. e.printStackTrace();
  288. }
  289. }
  290. if (orderStatus.equals("2") && closeStatus.equals("1")){
  291. // 得到账户余额
  292. String saleAccountBalance = (String) mapVal.get("saleAccountBalance");
  293. // 得到当前订单金额
  294. String saleCurrentOrderAmount = (String) mapVal.get("saleCurrentOrderAmount");
  295. // 得到历史订单金额
  296. String saleHistoricalOrderAmount = (String) mapVal.get("saleHistoricalOrderAmount");
  297. // 得到订单备注
  298. String saleRemark = (String) mapVal.get("saleRemark");
  299. // 得到是否自提
  300. String isSelfMention = (String) mapVal.get("isSelfMention");
  301. // 得到收货单位
  302. String receiveUnit = (String) mapVal.get("receiveUnit");
  303. // 得到收货单位名称
  304. String receiveUnitName = (String) mapVal.get("receiveUnitName");
  305. // 得到订单日期
  306. String saleOrderBizDateStr = (String) mapVal.get("saleOrderBizDate");
  307. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  308. BigDecimal receiveId = amsSaleOrderMapper.getReceiveId(receiveUnit);
  309. // 如果不存则自己增收获单位
  310. if (receiveId == null) {
  311. RmsConsignee rmsConsignee = new RmsConsignee();
  312. BigDecimal consigneeId = rmsConsigneeMapper.getConsigneeId();
  313. rmsConsignee.setConsigneeId(consigneeId);
  314. rmsConsignee.setConsigneeCode(receiveUnit);
  315. rmsConsignee.setConsigneeCompanyName(receiveUnitName);
  316. rmsConsignee.setDeleted(new BigDecimal(0));
  317. rmsConsignee.setInsertTime(new Date());
  318. rmsConsignee.setInsertUsername("销售订单");
  319. rmsConsignee.setInsertUpdateRemark("通过销售订单自增");
  320. rmsConsigneeMapper.insertSelective(rmsConsignee);
  321. }
  322. // 得到发货单位
  323. String shipperUnit = (String) mapVal.get("shipperUnit");
  324. BigDecimal shipperId = amsSaleOrderMapper.getShipperId(shipperUnit);
  325. // 得到收款客户
  326. String saleOrderReceiveCustomer = (String) mapVal.get("receiveCustomer");
  327. // 得到物资信息
  328. List<Map<String, Object>> mapList = (List<Map<String, Object>>) mapVal.get("mapList");
  329. // 如果不存在则自己新增(使用金蝶销售订单号)
  330. if (amsSaleOrders.size() == 0) {
  331. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  332. BigDecimal saleOrderId = amsSaleOrderMapper.getSaleOrderId();
  333. amsSaleOrder.setSaleOrderId(saleOrderId);
  334. amsSaleOrder.setSaleNumber(saleNumber);
  335. amsSaleOrder.setDeleted(new BigDecimal(0));
  336. amsSaleOrder.setUpdateTime(new Date());
  337. amsSaleOrder.setInsertUsername("admin");
  338. amsSaleOrder.setInsertUpdateRemark("金蝶采集销售订单");
  339. amsSaleOrder.setUpdateUsername("admin");
  340. amsSaleOrder.setReceiveId(receiveId);
  341. amsSaleOrder.setShipperId(shipperId);
  342. // 订单日期
  343. try {
  344. Date saleOrderBizDate = sdf.parse(saleOrderBizDateStr);
  345. amsSaleOrder.setInsertTime(saleOrderBizDate);
  346. } catch (ParseException e) {
  347. e.printStackTrace();
  348. }
  349. if (shipperUnit.equals("四川达兴能源有限责任公司") && receiveUnitName.equals("四川省达州钢铁集团有限责任公司")) {
  350. amsSaleOrder.setCloseStatus(new BigDecimal(0));
  351. }
  352. if (isSelfMention != null) {
  353. if (isSelfMention.equals("CARRY")) {
  354. amsSaleOrder.setSaleOrderIsselfMention("是");
  355. } else {
  356. amsSaleOrder.setSaleOrderIsselfMention("否");
  357. }
  358. }
  359. amsSaleOrder.setSaleOrderTax("13%");
  360. amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
  361. amsSaleOrder.setSaleRemark(saleRemark);
  362. amsSaleOrder.setSaleOrderReceiveCustomer(saleOrderReceiveCustomer);
  363. amsSaleOrder.setSaleAccountBalance(new BigDecimal(saleAccountBalance));
  364. amsSaleOrder.setSaleCurrentOrderAmount(new BigDecimal(saleCurrentOrderAmount));
  365. if (saleHistoricalOrderAmount != null && saleHistoricalOrderAmount.length() != 0) {
  366. amsSaleOrder.setSaleHistoricalOrderAmount(new BigDecimal(saleHistoricalOrderAmount));
  367. }
  368. amsSaleOrder.setSaleOrderStatus(new BigDecimal(2));
  369. // 遍历物资分录,新增销售订单与物资中间表
  370. for (Map<String, Object> materialMap : mapList) {
  371. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  372. BigDecimal saleMaterialId = amsSaleMaterialMapper.getSaleMaterialId();
  373. amsSaleMaterial.setSaleMaterialId(saleMaterialId);
  374. amsSaleMaterial.setSaleOrderId(saleOrderId);
  375. // 仓库编码
  376. Object warehouseNum = materialMap.get("warehouseNum");
  377. // 仓库名称
  378. Object warehouseName = materialMap.get("warehouseName");
  379. // 物资理重
  380. Object meterWeight = materialMap.get("meterWeight");
  381. // 得到物资编码
  382. String materialCode = (String) materialMap.get("materialCode");
  383. if (warehouseName != null) {
  384. amsSaleMaterial.setSaleWarehouse(warehouseName.toString());
  385. //得到物资名称
  386. String materialName = amsSaleOrderCarrierMapper.getMaterialName(materialCode);
  387. // 如果是副产品仓库,则给自提订单自动匹配承运商
  388. if (warehouseName.equals("副产品库") && "是".equals(amsSaleOrder.getSaleOrderIsselfMention()) || "钒渣".equals(materialName) && "是".equals(amsSaleOrder.getSaleOrderIsselfMention()) ) {
  389. AmsSaleOrderCarrier amsSaleOrderCarrier = amsSaleOrderCarrierMapper.getAmsSaleOrderCarrier(saleOrderId);
  390. BigDecimal carrierId = amsSaleOrderCarrierMapper.findCarrierByConsignee(receiveUnitName);
  391. if (amsSaleOrderCarrier == null) {
  392. amsSaleOrderCarrier = new AmsSaleOrderCarrier();
  393. amsSaleOrderCarrier.setSaleOrderCarrierId(amsSaleOrderCarrierMapper.selectMaxId());
  394. amsSaleOrderCarrier.setCarrierId(amsSaleOrderCarrierMapper.selectMaxId());
  395. amsSaleOrderCarrier.setSaleOrderId(saleOrderId);
  396. amsSaleOrderCarrier.setCarrierId(carrierId);
  397. amsSaleOrderCarrier.setDeleted(new BigDecimal(0));
  398. amsSaleOrderCarrier.setInsertTime(new Date());
  399. amsSaleOrderCarrier.setInsertUsername("自动匹配");
  400. amsSaleOrderCarrier.setInsertUpdateRemark("自提订单自动匹配");
  401. result += amsSaleOrderCarrierMapper.insertSelective(amsSaleOrderCarrier);
  402. }
  403. else {
  404. amsSaleOrderCarrier.setCarrierId(carrierId);
  405. result += amsSaleOrderCarrierMapper.updateByPrimaryKeySelective(amsSaleOrderCarrier);
  406. }
  407. }
  408. }
  409. BigDecimal materialId = amsSaleMaterialMapper.getMaterialId(materialCode);
  410. Integer materialCount = amsSaleMaterialMapper.getMaterialCount(materialId);
  411. RmsMaterial rmsMaterial = new RmsMaterial();
  412. rmsMaterial.setMaterialId(materialId);
  413. if (materialCount == null) {
  414. materialCount = new Integer(0);
  415. }
  416. rmsMaterial.setMaterialCount(new BigDecimal(materialCount + 1));
  417. rmsMaterialMapper.updateByPrimaryKeySelective(rmsMaterial);
  418. // 得到金蝶分录主键
  419. String easPrimaryId = (String) materialMap.get("easPrimaryId");
  420. // 得到物资重量
  421. String materialWeight = (String) materialMap.get("materialNumber");
  422. // 得到物资件数
  423. String materialNumber = (String) materialMap.get("assistQty");
  424. // 得到计量单位
  425. String materialUnit = (String) materialMap.get("materialUnit");
  426. amsSaleMaterial.setEasPrimaryId(easPrimaryId);
  427. amsSaleMaterial.setMaterialId(materialId);
  428. amsSaleMaterial.setInsertTime(new Date());
  429. amsSaleMaterial.setInsertUsername("金蝶");
  430. amsSaleMaterial.setMeterWeight(DataChange.dataToBigDecimal(meterWeight));
  431. amsSaleMaterial.setInsertUpdateRemark("采集金蝶销售订单");
  432. if (materialWeight != null && !"".equals(materialWeight)) {
  433. amsSaleMaterial.setMaterialWeight(new BigDecimal(materialWeight));
  434. }
  435. if (materialNumber != null && !"".equals(materialNumber)) {
  436. amsSaleMaterial.setMaterialNumber(new BigDecimal(materialNumber));
  437. }
  438. result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
  439. }
  440. result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
  441. } else {
  442. AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0);
  443. if(amsSaleOrder != null && amsSaleOrder.getSaleType() != null && amsSaleOrder.getSaleType().intValue() == 1) {
  444. try{
  445. new Thread( new Runnable() {
  446. public void run(){
  447. //查询销售订单车序号表是否存在上一个运输订单号,如果存在,调用钢材继续装派单接口
  448. List<Map<String,Object>> saleOrders = amsSaleOrderMapper.selectPreviousOrderNumber(amsSaleOrder.getSaleOrderId());
  449. for (Map<String,Object> temp:saleOrders){
  450. temp.putAll(amsSaleOrderMapper.selectOrderDetails(temp));
  451. }
  452. if(saleOrders != null && saleOrders.size() > 0){
  453. amsFeign.continueSteelOrder(saleOrders);
  454. }
  455. }
  456. }).start();
  457. }catch (Exception e) {
  458. e.printStackTrace();
  459. }
  460. }
  461. amsSaleOrder.setSaleNumber(saleNumber);
  462. amsSaleOrder.setSaleAccountBalance(new BigDecimal(saleAccountBalance));
  463. amsSaleOrder.setSaleCurrentOrderAmount(new BigDecimal(saleCurrentOrderAmount));
  464. amsSaleOrder.setSaleRemark(saleRemark);
  465. amsSaleOrder.setDeleted(new BigDecimal(0));
  466. amsSaleOrder.setUpdateTime(new Date());
  467. amsSaleOrder.setShipperId(shipperId);
  468. amsSaleOrder.setReceiveId(receiveId);
  469. if (isSelfMention != null) {
  470. if (isSelfMention.equals("CARRY")) {
  471. amsSaleOrder.setSaleOrderIsselfMention("是");
  472. } else {
  473. amsSaleOrder.setSaleOrderIsselfMention("否");
  474. }
  475. }
  476. if (saleHistoricalOrderAmount != null && saleHistoricalOrderAmount.length() != 0) {
  477. amsSaleOrder.setSaleHistoricalOrderAmount(new BigDecimal(saleHistoricalOrderAmount));
  478. }
  479. amsSaleOrder.setSaleOrderStatus(new BigDecimal(orderStatus));
  480. //获取销售订单下的分录id--获取物流分录id
  481. //判断单据来源是金蝶还是物流
  482. List<String> wuliuStIds = amsSaleMaterialMapper.getMaterialEasList(saleNumber);
  483. //查询该销售订单下的所有物资分录
  484. List<String> EasIds = new ArrayList<>();
  485. for (Map<String, Object> materialMap : mapList) {
  486. // 得到中间表主键id
  487. String saleMaterialId = (String) materialMap.get("saleMaterialId");
  488. // 得到金蝶分录id
  489. String easPrimaryId = (String) materialMap.get("easPrimaryId");
  490. Map<String,Object> resultMap = new HashMap<>();
  491. resultMap.put("easPrimaryId",easPrimaryId);
  492. AmsSaleMaterial amsSaleMaterial;
  493. // 得到物资重量
  494. String materialWeight = (String) materialMap.get("materialNumber");
  495. // 得到物资件数
  496. String materialNumber = (String) materialMap.get("assistQty");
  497. // 如果有物流系统销售订单物资表主键:认定是走物流新增的销售订单(通过物流系统主键进行查询)
  498. if (saleMaterialId != null && (!saleMaterialId.equals("null")) && !saleMaterialId.equals("")) {
  499. amsSaleMaterial = amsSaleMaterialMapper.selectByPrimaryKey(new BigDecimal(saleMaterialId));
  500. Object meterWeight = materialMap.get("meterWeight");
  501. Object forChangdu = materialMap.get("forChangdu");
  502. EasIds.add(saleMaterialId);
  503. if(forChangdu != null && !"".equals(forChangdu.toString())){
  504. amsSaleMaterial.setSteelMeter(DataChange.dataToBigDecimal(forChangdu));
  505. }
  506. if (meterWeight != null && !"".equals(meterWeight.toString())) {
  507. amsSaleMaterial.setMeterWeight(DataChange.dataToBigDecimal(meterWeight));
  508. }
  509. else {
  510. Double weightDouble = new Double(materialNumber);
  511. BigDecimal liWeight = new BigDecimal( weightDouble/amsSaleMaterial.getMaterialNumber().doubleValue() * 1000);
  512. amsSaleMaterial.setMeterWeight(liWeight);
  513. }
  514. // 同步修改车序号物资表
  515. resultMap.put("materialId",saleMaterialId);
  516. List<AmsSaleTrucknoMaterial> amsSaleTrucknoMaterials = amsSaleTrucknoMaterialMapper.selectByParameters(resultMap);
  517. AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = amsSaleTrucknoMaterials.get(0);
  518. amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(new BigDecimal(materialNumber));
  519. amsSaleTrucknoMaterial.setInsertUpdateRemark("在金蝶做修改");
  520. amsSaleTrucknoMaterialMapper.updateByPrimaryKeySelective(amsSaleTrucknoMaterial);
  521. }
  522. // 否则认定是走金蝶新增的销售订单(通过金蝶分录id进行查询)
  523. else {
  524. List<AmsSaleMaterial> amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(resultMap);
  525. amsSaleMaterial = amsSaleMaterials.get(0);
  526. amsSaleMaterial.setInsertUsername("金蝶");
  527. amsSaleMaterial.setInsertUpdateRemark("采集金蝶销售订单");
  528. }
  529. // 得到物资编码
  530. String materialCode = (String) materialMap.get("materialCode");
  531. // 得到计量单位
  532. String materialUnit = (String) materialMap.get("materialUnit");
  533. if (materialWeight != null && !"".equals(materialWeight)) {
  534. amsSaleMaterial.setMaterialWeight(new BigDecimal(materialWeight));
  535. }
  536. if (materialNumber != null && !
  537. "".equals(materialNumber)) {
  538. amsSaleMaterial.setMaterialNumber(new BigDecimal(materialNumber));
  539. }
  540. BigDecimal materialId = amsSaleMaterialMapper.getMaterialId(materialCode);
  541. amsSaleMaterial.setEasPrimaryId(easPrimaryId);
  542. amsSaleMaterial.setSaleOrderId(amsSaleOrder.getSaleOrderId());
  543. amsSaleMaterial.setMaterialId(materialId);
  544. amsSaleMaterial.setInsertTime(new Date());
  545. result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
  546. }
  547. if(amsSaleOrder.getSaleType() != null && amsSaleOrder.getSaleType().intValue() == 1 && EasIds.size() < wuliuStIds.size()){
  548. //只有当金蝶传过来的分录小于物流这边的金蝶分录时,才进行此处判断
  549. //遍历物流存在的数组,如果wuliu有的金蝶没有,那就将物流没有的给隐藏调
  550. //将物流这边的金蝶分录集合变成set
  551. Set<String> set = new HashSet<String>(wuliuStIds);
  552. //遍历金蝶分录数组
  553. for(String easId:EasIds){
  554. // 若是集合里有相同的就删掉,若是没有就将值添加到集合
  555. if (set.contains(easId))
  556. {
  557. set.remove(easId);
  558. } else
  559. {
  560. set.add(easId);
  561. }
  562. }
  563. List<String> chaEasIds = new ArrayList<>(set);
  564. //遍历数组将这里面的分录删掉
  565. for (String easId:chaEasIds){
  566. //物理删除该分录
  567. result += amsSaleMaterialMapper.deleteSaleMaterialByEasId(easId);
  568. result += amsSaleMaterialMapper.deleteAstmBystId(easId);
  569. }
  570. System.out.println(chaEasIds);
  571. }
  572. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  573. }
  574. }
  575. return result;
  576. }
  577. @Override
  578. @Transactional
  579. public int testContinue(Map<String, Object> map){
  580. try{
  581. new Thread( new Runnable() {
  582. public void run(){
  583. //查询销售订单车序号表是否存在上一个运输订单号,如果存在,调用钢材继续装派单接口
  584. List<Map<String,Object>> saleOrders=amsSaleOrderMapper.selectPreviousOrderNumber(DataChange.dataToBigDecimal(map.get("saleOrderId")));
  585. for (Map<String,Object> temp:saleOrders){
  586. temp.putAll(amsSaleOrderMapper.selectOrderDetails(temp));
  587. }
  588. if(saleOrders != null && saleOrders.size() > 0){
  589. amsFeign.continueSteelOrder(saleOrders);
  590. }
  591. }
  592. }).start();
  593. }catch (Exception e) {
  594. e.printStackTrace();
  595. }
  596. return 1;
  597. }
  598. /**
  599. * 通过运单id得到车牌号
  600. * @param saleOrderMaterialId
  601. * @return
  602. */
  603. @Override
  604. public Map<String,Object> findCarNumberByOrderId(BigDecimal saleOrderMaterialId) {
  605. Map<String, Object> head = omstruckOrderMapper.findCarNumberByOrderId(saleOrderMaterialId);
  606. //根据车序号表查询销售订单表是否自提
  607. String isWithdrawal = amsSaleOrderMapper.getWithdrawal(saleOrderMaterialId);
  608. if("是".equals(isWithdrawal)){
  609. head.replace("forwarder","自提");
  610. }
  611. List<Map<String,Object>> entries = omstruckOrderMapper.findEntriesByOrderId(saleOrderMaterialId);
  612. //遍历数组 en
  613. Map<String,Object> input = new HashMap<>();
  614. input.put("entries",entries);
  615. input.put("head",head);
  616. return input;
  617. }
  618. @Override
  619. public Map<String, Object> findCarNumberByOrderList(List<Map<String, Object>> mapList) {
  620. List<Map<String,Object>> entries = new ArrayList<>();
  621. //遍历车序号数组,获取车序号ID
  622. for(Map<String,Object> map : mapList){
  623. BigDecimal saleOrderMaterialId = new BigDecimal((Integer) map.get("saleOrderMaterialId")) ;
  624. //根据车序号ID去查询车牌号、承运商以及分录ID
  625. List<Map<String,Object>> head = omstruckOrderMapper.finCarAndCarrierAndEntries(saleOrderMaterialId);
  626. entries.addAll(head);
  627. }
  628. Map<String,Object> input = new HashMap<>();
  629. input.put("entries",entries);
  630. return input;
  631. }
  632. //添加内转钢材到异地库
  633. //审核以后回传
  634. @Override
  635. @Transactional(rollbackFor = {Exception.class})
  636. public int addInwardSteelOrder(Map<String,Object> map) throws Exception {
  637. System.out.println("-----------------------------" + new Date() + "内转异地库对接接口" + "-----------------------------");
  638. System.out.println(map);
  639. System.out.println("-----------------------------" + new Date() + "内转异地库对接接口" + "-----------------------------");
  640. int result=0;
  641. //输出json数据。
  642. String json= JSON.toJSONString(map);
  643. System.out.println(json);
  644. //获取订单状态
  645. String orderStatus = (String) map.get("orderStatus");
  646. String easPrimaryId=null;
  647. //设置是否反审核状态
  648. String closeStatus =(String) map.get("closeStatus");
  649. //是否整单
  650. Object wholeOrder = map.get("wholeOrder");
  651. // 得到单据编号
  652. String saleNumber = (String) map.get("saleNumber");
  653. //获取调出组织部门
  654. String transferOutInventoryOrg =(String) map.get("TransferOutInventorOrg");
  655. //获取调入组织部门
  656. String transferInInventoryOrg =(String) map.get("TransferInInventorOrg");
  657. //获取调出部门
  658. String transferOutDep =(String) map.get("TransferOutDep");
  659. //获取调入部门
  660. String transferInDep =(String) map.get("TransferInDep");
  661. // 得到订单日期
  662. String saleOrderBizDateStr = (String) map.get("saleOrderBizDate");
  663. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  664. //获取销售摘要
  665. String saleRemark = (String) map.get("saleRemark");
  666. SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  667. //设置是否为车皮
  668. String whetherTheCar =(String) map.get("whetherTheCar");
  669. //业务日期
  670. String businessDate =(String) map.get("businessDate");
  671. //获取业务类型
  672. String businessType =(String) map.get("businessType");
  673. //判断销售订单是否存在
  674. BigDecimal saleOrderNumber = amsSaleOrderMapper.selectAmsSaleOrderNum(saleNumber);
  675. if (saleOrderNumber==null&&transferInDep==null){
  676. return 1;
  677. }
  678. //如果销售订单不存在
  679. if (saleOrderNumber==null){
  680. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  681. BigDecimal saleOrderId = amsSaleOrderMapper.getSaleOrderId();
  682. //新增销售订单主键
  683. amsSaleOrder.setSaleOrderId(saleOrderId);
  684. //新增单据编码
  685. amsSaleOrder.setSaleNumber(saleNumber);
  686. //根据发货单位查找id
  687. String shipperName="四川省达州钢铁集团有限责任公司";
  688. BigDecimal shipperId = amsSaleOrderMapper.getShipperId(shipperName);
  689. amsSaleOrder.setShipperId(DataChange.dataToBigDecimal(shipperId));
  690. // 订单日期
  691. try {
  692. Date saleOrderBizDate = sdf.parse(saleOrderBizDateStr);
  693. amsSaleOrder.setInsertTime(saleOrderBizDate);
  694. } catch (ParseException e) {
  695. e.printStackTrace();
  696. }
  697. //业务日期
  698. try {
  699. Date BusinessDate = sdf.parse(businessDate);
  700. amsSaleOrder.setBusinessDate(BusinessDate);
  701. } catch (ParseException e) {
  702. e.printStackTrace();
  703. }
  704. amsSaleOrder.setWhetherTheCar(whetherTheCar);
  705. amsSaleOrder.setSaleRemark(saleRemark);
  706. amsSaleOrder.setSaleOrderStatus(new BigDecimal(4));
  707. //销售订单类型:内转钢材到异地库
  708. amsSaleOrder.setSaleType(new BigDecimal(4));
  709. amsSaleOrder.setTransferInDep(transferInDep);
  710. amsSaleOrder.setTransferOutDep(transferOutDep);
  711. amsSaleOrder.setDeleted(new BigDecimal(0));
  712. amsSaleOrder.setCloseStatus(new BigDecimal(0));
  713. amsSaleOrder.setTransferInInventoryOrg(transferInInventoryOrg);
  714. amsSaleOrder.setTransferOutInventoryOrg(transferOutInventoryOrg);
  715. amsSaleOrder.setBusinessType(businessType);
  716. amsSaleOrder.setInsertUsername("金蝶");
  717. amsSaleOrder.setInsertUpdateRemark("采集金蝶库存调拨单");
  718. result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
  719. //得到物资信息
  720. List<Map<String, Object>> mapList = (List<Map<String, Object>>) map.get("mapList");
  721. for (Map<String,Object> materialMap:mapList){
  722. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  723. BigDecimal saleMaterialId = amsSaleMaterialMapper.getSaleMaterialId();
  724. amsSaleMaterial.setSaleMaterialId(saleMaterialId);
  725. amsSaleMaterial.setSaleOrderId(saleOrderId);
  726. String materialWeight =(String) materialMap.get("materialNumber");
  727. // 辅助数量
  728. Object auxiliaryQuantity = materialMap.get("AuxiliaryQuantity");
  729. // 物资重量
  730. Object meterWeight = materialMap.get("meterWeight");
  731. Object steelMeter = materialMap.get("steelMeter");
  732. if (steelMeter!=null) {
  733. amsSaleMaterial.setSteelMeter(DataChange.dataToBigDecimal(steelMeter));
  734. }
  735. if (materialWeight != null && !"".equals(materialWeight)) {
  736. amsSaleMaterial.setMaterialWeight(new BigDecimal(materialWeight));
  737. }
  738. //设置调出仓库
  739. Object transferOutOfWarehouse = materialMap.get("TransferOutOfWarehouse");
  740. amsSaleMaterial.setTransferOutOfWarehouse((String) transferOutOfWarehouse);
  741. //设置调入仓库
  742. Object transferInOfWarehouse = materialMap.get("TransferInOfWarehouse");
  743. amsSaleMaterial.setTransferInOfWarehouse((String) transferInOfWarehouse);
  744. //设置调入计划日期
  745. String transferInPlanDate =(String) materialMap.get("TransferInPlanDate");
  746. try {
  747. Date transferInPlanDate1 = sdf.parse(transferInPlanDate);
  748. amsSaleMaterial.setTransferInPlanDate(transferInPlanDate1);
  749. } catch (ParseException e) {
  750. e.printStackTrace();
  751. }
  752. // 得到金蝶分录主键
  753. easPrimaryId = (String) materialMap.get("easPrimaryId");
  754. //设置调出计划日期
  755. String transferOutPlanDate =(String) materialMap.get("TransferOutPlanDate");
  756. try {
  757. Date transferOutPlanDate2 = sdf.parse(transferOutPlanDate);
  758. amsSaleMaterial.setTransferOutPlanDate(transferOutPlanDate2);
  759. } catch (ParseException e) {
  760. e.printStackTrace();
  761. }
  762. //是否磅重交货
  763. Object isPoundSale = materialMap.get("isPoundSale");
  764. if (isPoundSale!=null){
  765. amsSaleMaterial.setIsPoundSale(DataChange.dataToBigDecimal(isPoundSale));
  766. }
  767. //设置是否控制数量
  768. Object controlQuailty = materialMap.get("ControlQuantity");
  769. amsSaleMaterial.setControlQuantity((String) controlQuailty);
  770. //设置库存类型
  771. Object inventoryType = materialMap.get("InventoryType");
  772. amsSaleMaterial.setInventoryType((String) inventoryType);
  773. //设置库存状态
  774. Object inventoryStatus = materialMap.get("InventoryStatus");
  775. amsSaleMaterial.setInventoryStatus((String) inventoryStatus);
  776. // 得到物资编码
  777. String materialCode = (String) materialMap.get("materialCode");
  778. BigDecimal materialId = amsSaleMaterialMapper.getMaterialId(materialCode);
  779. Integer materialCount = amsSaleMaterialMapper.getMaterialCount(materialId);
  780. RmsMaterial rmsMaterial = new RmsMaterial();
  781. rmsMaterial.setMaterialId(materialId);
  782. if (materialCount == null) {
  783. materialCount = new Integer(0);
  784. }
  785. rmsMaterial.setMaterialCount(new BigDecimal(materialCount + 1));
  786. rmsMaterialMapper.updateByPrimaryKeySelective(rmsMaterial);
  787. // 得到计量单位
  788. amsSaleMaterial.setEasPrimaryId(easPrimaryId);
  789. amsSaleMaterial.setMaterialId(materialId);
  790. //设置辅助数量
  791. amsSaleMaterial.setMaterialNumber(DataChange.dataToBigDecimal(auxiliaryQuantity));
  792. amsSaleMaterial.setInsertTime(new Date());
  793. amsSaleMaterial.setInsertUsername("金蝶");
  794. amsSaleMaterial.setMeterWeight(DataChange.dataToBigDecimal(meterWeight));
  795. amsSaleMaterial.setInsertUpdateRemark("采集金蝶库存调拨单");
  796. if (materialWeight != null && !"".equals(materialWeight)) {
  797. amsSaleMaterial.setMaterialWeight(new BigDecimal(materialWeight));
  798. }
  799. result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
  800. //设置发站
  801. Object toTheStation = map.get("toTheStation");
  802. TmstrainPleaseApproveResult tmstrainPleaseApproveResult=new TmstrainPleaseApproveResult();
  803. BigDecimal maxId = tmstrainPleaseApproveResultMapper.getMaxId();
  804. tmstrainPleaseApproveResult.setResultId(maxId);
  805. tmstrainPleaseApproveResult.setResultPleasePlanNo(DataChange.generateEightDigitsNumber("WLQCH",maxId.intValue()));
  806. tmstrainPleaseApproveResult.setRailPlanId(saleMaterialId);
  807. //查找到站是否存在到站表
  808. BigDecimal sendStation = rmstrainArrivalSendMapper.getSendStation((String) toTheStation);
  809. //到站不存在
  810. if (sendStation==null){
  811. //新增到站
  812. BigDecimal toStationMaxId = rmstrainArrivalSendMapper.getMaxId();
  813. RmstrainArrivalSend rmstrainArrivalSend=new RmstrainArrivalSend();
  814. rmstrainArrivalSend.setArrivalId(toStationMaxId);
  815. rmstrainArrivalSend.setArrivalName((String) toTheStation);
  816. rmstrainArrivalSend.setInsertTime(new Date());
  817. rmstrainArrivalSend.setInsertUsername("金蝶");
  818. rmstrainArrivalSend.setInsertUpdateRemark("金蝶回传数据");
  819. result += rmstrainArrivalSendMapper.insertSelective(rmstrainArrivalSend);
  820. tmstrainPleaseApproveResult.setToTheStationId(toStationMaxId);
  821. }else {
  822. //到站存在
  823. tmstrainPleaseApproveResult.setToTheStationId(sendStation);
  824. }
  825. tmstrainPleaseApproveResult.setResultType(new BigDecimal(4));
  826. tmstrainPleaseApproveResult.setInsertTime(new Date());
  827. tmstrainPleaseApproveResult.setInsertUpdateRemark("金蝶回传");
  828. result += tmstrainPleaseApproveResultMapper.insertSelective(tmstrainPleaseApproveResult);
  829. }
  830. }else {
  831. // throw new Exception("暂不支持修改库存调拨单");
  832. //此处判断主要是针对销售订单已经存在
  833. AmsSaleOrder amsSaleOrder=new AmsSaleOrder();
  834. //此处判断订单状态为反审核
  835. if (closeStatus.equals("0")&&orderStatus.equals("5")) {
  836. //删除销售订单以及销售订单分录(没有下游单据的)
  837. int i=0;
  838. List<Map<String, Object>> mapList = amsSaleOrderMapper.selectAmssaleOrderId(saleNumber);
  839. BigDecimal selectAreadyUse = amsSaleOrderMapper.selectAreadyUse(saleNumber);
  840. if (selectAreadyUse==null) {
  841. for (Map<String, Object> IdMap : mapList) {
  842. BigDecimal saleMaterialId = DataChange.dataToBigDecimal(IdMap.get("saleMaterialId"));
  843. i+= amsSaleMaterialMapper.deleteByPrimaryKey(saleMaterialId);
  844. }
  845. i+= amsSaleOrderMapper.deleteByPrimaryKey(saleOrderNumber);
  846. return i;
  847. }else {
  848. return -1;
  849. }
  850. }
  851. if (orderStatus.equals("2")){
  852. amsSaleOrder.setSaleOrderId(saleOrderNumber);
  853. amsSaleOrder.setCloseStatus(new BigDecimal(1));
  854. amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  855. }
  856. // 关闭单个分录订单
  857. if (closeStatus.equals("-1") && wholeOrder.equals("0")) {
  858. Object closeEntryId = map.get("closeEntryId");
  859. if (closeEntryId != null) {
  860. Map<String, Object> easMap = new HashMap<>();
  861. easMap.put("easPrimaryId", closeEntryId);
  862. List<AmsSaleMaterial> amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(easMap);
  863. if (amsSaleMaterials != null && amsSaleMaterials.size() != 0) {
  864. AmsSaleMaterial amsSaleMaterial = amsSaleMaterials.get(0);
  865. amsSaleMaterial.setDeleted(new BigDecimal(0));
  866. result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
  867. }
  868. }
  869. }
  870. // 反关闭整单
  871. if (closeStatus.equals("-2") && "1".equals(wholeOrder)) {
  872. amsSaleOrder.setDeleted(new BigDecimal(0));
  873. Object reason = map.get("reason");
  874. BigDecimal saleOrderId = amsSaleOrder.getSaleOrderId();
  875. if (reason != null) {
  876. amsSaleOrder.setInsertUpdateRemark(reason.toString());
  877. }
  878. // 反关闭销售订单下的所有分录
  879. result += amsSaleMaterialMapper.openAllSaleMaterial(saleOrderId);
  880. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  881. }
  882. // 反关闭单个分录订单
  883. if (closeStatus.equals("-2") && wholeOrder.equals("0")) {
  884. Object unCloseEntryId = map.get("unCloseEntryId");
  885. if (unCloseEntryId != null) {
  886. Map<String, Object> easMap = new HashMap<>();
  887. easMap.put("easPrimaryId", unCloseEntryId);
  888. List<AmsSaleMaterial> amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(easMap);
  889. if (amsSaleMaterials != null && amsSaleMaterials.size() != 0) {
  890. AmsSaleMaterial amsSaleMaterial = amsSaleMaterials.get(0);
  891. result += amsSaleMaterialMapper.unCloseSaleMaterial(amsSaleMaterial.getSaleMaterialId());
  892. }
  893. }
  894. }
  895. //编辑销售订单主键
  896. amsSaleOrder.setSaleOrderId(saleOrderNumber);
  897. //新增单据编码
  898. amsSaleOrder.setSaleNumber(saleNumber);
  899. // 订单日期
  900. try {
  901. Date saleOrderBizDate = sdf.parse(saleOrderBizDateStr);
  902. amsSaleOrder.setInsertTime(saleOrderBizDate);
  903. } catch (ParseException e) {
  904. e.printStackTrace();
  905. }
  906. //业务日期
  907. try {
  908. Date BusinessDate = sdf2.parse(businessDate);
  909. amsSaleOrder.setBusinessDate(BusinessDate);
  910. } catch (ParseException e) {
  911. e.printStackTrace();
  912. }
  913. amsSaleOrder.setWhetherTheCar(whetherTheCar);
  914. amsSaleOrder.setSaleRemark(saleRemark);
  915. amsSaleOrder.setSaleOrderStatus(new BigDecimal(2));
  916. //销售订单类型:内转钢材到异地库
  917. amsSaleOrder.setSaleType(new BigDecimal(4));
  918. amsSaleOrder.setTransferInDep(transferInDep);
  919. amsSaleOrder.setTransferOutDep(transferOutDep);
  920. amsSaleOrder.setDeleted(new BigDecimal(0));
  921. amsSaleOrder.setTransferInInventoryOrg(transferInInventoryOrg);
  922. amsSaleOrder.setTransferOutInventoryOrg(transferOutInventoryOrg);
  923. amsSaleOrder.setBusinessType(businessType);
  924. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  925. Object toTheStation = map.get("toTheStation");
  926. //根据销售订单id查找是否存在该请车实绩
  927. BigDecimal resultId = tmstrainPleaseApproveResultMapper.selectResultId(saleOrderNumber);
  928. TmstrainPleaseApproveResult tmstrainPleaseApproveResult=new TmstrainPleaseApproveResult();
  929. tmstrainPleaseApproveResult.setResultId(resultId);
  930. tmstrainPleaseApproveResult.setRailPlanId(saleOrderNumber);
  931. //查找到站是否存在到站表
  932. BigDecimal sendStation = rmstrainArrivalSendMapper.getSendStation((String) toTheStation);
  933. //到站不存在
  934. if (sendStation==null){
  935. //新增到站
  936. BigDecimal toStationMaxId = rmstrainArrivalSendMapper.getMaxId();
  937. RmstrainArrivalSend rmstrainArrivalSend=new RmstrainArrivalSend();
  938. rmstrainArrivalSend.setArrivalId(toStationMaxId);
  939. rmstrainArrivalSend.setArrivalName((String) toTheStation);
  940. rmstrainArrivalSend.setInsertTime(new Date());
  941. rmstrainArrivalSend.setInsertUsername("金蝶");
  942. rmstrainArrivalSend.setInsertUpdateRemark("金蝶回传数据");
  943. result += rmstrainArrivalSendMapper.insertSelective(rmstrainArrivalSend);
  944. }else {
  945. //到站存在
  946. tmstrainPleaseApproveResult.setToTheStationId(sendStation);
  947. }
  948. tmstrainPleaseApproveResult.setResultType(new BigDecimal(4));
  949. tmstrainPleaseApproveResult.setInsertTime(new Date());
  950. tmstrainPleaseApproveResult.setInsertUpdateRemark("金蝶回传");
  951. result += tmstrainPleaseApproveResultMapper.updateByPrimaryKeySelective(tmstrainPleaseApproveResult);
  952. //修改销售订单子表
  953. }
  954. return result;
  955. }
  956. //根据运输订单号和车牌号
  957. @Override
  958. public List<Map<String, Object>> selectSaleSteelOrder(Map<String,Object> map) {
  959. List<Map<String, Object>> mapList = amsSaleOrderMapper.selectSaleSteelOrder(map);
  960. if (mapList.size()==0){
  961. return null;
  962. }
  963. for (Map<String,Object> map1:mapList){
  964. String materialName =(String) map1.get("materialName");
  965. if (materialName.contains("盘螺")){
  966. map1.put("materialType","盘螺");
  967. }else if (materialName.contains("盘圆")||materialName.contains("盘元")){
  968. map1.put("materialType","盘圆");
  969. }else if (materialName.contains("螺纹")){
  970. map1.put("materialType","螺纹钢");
  971. }
  972. //根据物资id查找炉批号
  973. BigDecimal materialId =DataChange.dataToBigDecimal(map1.get("materialId"));
  974. BigDecimal orderId =DataChange.dataToBigDecimal( map1.get("orderId"));
  975. List<Map<String,Object>> materialFurnaceNumber = amsSaleOrderMapper.selectMaterialFurnaceNumber(materialId,orderId);
  976. StringBuilder sb = new StringBuilder();
  977. for (Map<String, Object> luHaoMap : materialFurnaceNumber) {
  978. sb.append(luHaoMap.get("materialFurnaceNumber"));
  979. sb.append("-");
  980. sb.append(luHaoMap.get("materialNum"));
  981. sb.append("/");
  982. }
  983. if(materialFurnaceNumber.size() > 0){
  984. sb.deleteCharAt(sb.length() - 1);
  985. map1.put("materialFurnaceNumber",materialFurnaceNumber);
  986. }
  987. //接口发送日期
  988. map1.put("sendTime",new Date());
  989. }
  990. return mapList;
  991. }
  992. @Override
  993. @Transactional(rollbackFor = {Exception.class})
  994. public int receiveOrderResult(Map<String, Object> map) throws Exception {
  995. int result=0;
  996. OmstrainOrder omstrainOrder = new OmstrainOrder();
  997. //获取运输订单号
  998. Object orderNumber = map.get("orderNumber");
  999. //获取备注-如果是异常情况,填写备注。
  1000. Object remark = map.get("remark");
  1001. if (remark!=null){
  1002. omstrainOrder.setAcceptRemark((String) remark);
  1003. }
  1004. //接收车皮号
  1005. Object wagonNo = map.get("wagonNo");
  1006. BigDecimal orderId = omstrainOrderMapper.selectOrderIdBywagonNoAndOrderNumber((String) orderNumber, (String) wagonNo);
  1007. if (orderId==null){
  1008. throw new Exception("提示回传车皮号与运输订单号不匹配");
  1009. }
  1010. //根据运输订单号查找id
  1011. omstrainOrder.setOrderId(orderId);
  1012. //接收是否收货(0为未收货,1为已收货)
  1013. Object receviceOrNot = map.get("receviceOrNot");
  1014. omstrainOrder.setIsAccept(DataChange.dataToBigDecimal(receviceOrNot));
  1015. //接收时间
  1016. String receviceTime2 =(String) map.get("receviceTime");
  1017. SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1018. try {
  1019. Date receviceTime = sdf2.parse(receviceTime2);
  1020. omstrainOrder.setIsAcceptTime(receviceTime);
  1021. } catch (ParseException e) {
  1022. e.printStackTrace();
  1023. }
  1024. result = omstrainOrderMapper.updateByPrimaryKeySelective(omstrainOrder);
  1025. return result;
  1026. }
  1027. }