AmsSaleOrderServiceImpl.java 49 KB

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