TmstruckWeightResultServiceImpl.java 16 KB

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