TmstruckWeightResultServiceImpl.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.TmstrainWeightResultMapper;
  3. import com.steerinfo.dil.mapper.TmstruckReceiptResultMapper;
  4. import com.steerinfo.dil.mapper.UtilsMapper;
  5. import com.steerinfo.dil.model.TmstrainWeightResult;
  6. import com.steerinfo.dil.model.TmstruckReceiptResult;
  7. import com.steerinfo.dil.model.TmstruckWeightResult;
  8. import com.steerinfo.dil.mapper.TmstruckWeightResultMapper;
  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.SimpleDateFormat;
  15. import java.util.Date;
  16. import java.math.BigDecimal;
  17. import java.util.List;
  18. import java.util.Map;
  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. TmstruckWeightResultMapper tmstruckWeightResultMapper;
  36. @Autowired
  37. UtilsServiceImpl utilsService;
  38. @Autowired
  39. UtilsMapper utilsMapper;
  40. @Autowired
  41. TmstruckReceiptResultMapper tmstruckReceiptResultMapper;
  42. @Autowired
  43. TmstrainWeightResultMapper tmstrainWeightResultMapper;
  44. /**
  45. * 接收计量实绩信息
  46. * "orderNumber":"WYSDD2021091000000002",
  47. * "resultTareCalculateNumber":"1号汽车衡",
  48. * "resultCrossCalculateNumber":"1号汽车衡",
  49. * "resultTareWeight":40.00,
  50. * "resultCrossWeight":40.00,
  51. * "resultNetWeight":0,
  52. * "resultTareWeightTime":"2021-09-10 09:05:22",
  53. * "resultCrossWeightTime":"2021-09-10 09:05:22",
  54. * "resultPoundNo":"Bd123456780",
  55. * "materialId":40
  56. * @param mapList
  57. * @return
  58. */
  59. @Override
  60. @Transactional
  61. public String receiveTmsTruckWeightResult(List<Map<String, Object>> mapList){
  62. //遍历列表
  63. StringBuilder sb = new StringBuilder();
  64. for (Map<String, Object> map : mapList) {
  65. sb.append(" ");
  66. String resultTareCalculateNumber = (String) map.get("resultTareCalculateNumber");
  67. //如果计量衡名字中含有铁专线 则代表是轨道衡 走轨道衡路线
  68. if(resultTareCalculateNumber.contains("铁专线")){
  69. sb.append(addTrainWeightResult(map));
  70. }else {
  71. //走汽车衡
  72. sb.append(addTruckWeightResult(map));
  73. }
  74. }
  75. return sb.toString();
  76. }
  77. /**
  78. * 添加汽车衡计量实绩
  79. * @param map
  80. * @return
  81. */
  82. public String addTruckWeightResult(Map<String, Object> map) {
  83. //通过运输订单号查询计量实绩Id
  84. Map<String, Object> stringObjectMap = tmstruckWeightResultMapper.selectWeightIdByOrderId(map);
  85. if(stringObjectMap == null){
  86. //如果都有净重了 通过传来的运输订单号 与 物资ID查询计重实绩ID
  87. stringObjectMap = tmstruckWeightResultMapper.selectTotalIdByOrderNo(map);
  88. if(stringObjectMap == null){
  89. return map.get("orderNumber") + "没有此订单信息或物资信息(" + map.get("materialId") + ")错误";
  90. }
  91. }
  92. map.putAll(stringObjectMap);
  93. TmstruckWeightResult tmstruckWeightResult = null;
  94. try {
  95. tmstruckWeightResult = generateWeightResult(map);
  96. } catch (Exception e) {
  97. return e.getMessage();
  98. }
  99. tmstruckWeightResultMapper.updateByPrimaryKeySelective(tmstruckWeightResult);
  100. //推送数据
  101. utilsService.pushMesToWebsocket((String) stringObjectMap.get("capacityNumber"), "计量");
  102. return map.get("orderNumber") + "成功";
  103. }
  104. /**
  105. * 生成汽运计量实体类
  106. * @param map
  107. * @return
  108. */
  109. public TmstruckWeightResult generateWeightResult(Map<String, Object> map) throws Exception {
  110. TmstruckWeightResult tmstruckWeightResult = new TmstruckWeightResult();
  111. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  112. tmstruckWeightResult.setId(DataChange.dataToBigDecimal(map.get("weightTaskResultId")));
  113. BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderTypee"));
  114. //磅单号
  115. tmstruckWeightResult.setResultPoundNo((String) map.get("resultPoundNo"));
  116. String resultCrossWeightTime = (String) map.get("resultCrossWeightTime");
  117. tmstruckWeightResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  118. //如果是采购订单 先计毛再计皮
  119. if("5678".contains(orderType.toString()) || orderType.intValue() == 12 || orderType.intValue() == 14){
  120. //如果毛重数据为空 则是第一次计量为毛重 此时第一次计量时间放皮重时间里面
  121. if(resultCrossWeightTime == null || resultCrossWeightTime.length() == 0){
  122. //设置毛重时间
  123. String firstTime = (String) map.get("resultTareWeightTime");
  124. tmstruckWeightResult.setResultGrossWeightTime(sdf.parse(firstTime));
  125. //添加毛重汽车衡
  126. Integer tareId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultTareCalculateNumber"));
  127. if(tareId == null){
  128. throw new Exception("没有此计量衡:" + map.get("resultTareCalculateNumber"));
  129. }
  130. tmstruckWeightResult.setResultGrossPlaceId(new BigDecimal(tareId));
  131. //设置毛重
  132. BigDecimal resultTareWeight = DataChange.dataToBigDecimal(map.get("resultTareWeight"));
  133. tmstruckWeightResult.setResultGrossWeight(resultTareWeight);
  134. tmstruckWeightResult.setInsertTime(new Date());
  135. tmstruckWeightResult.setInsertUsername("admin");
  136. //更新订单中路段顺序号
  137. map.put("segmentSqe", map.get("grossSegmentSqe")); //毛重路段顺序
  138. utilsService.updateOrderLineSequence(map);
  139. }else {
  140. addWeightResult(tmstruckWeightResult, map); //添加计量实绩数据
  141. //更新订单中路段顺序号
  142. map.put("segmentSqe", map.get("tareSegmentSqe")); //皮重路段顺序
  143. utilsService.updateOrderLineSequence(map);
  144. String orderNumber = (String) map.get("orderNumber");
  145. //如果是采购订单 计皮后自动完成签收
  146. //查询是此订单是否已签收过
  147. Integer check = utilsMapper.checkoutReceipt(orderNumber);
  148. if(check == null){
  149. autoReceipt(orderNumber);
  150. }
  151. }
  152. }else{
  153. addWeightResult(tmstruckWeightResult, map); //添加计量实绩数据
  154. // 更新订单中路段顺序号,如果毛重时间为空则为计皮:也就是销售第一次计皮,反之有毛重时间则为计毛
  155. if(resultCrossWeightTime == null || resultCrossWeightTime.length() == 0){
  156. map.put("segmentSqe", map.get("tareSegmentSqe")); //皮重路段顺序
  157. }else{
  158. map.put("segmentSqe", map.get("grossSegmentSqe")); //毛重路段顺序
  159. }
  160. utilsService.updateOrderLineSequence(map);
  161. }
  162. return tmstruckWeightResult;
  163. }
  164. /**
  165. * 添加计量实绩添加数据
  166. * @param tmstruckWeightResult
  167. * @param map
  168. * @return
  169. */
  170. public void addWeightResult(TmstruckWeightResult tmstruckWeightResult, Map<String, Object> map) throws Exception{
  171. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  172. //设置皮重汽车衡
  173. String resultTareCalculateNumber = (String) map.get("resultTareCalculateNumber");
  174. if(resultTareCalculateNumber != null){
  175. if(!"".equals(resultTareCalculateNumber)){
  176. Integer tareId = tmstruckWeightResultMapper.selectTruckCalculateId(resultTareCalculateNumber);
  177. if(tareId == null){
  178. throw new Exception("没有此皮重汽车衡:" + map.get("resultTareCalculateNumber"));
  179. }
  180. tmstruckWeightResult.setResultTarePlaceId(new BigDecimal(tareId));
  181. }
  182. }
  183. //设置毛重汽车衡
  184. String resultCrossCalculateNumber = (String) map.get("resultCrossCalculateNumber");
  185. if(resultCrossCalculateNumber != null){
  186. if(!"".equals(resultCrossCalculateNumber)){
  187. Integer crossId = tmstruckWeightResultMapper.selectTruckCalculateId(resultCrossCalculateNumber);
  188. if(crossId == null){
  189. throw new Exception("没有此毛重汽车衡:" + map.get("resultCrossCalculateNumber"));
  190. }
  191. tmstruckWeightResult.setResultGrossPlaceId(new BigDecimal(crossId));
  192. }
  193. }
  194. //毛重
  195. if(map.get("resultCrossWeight") != null){
  196. tmstruckWeightResult.setResultGrossWeight(DataChange.dataToBigDecimal(map.get("resultCrossWeight")));
  197. }
  198. //皮重
  199. if(map.get("resultTareWeight") != null){
  200. tmstruckWeightResult.setResultTareWeight(DataChange.dataToBigDecimal(map.get("resultTareWeight")));
  201. }
  202. //净重
  203. if(map.get("resultNetWeight") != null){
  204. tmstruckWeightResult.setResultNetWeight(DataChange.dataToBigDecimal(map.get("resultNetWeight")));
  205. }
  206. //设置皮重时间
  207. if(map.get("resultTareWeightTime") != null){
  208. String resultTareWeightTime = (String) map.get("resultTareWeightTime");
  209. if(!"".equals(resultTareWeightTime)){
  210. tmstruckWeightResult.setResultTareWeightTime(sdf.parse(resultTareWeightTime));
  211. }
  212. }
  213. //设置毛重时间
  214. if(map.get("resultCrossWeightTime") != null){
  215. String resultGrossWeightTime = (String) map.get("resultCrossWeightTime");
  216. if(!"".equals(resultGrossWeightTime)){
  217. tmstruckWeightResult.setResultGrossWeightTime(sdf.parse(resultGrossWeightTime));
  218. }
  219. }
  220. tmstruckWeightResult.setUpdateTime(new Date());
  221. tmstruckWeightResult.setUpdateUsername("admin");
  222. }
  223. /**
  224. * 自动签收
  225. * @return
  226. */
  227. public void autoReceipt(String orderNumber){
  228. TmstruckReceiptResult tmstruckReceiptResult = new TmstruckReceiptResult();
  229. //通过运输订单号查询总实绩ID
  230. BigDecimal resultTotalId = utilsMapper.getTotalIdByOrderNumber(orderNumber);
  231. tmstruckReceiptResult.setResultTotalId(resultTotalId);
  232. tmstruckReceiptResult.setStatus(new BigDecimal(1));
  233. tmstruckReceiptResult.setInsertUsername("admin");
  234. tmstruckReceiptResult.setInsertTime(new Date());
  235. tmstruckReceiptResultMapper.updateByTotalResultId(tmstruckReceiptResult);
  236. System.out.println(orderNumber + "收货成功");
  237. }
  238. /**
  239. * 添加火车计量实绩
  240. * @param map
  241. * @return
  242. */
  243. public String addTrainWeightResult(Map<String, Object> map){
  244. //通过采购订单号和车皮号 查询火运总实绩ID和物资ID
  245. Map<String, Object> totalIdAndMateMap = tmstrainWeightResultMapper.getResultIdByPurNoAndWagonNo(map);
  246. if(totalIdAndMateMap == null){
  247. return "采购订单号"+ map.get("purchaseOrderNo")+"或车皮信息"+ map.get("orderNumber")+"错误";
  248. }
  249. if(totalIdAndMateMap.get("resultTotalId") == null){
  250. return "采购订单号"+ map.get("purchaseOrderNo")+"或车皮信息"+ map.get("orderNumber")+"错误";
  251. }
  252. map.putAll(totalIdAndMateMap);
  253. TmstrainWeightResult tmstrainWeightResult = null;
  254. try {
  255. tmstrainWeightResult = generateTrainWeightResult(map);
  256. } catch (Exception e) {
  257. return e.getMessage(); //捕获异常信息
  258. }
  259. tmstrainWeightResultMapper.insertSelective(tmstrainWeightResult);
  260. return map.get("orderNumber") + "成功";
  261. }
  262. /**
  263. * 生成火运计量实体
  264. * @param map
  265. * @return
  266. */
  267. public TmstrainWeightResult generateTrainWeightResult(Map<String, Object> map) throws Exception {
  268. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  269. TmstrainWeightResult tmstrainWeightResult = new TmstrainWeightResult();
  270. tmstrainWeightResult.setResultId(tmstrainWeightResultMapper.selectMaxId());
  271. //磅单号
  272. tmstrainWeightResult.setResultPoundNo((String) map.get("resultPoundNo"));
  273. //添加火运总实绩ID
  274. tmstrainWeightResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  275. //设置物资ID
  276. tmstrainWeightResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  277. //如果没有计毛时间 则是第一次计量
  278. String resultCrossWeightTime = (String) map.get("resultCrossWeightTime");
  279. if(resultCrossWeightTime == null || resultCrossWeightTime.length() == 0){
  280. //设置毛重时间
  281. String firstTime = (String) map.get("resultTareWeightTime");
  282. tmstrainWeightResult.setResultGrossWeightTime(sdf.parse(firstTime));
  283. //添加毛重汽车衡
  284. Integer tareId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultTareCalculateNumber"));
  285. if(tareId == null){
  286. throw new Exception("没有此计量衡:" + map.get("resultTareCalculateNumber"));
  287. }
  288. tmstrainWeightResult.setResultGrossPlaceId(new BigDecimal(tareId));
  289. //设置毛重
  290. BigDecimal resultTareWeight = DataChange.dataToBigDecimal(map.get("resultTareWeight"));
  291. tmstrainWeightResult.setResultGrossWeight(resultTareWeight);
  292. tmstrainWeightResult.setInsertTime(new Date());
  293. tmstrainWeightResult.setInsertUsername("admin");
  294. }else {
  295. //设置皮重汽车衡
  296. Integer tareId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultTareCalculateNumber"));
  297. if(tareId == null){
  298. throw new Exception("没有此计量衡:" + map.get("resultTareCalculateNumber"));
  299. }
  300. tmstrainWeightResult.setResultTarePlaceId(new BigDecimal(tareId));
  301. //设置毛重汽车衡
  302. Integer crossId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultCrossCalculateNumber"));
  303. if(crossId == null){
  304. throw new Exception("没有此计量衡:" + map.get("resultCrossCalculateNumber"));
  305. }
  306. tmstrainWeightResult.setResultGrossPlaceId(new BigDecimal(crossId));
  307. //毛重
  308. BigDecimal resultCrossWeight = DataChange.dataToBigDecimal(map.get("resultCrossWeight"));
  309. tmstrainWeightResult.setResultGrossWeight(resultCrossWeight);
  310. //皮重
  311. BigDecimal resultTareWeight = DataChange.dataToBigDecimal(map.get("resultTareWeight"));
  312. tmstrainWeightResult.setResultTareWeight(resultTareWeight);
  313. //净重
  314. tmstrainWeightResult.setResultNetWeight(DataChange.dataToBigDecimal(map.get("resultNetWeight")));
  315. //设置皮重时间
  316. String resultTareWeightTime = (String) map.get("resultTareWeightTime");
  317. tmstrainWeightResult.setResultTareWeightTime(sdf.parse(resultTareWeightTime));
  318. //设置毛重时间
  319. String resultGrossWeightTime = (String) map.get("resultCrossWeightTime");
  320. tmstrainWeightResult.setResultGrossWeightTime(sdf.parse(resultGrossWeightTime));
  321. tmstrainWeightResult.setUpdateTime(new Date());
  322. tmstrainWeightResult.setUpdateUsername("admin");
  323. }
  324. return tmstrainWeightResult;
  325. }
  326. }