TmstruckWeightResultServiceImpl.java 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.feign.BmsTruckFeign;
  3. import com.steerinfo.dil.feign.OmsFeign;
  4. import com.steerinfo.dil.feign.TmstruckFeign;
  5. import com.steerinfo.dil.mapper.*;
  6. import com.steerinfo.dil.model.TmstrainWeightResult;
  7. import com.steerinfo.dil.model.TmstruckReceiveResult;
  8. import com.steerinfo.dil.model.TmstruckWeightResult;
  9. import com.steerinfo.dil.service.ITmstruckWeightResultService;
  10. import com.steerinfo.dil.util.DataChange;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import java.text.ParseException;
  15. import java.text.SimpleDateFormat;
  16. import java.util.*;
  17. import java.math.BigDecimal;
  18. /**
  19. * TmstruckWeightResult服务实现:
  20. * @author generator
  21. * @version 1.0-SNAPSHORT 2021-10-25 02:28
  22. * 类描述
  23. * 修订历史:
  24. * 日期:2021-10-25
  25. * 作者:generator
  26. * 参考:
  27. * 描述:TmstruckWeightResult服务实现
  28. * @see null
  29. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  30. */
  31. @Service(value = "tmstruckWeightResultService")
  32. public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultService {
  33. @Autowired
  34. KDWebServiceServiceImpl KDWebServiceServiceImpl;
  35. @Autowired
  36. TmstruckWeightResultMapper tmstruckWeightResultMapper;
  37. @Autowired
  38. UtilsServiceImpl utilsService;
  39. @Autowired
  40. UtilsMapper utilsMapper;
  41. @Autowired
  42. OmsFeign omsFeign;
  43. @Autowired
  44. TmstruckFeign tmstruckFeign;
  45. @Autowired
  46. TmstruckReceiveResultMapper tmstruckReceiveResultMapper;
  47. @Autowired
  48. TmstrainWeightResultMapper tmstrainWeightResultMapper;
  49. //属于采购订单的订单类型(先计毛后计皮)
  50. final private List<Integer> judgeOrderTypeList = Arrays.asList(5, 6, 7, 8, 9, 12, 15, 17, 18);
  51. //老厂区需要给金蝶回传的数据订单类型
  52. // final private List<Integer> judgeToKDTypeList = Arrays.asList(6, 17);
  53. /**
  54. * 接收达钢计量实绩信息
  55. * "orderNumber":"WYSDD2021091000000002",
  56. * "resultTareCalculateNumber":"1号汽车衡",
  57. * "resultCrossCalculateNumber":"1号汽车衡",
  58. * "resultTareWeight":40.00,
  59. * "resultCrossWeight":40.00,
  60. * "resultNetWeight":0,
  61. * "resultTareWeightTime":"2021-09-10 09:05:22",
  62. * "resultCrossWeightTime":"2021-09-10 09:05:22",
  63. * "resultPoundNo":"Bd123456780",
  64. * "materialId":40
  65. * @param mapList
  66. * @return
  67. */
  68. @Override
  69. @Transactional
  70. public String receiveTmsTruckWeightResultByDaGang(List<Map<String, Object>> mapList){
  71. //遍历列表
  72. StringBuilder sb = new StringBuilder();
  73. for (Map<String, Object> map : mapList) {
  74. sb.append(" ");
  75. String resultTareCalculateNumber = (String) map.get("resultTareCalculateNumber");
  76. //如果计量衡名字中含有铁专线 则代表是轨道衡 走轨道衡路线
  77. if(resultTareCalculateNumber.contains("铁专线")){
  78. sb.append(addTrainWeightResult(map));
  79. }else {
  80. //走汽车衡
  81. map.put("needCheckToKD", "1"); //老厂区专属变量 用于区分新、老厂区 老厂区需要给金蝶传输数据
  82. sb.append(addTruckWeightResult(map));
  83. }
  84. }
  85. return sb.toString();
  86. }
  87. /*
  88. * 接收达兴计量实绩
  89. * @Author TXF
  90. * @Date 2022/2/9 14:57
  91. * @param mapList
  92. * @return
  93. **/
  94. @Transactional
  95. @Override
  96. public String receiveTmsTruckWeightResultByDaXing(List<Map<String, Object>> mapList) {
  97. StringBuilder sb = new StringBuilder();
  98. //遍历列表
  99. for (Map<String, Object> map : mapList) {
  100. sb.append(addTruckWeightResult(map));
  101. }
  102. return sb.toString();
  103. }
  104. /**
  105. * 添加汽车衡计量实绩
  106. * @param map
  107. * @return
  108. */
  109. public String addTruckWeightResult(Map<String, Object> map) {
  110. //首先通过运输订单号查询订单类型
  111. Map<String, Object> oneMap = utilsMapper.getOrderTypeByOrderNumber((String) map.get("orderNumber")); //用于判断订单类型
  112. if(oneMap == null){
  113. return map.get("orderNumber") + "系统无此订单";
  114. }
  115. int orderType= DataChange.dataToBigDecimal(oneMap.get("orderType")).intValue();
  116. if(orderType == 11 || orderType == 15 || orderType == 16){
  117. return insertWeightResultBy11(map, oneMap);
  118. }
  119. //通过运输订单号查询计量实绩Id
  120. Map<String, Object> stringObjectMap = tmstruckWeightResultMapper.selectWeightIdByOrderId(map);
  121. if(stringObjectMap == null){
  122. //通过传来的运输订单号 与 物资ID查询计重实绩ID
  123. stringObjectMap = tmstruckWeightResultMapper.selectTotalIdByOrderNo(map);
  124. if(stringObjectMap == null){
  125. return map.get("orderNumber") + "没有此订单信息或物资信息(" + map.get("materialId") + ")错误";
  126. }
  127. }
  128. map.putAll(stringObjectMap);
  129. TmstruckWeightResult tmstruckWeightResult = null;
  130. try {
  131. tmstruckWeightResult = generateWeightResult(map);
  132. } catch (Exception e) {
  133. return e.getMessage();
  134. }
  135. //如果含有这个变量则代表是老区订单需要判断是否回传给金蝶
  136. if(map.get("needCheckToKD") != null){
  137. if(map.get("resultNetWeight") != null){
  138. Object resultCrossWeightTime = map.get("resultCrossWeightTime");
  139. if ( orderType == 6 && resultCrossWeightTime != null && !"".equals(resultCrossWeightTime)) {
  140. String resultNetWeight = String.valueOf(map.get("resultNetWeight")); //如果净重不为空 或者净重不为0
  141. if (!"null".equals(resultNetWeight) && !"".equals(resultNetWeight) && !"0".equals(resultNetWeight)) {
  142. //回传数据给金蝶方法
  143. sendMesToKD(map, orderType);
  144. }
  145. }
  146. }
  147. }
  148. tmstruckWeightResultMapper.updateByPrimaryKeySelective(tmstruckWeightResult);
  149. //如果订单类型是零星订单 需要查询一下是否还有未计量物资
  150. if(orderType == 12 || orderType == 13){
  151. dealWithLxOrder(map, stringObjectMap);
  152. }
  153. //推送数据
  154. utilsService.pushMesToWebsocket((String) oneMap.get("capacityNumber"), "计量");
  155. return map.get("orderNumber") + "成功";
  156. }
  157. /**
  158. * 生成汽运计量实体类
  159. * @Author TXF
  160. * @Date 2022/1/5 16:41
  161. * @param map
  162. * @return
  163. **/
  164. public TmstruckWeightResult generateWeightResult(Map<String, Object> map) throws Exception {
  165. TmstruckWeightResult tmstruckWeightResult = new TmstruckWeightResult();
  166. tmstruckWeightResult.setId(DataChange.dataToBigDecimal(map.get("weightTaskResultId")));
  167. int orderType = DataChange.dataToBigDecimal(map.get("orderTypee")).intValue();
  168. //磅单号
  169. tmstruckWeightResult.setResultPoundNo((String) map.get("resultPoundNo"));
  170. String resultCrossWeightTime = (String) map.get("resultCrossWeightTime");
  171. tmstruckWeightResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  172. //如果是采购订单 先计毛再计皮
  173. if(judgeOrderTypeList.contains(orderType)){
  174. //如果毛重数据为空 则是第一次计量为毛重 此时第一次计量时间放皮重时间里面
  175. if(resultCrossWeightTime == null || resultCrossWeightTime.length() == 0){
  176. addMaoWeightResult(tmstruckWeightResult, map);
  177. //更新订单中路段顺序号
  178. map.put("segmentSqe", map.get("grossSegmentSqe")); //毛重路段顺序
  179. utilsService.updateOrderLineSequence(map);
  180. }else {
  181. addWeightResult(tmstruckWeightResult, map); //添加计量实绩数据
  182. //更新订单中路段顺序号
  183. map.put("segmentSqe", map.get("tareSegmentSqe")); //皮重路段顺序
  184. utilsService.updateOrderLineSequence(map);
  185. String orderNumber = (String) map.get("orderNumber");
  186. //如果是采购订单 计皮后自动完成签收
  187. //查询是此订单是否已签收过
  188. Integer check = utilsMapper.checkoutReceipt(orderNumber);
  189. if(check == null){
  190. autoReceipt(orderNumber, map.get("resultTareWeightTime"));
  191. }
  192. }
  193. }
  194. else if(orderType == 10 || orderType == 20 || orderType == 14){
  195. //查询还有几条没有净重的实绩
  196. Integer resultNum = tmstruckWeightResultMapper.selectNoNetWeightResult((String) map.get("orderNumber"));
  197. if(resultNum == 2){
  198. //如果有两条则是走先计皮后计毛顺序
  199. addWeightResult(tmstruckWeightResult, map); //添加计量实绩数据 (正常添加对应皮毛重方法)
  200. if(resultCrossWeightTime == null || resultCrossWeightTime.length() == 0){
  201. map.put("segmentSqe", map.get("tareSegmentSqe")); //皮重路段顺序
  202. }else{
  203. map.put("segmentSqe", map.get("grossSegmentSqe")); //毛重路段顺序
  204. }
  205. utilsService.updateOrderLineSequence(map);
  206. }else{
  207. //只剩一条数据时则是计毛后计皮顺序
  208. //如果毛重数据为空 则是第一次计量为毛重 此时第一次计量时间放皮重时间里面
  209. if(resultCrossWeightTime == null || resultCrossWeightTime.length() == 0){
  210. addMaoWeightResult(tmstruckWeightResult, map);
  211. //更新订单中路段顺序号
  212. map.put("segmentSqe", map.get("grossSegmentSqe")); //毛重路段顺序
  213. utilsService.updateOrderLineSequence(map);
  214. }else {
  215. addWeightResult(tmstruckWeightResult, map); //添加计量实绩数据
  216. //更新订单中路段顺序号
  217. map.put("segmentSqe", map.get("tareSegmentSqe")); //皮重路段顺序
  218. utilsService.updateOrderLineSequence(map);
  219. String orderNumber = (String) map.get("orderNumber");
  220. //如果是采购订单 计皮后自动完成签收
  221. //查询是此订单是否已签收过
  222. Integer check = utilsMapper.checkoutReceipt(orderNumber);
  223. if(check == null){
  224. autoReceipt(orderNumber, map.get("resultTareWeightTime"));
  225. }
  226. if(orderType == 20){
  227. //此订单类型比较特殊 如果订单类型为20则需要回传金蝶
  228. sendMesToKD(map, orderType);
  229. }
  230. }
  231. }
  232. }
  233. else{
  234. addWeightResult(tmstruckWeightResult, map); //添加计量实绩数据
  235. // 更新订单中路段顺序号,如果毛重时间为空则为计皮:也就是销售第一次计皮,反之有毛重时间则为计毛
  236. if(resultCrossWeightTime == null || resultCrossWeightTime.length() == 0){
  237. map.put("segmentSqe", map.get("tareSegmentSqe")); //皮重路段顺序
  238. }else{
  239. map.put("segmentSqe", map.get("grossSegmentSqe")); //毛重路段顺序
  240. }
  241. if(orderType == 1){
  242. //如果是钢材订单,获取下一个还没计量的实绩 将毛重数据作为下一个计量实绩的皮重
  243. //并且是第二次传入重量才执行
  244. List<Map<String, Object>> steelMapList = tmstruckWeightResultMapper.getNoNetWeightResultId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  245. if(steelMapList.size() >= 2){ //当前更新还未提交所以如果是拼装需要查询两个出来 以第二个为准
  246. Map<String, Object> steelMap = steelMapList.get(1);
  247. Object resultNetWeight = map.get("resultNetWeight");
  248. if(resultNetWeight != null && !"".equals(resultNetWeight)){
  249. updateSteelAssemble(map, steelMap); //更新下一拼实绩
  250. map.put("segmentSqe", steelMap.get("tareSegmentSqe")); // 修改路段顺序号直接到下一皮重路段顺序
  251. }
  252. }
  253. }
  254. utilsService.updateOrderLineSequence(map);
  255. }
  256. return tmstruckWeightResult;
  257. }
  258. /**
  259. * 添加第一次为毛重数据的计量实绩
  260. * @param tmstruckWeightResult
  261. * @param map
  262. */
  263. public void addMaoWeightResult(TmstruckWeightResult tmstruckWeightResult, Map<String, Object> map) throws Exception{
  264. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  265. //设置毛重时间
  266. String firstTime = (String) map.get("resultTareWeightTime");
  267. tmstruckWeightResult.setResultGrossWeightTime(sdf.parse(firstTime));
  268. //添加毛重汽车衡
  269. Integer tareId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultTareCalculateNumber"));
  270. if(tareId == null){
  271. throw new Exception("没有此计量衡:" + map.get("resultTareCalculateNumber"));
  272. }
  273. tmstruckWeightResult.setResultGrossPlaceId(new BigDecimal(tareId));
  274. //设置毛重
  275. BigDecimal resultTareWeight = DataChange.dataToBigDecimal(map.get("resultTareWeight"));
  276. tmstruckWeightResult.setResultGrossWeight(resultTareWeight);
  277. tmstruckWeightResult.setInsertTime(new Date());
  278. tmstruckWeightResult.setInsertUsername("admin");
  279. }
  280. /**
  281. * 添加计量实绩添加数据
  282. * @param tmstruckWeightResult
  283. * @param map
  284. * @return
  285. */
  286. public void addWeightResult(TmstruckWeightResult tmstruckWeightResult, Map<String, Object> map) throws Exception{
  287. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  288. //设置皮重汽车衡
  289. String resultTareCalculateNumber = (String) map.get("resultTareCalculateNumber");
  290. if(resultTareCalculateNumber != null){
  291. if(!"".equals(resultTareCalculateNumber)){
  292. Integer tareId = tmstruckWeightResultMapper.selectTruckCalculateId(resultTareCalculateNumber);
  293. if(tareId == null){
  294. throw new Exception("没有此皮重汽车衡:" + map.get("resultTareCalculateNumber"));
  295. }
  296. tmstruckWeightResult.setResultTarePlaceId(new BigDecimal(tareId));
  297. }
  298. }
  299. //设置毛重汽车衡
  300. String resultCrossCalculateNumber = (String) map.get("resultCrossCalculateNumber");
  301. if(resultCrossCalculateNumber != null){
  302. if(!"".equals(resultCrossCalculateNumber)){
  303. Integer crossId = tmstruckWeightResultMapper.selectTruckCalculateId(resultCrossCalculateNumber);
  304. if(crossId == null){
  305. throw new Exception("没有此毛重汽车衡:" + map.get("resultCrossCalculateNumber"));
  306. }
  307. tmstruckWeightResult.setResultGrossPlaceId(new BigDecimal(crossId));
  308. }
  309. }
  310. //毛重
  311. if(map.get("resultCrossWeight") != null){
  312. String resultCrossWeight = String.valueOf(map.get("resultCrossWeight"));
  313. if(!"".equals(resultCrossWeight))
  314. tmstruckWeightResult.setResultGrossWeight(DataChange.dataToBigDecimal(resultCrossWeight));
  315. }
  316. //皮重
  317. if(map.get("resultTareWeight") != null){
  318. String resultTareWeight = String.valueOf(map.get("resultTareWeight"));
  319. if(!"".equals(resultTareWeight))
  320. tmstruckWeightResult.setResultTareWeight(DataChange.dataToBigDecimal(resultTareWeight));
  321. }
  322. //净重
  323. if(map.get("resultNetWeight") != null){
  324. String resultNetWeight = String.valueOf(map.get("resultNetWeight"));
  325. if(!"".equals(resultNetWeight)){
  326. tmstruckWeightResult.setResultNetWeight(DataChange.dataToBigDecimal(resultNetWeight));
  327. }
  328. }
  329. //设置皮重时间
  330. if(map.get("resultTareWeightTime") != null){
  331. String resultTareWeightTime = (String) map.get("resultTareWeightTime");
  332. if(!"".equals(resultTareWeightTime)){
  333. tmstruckWeightResult.setResultTareWeightTime(sdf.parse(resultTareWeightTime));
  334. }
  335. }
  336. //设置毛重时间
  337. if(map.get("resultCrossWeightTime") != null){
  338. String resultGrossWeightTime = (String) map.get("resultCrossWeightTime");
  339. if(!"".equals(resultGrossWeightTime)){
  340. tmstruckWeightResult.setResultGrossWeightTime(sdf.parse(resultGrossWeightTime));
  341. }
  342. }
  343. tmstruckWeightResult.setUpdateTime(new Date());
  344. tmstruckWeightResult.setUpdateUsername("admin");
  345. }
  346. /**
  347. * 自动签收
  348. * @return
  349. */
  350. public void autoReceipt(String orderNumber, Object tareWeightTime){
  351. TmstruckReceiveResult tmstruckReceiveResult = new TmstruckReceiveResult();
  352. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  353. //通过运输订单号查询总实绩ID
  354. BigDecimal resultTotalId = utilsMapper.getTotalIdByOrderNumber(orderNumber);
  355. tmstruckReceiveResult.setResultTotalId(resultTotalId);
  356. tmstruckReceiveResult.setStatus(new BigDecimal(1));
  357. tmstruckReceiveResult.setInsertUsername("admin");
  358. Date receiptTime;
  359. try {
  360. //取皮重时间为收货时间
  361. receiptTime = sdf.parse((String) tareWeightTime);
  362. } catch (ParseException e) {
  363. receiptTime = new Date();
  364. System.out.println(e.getMessage());
  365. }
  366. tmstruckReceiveResult.setInsertTime(receiptTime);
  367. tmstruckReceiveResult.setUpdateTime(receiptTime);
  368. int i = tmstruckReceiveResultMapper.updateByTotalResultId(tmstruckReceiveResult);
  369. if(i == 1) {
  370. System.out.println(orderNumber + "收货成功");
  371. }else {
  372. System.out.println(orderNumber + "收货失败");
  373. }
  374. }
  375. /**
  376. * 纯内转订单类型
  377. * @Author TXF
  378. * @Date 2022/2/18 9:55
  379. * @param map
  380. * @return
  381. **/
  382. public String insertWeightResultBy11(Map<String, Object> map, Map<String, Object> oneMap){
  383. TmstruckWeightResult tmstruckWeightResult = new TmstruckWeightResult();
  384. tmstruckWeightResult.setResultPoundNo((String) map.get("resultPoundNo"));
  385. tmstruckWeightResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  386. int sqe = DataChange.dataToBigDecimal(oneMap.get("Sqe")).intValue(); //获取订单路段顺序号
  387. sqe = sqe + 1;
  388. Object resultNetWeight = map.get("resultNetWeight");
  389. if(resultNetWeight != null && !"".equals((String) resultNetWeight)){
  390. //判断是否有卸货实绩已经卸过货 如果有卸货实绩 则结束订单
  391. Integer resultId = utilsMapper.getUnloadResultByTotalId(DataChange.dataToBigDecimal(oneMap.get("totalId")));
  392. if(resultId != null){
  393. int orderIds = DataChange.dataToBigDecimal(oneMap.get("orderIds")).intValue();
  394. omsFeign.closeInwardOrder(orderIds, sqe, (String) resultNetWeight);
  395. }else {
  396. Map<String, Object> threeMap = new HashMap<>(); //用于更新路段顺序号
  397. threeMap.put("orderLineSequence", sqe);
  398. threeMap.put("orderNumber", map.get("orderNumber"));
  399. utilsMapper.updateLineSeqByOrderIdOrNum2(threeMap); //更新订单路段顺序号
  400. }
  401. }else {
  402. Map<String, Object> threeMap = new HashMap<>(); //用于更新路段顺序号
  403. threeMap.put("orderLineSequence", sqe);
  404. threeMap.put("orderNumber", map.get("orderNumber"));
  405. utilsMapper.updateLineSeqByOrderIdOrNum2(threeMap); //更新订单路段顺序号
  406. }
  407. //首先查询这个订单号的这个物资ID是否有计量实绩
  408. Map<String, Object> twoMap = tmstruckWeightResultMapper.selectResultIdByOrderNoAndMaterialId(map); //判断这个物资是否已经计量过
  409. Object resultCrossWeightTime = map.get("resultCrossWeightTime");
  410. if(twoMap == null){//如果查出来为空,则进行新增操作
  411. tmstruckWeightResult.setId(tmstruckWeightResultMapper.selectMaxId()); //新增主键
  412. tmstruckWeightResult.setResultTotalId(DataChange.dataToBigDecimal(oneMap.get("totalId"))); //新增总实绩ID
  413. if(resultCrossWeightTime == null || "".equals(String.valueOf(resultCrossWeightTime))){//只有一条数据的情况
  414. tmstruckWeightResult.setTareSegmentSqe(new BigDecimal(sqe));
  415. }
  416. else {
  417. tmstruckWeightResult.setTareSegmentSqe(new BigDecimal(sqe));
  418. tmstruckWeightResult.setGrossSegmentSqe(new BigDecimal(sqe));
  419. }
  420. try {
  421. addWeightResult(tmstruckWeightResult, map);
  422. } catch (Exception e) {
  423. return e.getMessage();
  424. }
  425. tmstruckWeightResultMapper.insertSelective(tmstruckWeightResult); //新增计量实绩
  426. }else {
  427. //如果不为空则证明进行过至少一次计量
  428. tmstruckWeightResult.setId(DataChange.dataToBigDecimal(twoMap.get("weightTaskResultId")));
  429. //取出计量数据与传进来的毛皮数据进行对比
  430. BigDecimal inTareWeight = DataChange.dataToBigDecimal(twoMap.get("resultTareWeight"));
  431. if(inTareWeight.compareTo(DataChange.dataToBigDecimal(map.get("resultTareWeight"))) > 0){
  432. //如果取出来的皮重 大于 传进来的皮重 则需要调换路段顺序号
  433. tmstruckWeightResult.setGrossSegmentSqe(DataChange.dataToBigDecimal(twoMap.get("tareSegmentSqe")));
  434. tmstruckWeightResult.setTareSegmentSqe(new BigDecimal(sqe));
  435. }
  436. try {
  437. addWeightResult(tmstruckWeightResult, map);
  438. } catch (Exception e) {
  439. return e.getMessage();
  440. }
  441. tmstruckWeightResultMapper.updateByPrimaryKeySelective(tmstruckWeightResult);
  442. }
  443. //推送数据
  444. utilsService.pushMesToWebsocket((String) oneMap.get("capacityNumber"), "计量");
  445. return map.get("orderNumber") + "成功";
  446. }
  447. /**
  448. * 处理零星订单多拼方法
  449. * @Author TXF
  450. * @Date 2022/3/15 18:37
  451. * @param map
  452. * @param stringObjectMap
  453. * @return
  454. **/
  455. public void dealWithLxOrder(Map<String, Object> map, Map<String, Object> stringObjectMap){
  456. if(map.get("resultNetWeight") != null){
  457. String resultNetWeight = String.valueOf(map.get("resultNetWeight"));
  458. if(! ("".equals(resultNetWeight) || "null".equals(resultNetWeight))){
  459. //查询是否还有物资如果为空则为已经计量完成
  460. Integer materialId = utilsMapper.getNextMaterialId(DataChange.dataToBigDecimal(stringObjectMap.get("orderId")));
  461. if(materialId != null){
  462. stringObjectMap.put("materialId", materialId);
  463. stringObjectMap.put("asd", 1);
  464. Map<String, Object> returnMap = null;
  465. try {
  466. returnMap = tmstruckFeign.sendMeasureCommission(stringObjectMap);
  467. String code = (String) returnMap.get("code");
  468. if(!"200".equals(code)){
  469. System.out.println(returnMap.get("data"));
  470. }
  471. } catch (Exception e) {
  472. System.out.println(e.getMessage());
  473. }
  474. }
  475. }
  476. }
  477. }
  478. /**
  479. * 修改拼装钢材物资
  480. * @param map
  481. * @param steelMap
  482. */
  483. public void updateSteelAssemble(Map<String, Object> map, Map<String, Object> steelMap) throws Exception{
  484. //更新实绩
  485. TmstruckWeightResult steelWightModel = new TmstruckWeightResult();
  486. steelWightModel.setId(DataChange.dataToBigDecimal(steelMap.get("weightTaskResultId"))); //查询出来的主键
  487. steelMap.put("resultTareCalculateNumber", map.get("resultCrossCalculateNumber")); //皮重汽车衡即为毛重汽车衡
  488. steelMap.put("resultTareWeight", map.get("resultCrossWeight"));//皮重即为毛重
  489. steelMap.put("resultTareWeightTime", map.get("resultCrossWeightTime"));//皮重时间即为毛重时间
  490. addWeightResult(steelWightModel, steelMap);
  491. tmstruckWeightResultMapper.updateByPrimaryKeySelective(steelWightModel);
  492. }
  493. /*======================================================================================================================================================================
  494. ============================================================================火运火运火运==================================================================================
  495. ======================================================================================================================================================================*/
  496. /**
  497. * 添加火车计量实绩
  498. * @param map
  499. * @return
  500. */
  501. public String addTrainWeightResult(Map<String, Object> map){
  502. //通过采购订单号和车皮号 查询火运总实绩ID和物资ID
  503. Map<String, Object> totalIdAndMateMap = tmstrainWeightResultMapper.getResultIdByPurNoAndWagonNo(map);
  504. if(totalIdAndMateMap == null){
  505. return "采购订单号"+ map.get("purchaseOrderNo")+"或车皮信息"+ map.get("orderNumber")+"错误";
  506. }
  507. if(totalIdAndMateMap.get("resultTotalId") == null){
  508. return "采购订单号"+ map.get("purchaseOrderNo")+"或车皮信息"+ map.get("orderNumber")+"错误";
  509. }
  510. map.putAll(totalIdAndMateMap);
  511. TmstrainWeightResult tmstrainWeightResult = null;
  512. try {
  513. tmstrainWeightResult = generateTrainWeightResult(map);
  514. } catch (Exception e) {
  515. return e.getMessage(); //捕获异常信息
  516. }
  517. tmstrainWeightResultMapper.insertSelective(tmstrainWeightResult);
  518. return map.get("orderNumber") + "成功";
  519. }
  520. /**
  521. * 生成火运计量实体
  522. * @param map
  523. * @return
  524. */
  525. public TmstrainWeightResult generateTrainWeightResult(Map<String, Object> map) throws Exception {
  526. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  527. TmstrainWeightResult tmstrainWeightResult = new TmstrainWeightResult();
  528. tmstrainWeightResult.setResultId(tmstrainWeightResultMapper.selectMaxId());
  529. //磅单号
  530. tmstrainWeightResult.setResultPoundNo((String) map.get("resultPoundNo"));
  531. //添加火运总实绩ID
  532. tmstrainWeightResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  533. //设置物资ID
  534. tmstrainWeightResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  535. //如果没有计毛时间 则是第一次计量
  536. String resultCrossWeightTime = (String) map.get("resultCrossWeightTime");
  537. if(resultCrossWeightTime == null || resultCrossWeightTime.length() == 0){
  538. //设置毛重时间
  539. String firstTime = (String) map.get("resultTareWeightTime");
  540. tmstrainWeightResult.setResultGrossWeightTime(sdf.parse(firstTime));
  541. //添加毛重轨道衡
  542. Integer tareId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultTareCalculateNumber"));
  543. if(tareId == null){
  544. throw new Exception("没有此计量衡:" + map.get("resultTareCalculateNumber"));
  545. }
  546. tmstrainWeightResult.setResultGrossPlaceId(new BigDecimal(tareId));
  547. //设置毛重
  548. BigDecimal resultTareWeight = DataChange.dataToBigDecimal(map.get("resultTareWeight"));
  549. tmstrainWeightResult.setResultGrossWeight(resultTareWeight);
  550. tmstrainWeightResult.setInsertTime(new Date());
  551. tmstrainWeightResult.setInsertUsername("admin");
  552. }else {
  553. //设置皮重轨道衡
  554. Integer tareId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultTareCalculateNumber"));
  555. if(tareId == null){
  556. throw new Exception("没有此计量衡:" + map.get("resultTareCalculateNumber"));
  557. }
  558. tmstrainWeightResult.setResultTarePlaceId(new BigDecimal(tareId));
  559. //设置毛重轨道衡
  560. Integer crossId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultCrossCalculateNumber"));
  561. if(crossId == null){
  562. throw new Exception("没有此计量衡:" + map.get("resultCrossCalculateNumber"));
  563. }
  564. tmstrainWeightResult.setResultGrossPlaceId(new BigDecimal(crossId));
  565. //毛重
  566. BigDecimal resultCrossWeight = DataChange.dataToBigDecimal(map.get("resultCrossWeight"));
  567. tmstrainWeightResult.setResultGrossWeight(resultCrossWeight);
  568. //皮重
  569. BigDecimal resultTareWeight = DataChange.dataToBigDecimal(map.get("resultTareWeight"));
  570. tmstrainWeightResult.setResultTareWeight(resultTareWeight);
  571. //净重
  572. tmstrainWeightResult.setResultNetWeight(DataChange.dataToBigDecimal(map.get("resultNetWeight")));
  573. //设置皮重时间
  574. String resultTareWeightTime = (String) map.get("resultTareWeightTime");
  575. tmstrainWeightResult.setResultTareWeightTime(sdf.parse(resultTareWeightTime));
  576. //设置毛重时间
  577. String resultGrossWeightTime = (String) map.get("resultCrossWeightTime");
  578. tmstrainWeightResult.setResultGrossWeightTime(sdf.parse(resultGrossWeightTime));
  579. tmstrainWeightResult.setUpdateTime(new Date());
  580. tmstrainWeightResult.setUpdateUsername("admin");
  581. }
  582. return tmstrainWeightResult;
  583. }
  584. /**
  585. * 回传数据给金蝶方法
  586. * @Author TXF
  587. * @Date 2022/2/9 15:46
  588. * @param
  589. * @return
  590. **/
  591. public void sendMesToKD(Map<String, Object> map, Integer orderType){
  592. String resultTareCalculateNumber = String.valueOf(map.get("resultTareCalculateNumber"));
  593. if(! resultTareCalculateNumber.contains("精煤")){ //如果不是精煤称的则不回传金蝶 或者没有皮重称
  594. return;
  595. }
  596. String orderNumber = (String) map.get("orderNumber");
  597. Map<String, Object> mesMap = new HashMap<>();
  598. switch (orderType){
  599. case 6:
  600. //查询订单信息
  601. mesMap = tmstruckWeightResultMapper.getPurOrderMesToKD(orderNumber);
  602. break;
  603. case 20:
  604. mesMap = tmstruckWeightResultMapper.get20PurOrderMesToKD(orderNumber);
  605. }
  606. //将map数据全放进mesMap中
  607. map.putAll(mesMap);
  608. //访问金蝶接口
  609. KDWebServiceServiceImpl.sendMesToKD(map);
  610. }
  611. /**
  612. * 计量联动删除方法
  613. * @param mapList
  614. * @return
  615. */
  616. public String linkageDeleteTransportOrder(List<Map<String, Object>> mapList) {
  617. //联动删除
  618. for (Map<String, Object> map : mapList) {
  619. String orderNumber = (String) map.get("orderNumber");
  620. tmstruckWeightResultMapper.linkageDeleteTransportOrder(orderNumber);
  621. }
  622. return "success";
  623. }
  624. }