TmstruckWeightResultServiceImpl.java 26 KB

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