TmstruckLoadResultServiceImpl.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.feign.WMSFeign;
  3. import com.steerinfo.dil.feign.WmshBoundFeign;
  4. import com.steerinfo.dil.mapper.TmstruckEnfactoryResultMapper;
  5. import com.steerinfo.dil.mapper.TmstruckLoadResultMapper;
  6. import com.steerinfo.dil.mapper.TmstruckReturnResultMapper;
  7. import com.steerinfo.dil.model.TmstruckLoadResult;
  8. import com.steerinfo.dil.service.ITmstruckLoadResultService;
  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.math.BigDecimal;
  14. import java.util.*;
  15. /**
  16. * TmstruckLoadResult服务实现:
  17. * @author generator
  18. * @version 1.0-SNAPSHORT 2021-09-02 10:38
  19. * 类描述
  20. * 修订历史:
  21. * 日期:2021-09-02
  22. * 作者:generator
  23. * 参考:
  24. * 描述:TmstruckLoadResult服务实现
  25. * @see null
  26. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  27. */
  28. @Service(value = "tmstruckLoadResultService")
  29. public class TmstruckLoadResultServiceImpl implements ITmstruckLoadResultService {
  30. @Autowired
  31. private TmstruckLoadResultMapper tmstruckLoadResultMapper;
  32. @Autowired
  33. private TmstruckEnfactoryResultMapper tmstruckEnfactoryResultMapper;
  34. @Autowired
  35. private TmstruckReturnResultMapper tmstruckReturnResultMapper;
  36. @Autowired
  37. private UtilsServiceImpl utilsService;
  38. @Autowired
  39. private WmshBoundFeign wmshBoundFeign;
  40. @Autowired
  41. private WMSFeign wmsFeign;
  42. /**
  43. * 查询所有装车实绩
  44. * @param map
  45. * @return
  46. */
  47. @Override
  48. public List<Map<String, Object>> getAllLoadResult(Map<String, Object> map) {
  49. Integer orderType = (Integer) map.get("orderTypee");
  50. switch (orderType) {
  51. case 1:
  52. case 2:
  53. case 3:
  54. case 4:
  55. map.put("status", 0);
  56. return tmstruckLoadResultMapper.getXSLoadResult(map);
  57. case 5:
  58. break;
  59. case 6:
  60. break;
  61. case 7:
  62. break;
  63. case 8:
  64. return tmstruckLoadResultMapper.getCGJKLoadResult(map);
  65. case 9:
  66. break;
  67. case 10:
  68. break;
  69. case 11:
  70. }
  71. return null;
  72. }
  73. /**
  74. * 新增采购装车实绩
  75. * @param map resultMeasuredTonnage :计量吨位 portId:港口ID
  76. * resultLoadStartTime:装车时间 resultIsclear:是否清场
  77. */
  78. @Transactional
  79. public int addCGLoadResult(Map<String,Object> map){
  80. //通过运输订单号 或 运单Id 查询实绩总表ID 此方法在 进厂作业mapper中
  81. Integer totalId = tmstruckEnfactoryResultMapper.selectOrderIdByCpAndOn(map);
  82. // 新增装车实绩
  83. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  84. //添加主键Id
  85. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  86. //新增计量吨位 装车所装的重量
  87. BigDecimal resultMeasuredTonnage = DataChange.dataToBigDecimal(map.get("resultMeasuredTonnage"));
  88. tmstruckLoadResult.setResultMeasuredTonnage(resultMeasuredTonnage);
  89. tmstruckLoadResult.setStatus(new BigDecimal(0));
  90. tmstruckLoadResult.setResultTotalId(new BigDecimal(totalId));
  91. String resultIsclear = (String) (map.get("resultIsclear"));
  92. tmstruckLoadResult.setResultIsclear(resultIsclear);
  93. tmstruckLoadResult.setResultLoadStartTime(new Date((long) map.get("resultLoadStartTime")));
  94. tmstruckLoadResult.setInsertUpdateRemark((String) map.get("insertUpdateRemark"));
  95. Object portId = map.get("portId"); //获取港口
  96. if(portId != null){
  97. //通过订单ID获取批次Id
  98. BigDecimal batchId = tmstruckLoadResultMapper.getBatchIdByOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
  99. if(batchId != null){
  100. Map<String, Object> hashMap = new HashMap<>();
  101. hashMap.put("batchId", batchId);
  102. hashMap.put("portId", portId);
  103. hashMap.put("resultTonnage",resultMeasuredTonnage);
  104. hashMap.put("isClean", resultIsclear);
  105. wmshBoundFeign.addResult(hashMap);
  106. // 通过港口ID查询仓库表中的港存库ID
  107. BigDecimal warehouseId = tmstruckLoadResultMapper.getWarehouseIdByPortId(DataChange.dataToBigDecimal(portId));
  108. tmstruckLoadResult.setLoadingId(warehouseId); // 添加装货点为港口
  109. }
  110. }
  111. int i = tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  112. //修改订单状态为执行中 1
  113. int i1 = utilsService.updateOrderStatus(map, 1);
  114. //修改运力状态为执行中 1
  115. // int i2 = utilsService.updateCapacityStatus(map, 1);
  116. return i + i1;
  117. }
  118. /**
  119. * 生成销售装车实绩(虚拟装车实绩)
  120. * @param map
  121. * @return
  122. */
  123. public int addLoadResult(Map<String, Object> map){
  124. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  125. //添加主键Id
  126. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  127. //添加物资Id
  128. tmstruckLoadResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  129. //添加总实绩ID
  130. tmstruckLoadResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  131. return tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  132. }
  133. /**
  134. * 修改销售装车实绩 (如果是多种物资【多拼】,通过物资Id和运输订单号来确定唯一的装车实绩进行修改)
  135. * @param map 物资唯一编码 运输订单号
  136. * @return
  137. */
  138. public int addXSLoadResult(Map<String, Object> map){
  139. //通过物资唯一编码查找物资Id
  140. BigDecimal materialId = tmstruckLoadResultMapper.getMaterialIdByMaterialCode((String) map.get("materialCode"));
  141. //通过运输订单号查找总实绩ID
  142. Integer resultTotalId = tmstruckEnfactoryResultMapper.selectOrderIdByCpAndOn(map);
  143. //通过总实绩ID与物资ID查找装车实绩主键ID
  144. Integer resultId = tmstruckLoadResultMapper.getLoadResultIdByMIdAndTotalId(resultTotalId, materialId.intValue());
  145. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  146. tmstruckLoadResult.setStatus(new BigDecimal(0)); // 添加状态0:正常
  147. //添加主键
  148. tmstruckLoadResult.setResultId(new BigDecimal(resultId));
  149. //新增计量吨位 装车所装的重量
  150. tmstruckLoadResult.setResultMeasuredTonnage(DataChange.dataToBigDecimal(map.get("resultMeasuredTonnage")));
  151. //获取扫描实绩最小Id 添加扫描开始时间
  152. Integer scanId = tmstruckLoadResultMapper.getMinScanIdByOrderNum(map);
  153. Map timeMap = tmstruckLoadResultMapper.selectLoadTimeByResultId(scanId);
  154. Date resultLoadStartTime = (Date) timeMap.get("loadTime");
  155. tmstruckLoadResult.setResultLoadStartTime(resultLoadStartTime);
  156. //添加扫描结束时间
  157. Date resultLoadEndTime = new Date();
  158. tmstruckLoadResult.setResultLoadEndTime(resultLoadEndTime);
  159. //添加装车实绩时长 ---- 计算装车时长
  160. long time = (resultLoadEndTime.getTime() - resultLoadStartTime.getTime()) / 60000; // 分钟
  161. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(time));
  162. //添加装卸工Id
  163. tmstruckLoadResult.setLoaderId(new BigDecimal(1));
  164. //添加备注
  165. tmstruckLoadResult.setInsertUpdateRemark((String) map.get("insertUpdateRemark"));
  166. //新增出库实绩
  167. // wmsFeign.insertOutBoundResult(map);
  168. return tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  169. }
  170. /**
  171. * 修改装车作业
  172. *
  173. * @param tmstruckLoadResult
  174. * @return
  175. */
  176. @Override
  177. public int updateLoadResult(TmstruckLoadResult tmstruckLoadResult) {
  178. return tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  179. }
  180. /**
  181. * 通过ID查询装车实绩
  182. *
  183. * @param resultId
  184. * @return
  185. */
  186. @Override
  187. public List<Map<String, Object>> getLoadResultById(Integer resultId) {
  188. return tmstruckLoadResultMapper.getLoadResultById(resultId);
  189. }
  190. /**
  191. * 逻辑删除装车实绩 状态 1
  192. * @param resultId
  193. * @return
  194. */
  195. @Override
  196. public int deleteLoadResult(Integer resultId) {
  197. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  198. tmstruckLoadResult.setResultId(new BigDecimal(resultId));
  199. tmstruckLoadResult.setStatus(new BigDecimal(1));
  200. return tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  201. }
  202. /**
  203. * 修改装车作业点 多个装车点随机分配给多个装车实绩
  204. * @param mapList
  205. * @return
  206. */
  207. @Override
  208. public int updateLoadingId(List<Map<String, Object>> mapList) {
  209. int i = 0;
  210. //获取所有装车实绩ID
  211. for (Map<String, Object> map : mapList) {
  212. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  213. //通过传过来的物资ID(一个订单中物资ID唯一) 和订单Id 寻找装车实绩ID
  214. Integer resultIdList = tmstruckLoadResultMapper.getLoadResultIdList(map);
  215. tmstruckLoadResult.setResultId(new BigDecimal(resultIdList));
  216. //获取算出来的装车点
  217. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("loadingId")));
  218. i += tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  219. }
  220. return i;
  221. }
  222. /**
  223. * 查询销售合同装车实绩
  224. * @param map
  225. * @return
  226. */
  227. @Override
  228. public List<Map<String, Object>> selectLoadResultForSale(Map<String, Object> map) {
  229. return tmstruckLoadResultMapper.selectLoadResultForSale(map);
  230. }
  231. //内转物流,新增装车实绩
  232. @Override
  233. public int addLoadResultForconverted(Map<String, Object> map) {
  234. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  235. //设置主键id
  236. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  237. //获取开始时间
  238. Date startTime = (Date) map.get("startTime");
  239. //获取运输订单号
  240. String OrderNumber = map.get("OrderNumber").toString();
  241. Map<String, Object> Map = new HashMap<>();
  242. Map.put("OrderNumber", OrderNumber);
  243. //通过运输订单号查找物资id
  244. List<Map<String, Object>> materialIdList = tmstruckLoadResultMapper.selectMaterialIdByOrderNumber(Map);
  245. //设置物资id
  246. for (int i = 0; i < materialIdList.size(); i++) {
  247. Map<String, Object> map1 = materialIdList.get(i);
  248. Integer materialId = (Integer) map1.get("materialId");
  249. tmstruckLoadResult.setMaterialId(new BigDecimal(materialId));
  250. }
  251. //绑定总实绩id
  252. Map<String, Object> map2 = tmstruckReturnResultMapper.getResultTotalIdByOrderNumber(OrderNumber);
  253. BigDecimal reultTotalId = (BigDecimal) map2.get("resultTotalId");
  254. //设置总实绩id
  255. tmstruckLoadResult.setResultTotalId(reultTotalId);
  256. tmstruckLoadResult.setResultLoadStartTime(startTime);
  257. //获取用户id
  258. Integer personnelId = (Integer) map.get("personnelId");
  259. String personnelName = tmstruckLoadResultMapper.selectPersonNameByPersonnelId(personnelId);
  260. tmstruckLoadResult.setInsertTime(new Date());
  261. tmstruckLoadResult.setInsertUsername(personnelName);
  262. int i = tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  263. return i;
  264. }
  265. //内转物流,修改装车实绩
  266. @Override
  267. public int updateLoadResultForconverted(Map<String, Object> map) {
  268. //获取装车实绩id
  269. //通过运输订单号查找装车实绩
  270. String orderNumber = (String) map.get("orderNumber");
  271. Map<String, Object> map1 = tmstruckLoadResultMapper.selectLoadResultIdByOrderNumber(orderNumber);
  272. //获取结束时间
  273. Integer LoadResultId = (Integer) map1.get("loadResultId");
  274. Date endTime = (Date) map.get("endTime");
  275. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  276. //根据主键id设置装车结束时间
  277. tmstruckLoadResult.setResultId(new BigDecimal(LoadResultId));
  278. tmstruckLoadResult.setResultLoadEndTime(endTime);
  279. //获取装车开始时间
  280. Date startTime = (Date) map1.get("startTime");
  281. //开始时间
  282. long LoadstartTime = startTime.getTime();
  283. long LoadendTime = endTime.getTime();
  284. long time = LoadendTime - LoadstartTime;
  285. long l = time / 1000;
  286. //设置标准时长
  287. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(l));
  288. int i = tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  289. return i;
  290. }
  291. @Override
  292. public Map<String, Object> getLoadResultIdForOrderNumber(String orderNumber) {
  293. return tmstruckLoadResultMapper.selectLoadResultIdByOrderNumber(orderNumber);
  294. }
  295. /**
  296. * 内转物流汽车装货实绩展示
  297. *
  298. * @param map
  299. * @return
  300. */
  301. @Override
  302. public List<Map<String, Object>> selectLoadResultForConverted(Map<String, Object> map) {
  303. return tmstruckLoadResultMapper.selectLoadResultForConverted(map);
  304. }
  305. /**
  306. * 根据实绩id渲染数据
  307. *
  308. * @param resultId
  309. * @return
  310. */
  311. @Override
  312. public List<Map<String, Object>> selectLoadResultByResultId(Integer resultId) {
  313. return tmstruckLoadResultMapper.selectLoadResultByResultId(resultId);
  314. }
  315. /**
  316. * 内转物流新增装车实绩(火车卸货后装车,装车点固定为达州站)
  317. *
  318. * @param map
  319. * @return
  320. */
  321. @Override
  322. public int addLoadResultForConverted(Map<String, Object> map) {
  323. Integer personnelId = (Integer) map.get("personnelId");
  324. String personnelName = tmstruckLoadResultMapper.selectPersonNameByPersonnelId(personnelId);
  325. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  326. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  327. //获取车牌号,物资id以及总实绩id
  328. String capacityNumber = (String) map.get("capacityNumber");
  329. Map<String, Object> map1 = tmstruckLoadResultMapper.selectMaterialIdAndCapacityId(capacityNumber);
  330. BigDecimal materialId = (BigDecimal) map1.get("materialId");
  331. BigDecimal resultTotalId = (BigDecimal) map1.get("resultTotalId");
  332. tmstruckLoadResult.setMaterialId(materialId);
  333. tmstruckLoadResult.setResultTotalId(resultTotalId);
  334. tmstruckLoadResult.setInsertTime(new Date());
  335. //获取装货点
  336. Integer arrivalId = (Integer) map.get("arrivalId");
  337. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(arrivalId));
  338. Date insertTime = (Date) map.get("insertTime");
  339. tmstruckLoadResult.setInsertTime(insertTime);
  340. Integer tonnage = (Integer) map.get("tonnage");
  341. tmstruckLoadResult.setResultMeasuredTonnage(DataChange.dataToBigDecimal(tonnage));
  342. tmstruckLoadResult.setInsertUsername(personnelName);
  343. return tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  344. }
  345. @Override
  346. public int addLoadResultForSale(Map<String, Object> map) {
  347. //新增装车实绩
  348. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  349. //新增id
  350. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  351. //通过运输订单号查找物资
  352. List<Map<String, Object>> materialList = tmstruckLoadResultMapper.selectMaterialIdByOrderNumber(map);
  353. for (int i = 0; i < materialList.size(); i++) {
  354. Map<String, Object> map3 = materialList.get(i);
  355. BigDecimal materialId = (BigDecimal) map3.get("materialId");
  356. tmstruckLoadResult.setMaterialId(materialId);
  357. if (tmstruckLoadResultMapper.selectMaterialTypeByMaterialId(materialId.intValue())==2) {
  358. List list = tmstruckLoadResultMapper.selectResultIdByOrderNumber((String) map.get("orderNumber"));
  359. //查询最大id和最小id
  360. Integer maxResultId = (Integer) Collections.max(list);
  361. Integer minResultId = (Integer) Collections.min(list);
  362. //根据最大id查找扫描时间
  363. Map map1 = tmstruckLoadResultMapper.selectLoadTimeByResultId(minResultId);
  364. Date startdate = (Date) map1.get("loadTime");
  365. Integer loaderId = tmstruckLoadResultMapper.selecLoadIdByresultId(minResultId);
  366. //根据最小id查找扫描时间
  367. Map map2 = tmstruckLoadResultMapper.selectLoadTimeByResultId(maxResultId);
  368. Date endDate = (Date) map2.get("loadTime");
  369. tmstruckLoadResult.setResultLoadStartTime(startdate);
  370. tmstruckLoadResult.setResultLoadEndTime(endDate);
  371. //开始时间
  372. long startTime = startdate.getTime();
  373. long endTime = endDate.getTime();
  374. long time = endTime - startTime;
  375. long l = time / 1000;
  376. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(l));
  377. tmstruckLoadResult.setLoaderId(new BigDecimal(loaderId));
  378. //新增出库实绩
  379. wmsFeign.insertOutBoundResult(map);
  380. //水渣,焦炭装车
  381. }else if (tmstruckLoadResultMapper.selectMaterialTypeByMaterialId(materialId.intValue())==7
  382. &&tmstruckLoadResultMapper.selectMaterialTypeByMaterialId(materialId.intValue())==8){
  383. //新增水渣,焦炭装车实绩
  384. //获取结束时间
  385. Integer LoadResultId = (Integer) map.get("loadResultId");
  386. Date endTime = (Date) map.get("endTime");
  387. //根据主键id设置装车结束时间
  388. tmstruckLoadResult.setResultId(new BigDecimal(LoadResultId));
  389. tmstruckLoadResult.setResultLoadEndTime(endTime);
  390. //获取装车开始时间
  391. Date startTime = (Date) map.get("startTime");
  392. //开始时间
  393. long LoadstartTime = startTime.getTime();
  394. long LoadendTime = endTime.getTime();
  395. long time = LoadendTime - LoadstartTime;
  396. long l = time / 1000;
  397. //设置标准时长
  398. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(l));
  399. }
  400. }
  401. int i=tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  402. return i;
  403. }
  404. }