TmstruckWeightResultServiceImpl.java 16 KB

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