TmstruckWeightResultServiceImpl.java 34 KB

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