TmstruckLoadResultServiceImpl.java 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.feign.OmsFeign;
  3. import com.steerinfo.dil.feign.WMSFeign;
  4. import com.steerinfo.dil.feign.WmshBoundFeign;
  5. import com.steerinfo.dil.mapper.*;
  6. import com.steerinfo.dil.model.TmstruckEnfactoryResult;
  7. import com.steerinfo.dil.model.TmstruckLeaveFactoryResult;
  8. import com.steerinfo.dil.model.TmstruckLoadResult;
  9. import com.steerinfo.dil.model.TmstruckWeightResult;
  10. import com.steerinfo.dil.service.ITmstruckLoadResultService;
  11. import com.steerinfo.dil.util.DataChange;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.transaction.annotation.Transactional;
  15. import java.math.BigDecimal;
  16. import java.text.ParseException;
  17. import java.text.SimpleDateFormat;
  18. import java.util.*;
  19. /**
  20. * TmstruckLoadResult服务实现:
  21. * @author generator
  22. * @version 1.0-SNAPSHORT 2021-09-02 10:38
  23. * 类描述
  24. * 修订历史:
  25. * 日期:2021-09-02
  26. * 作者:generator
  27. * 参考:
  28. * 描述:TmstruckLoadResult服务实现
  29. * @see null
  30. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  31. */
  32. @Service(value = "tmstruckLoadResultService")
  33. public class TmstruckLoadResultServiceImpl implements ITmstruckLoadResultService {
  34. @Autowired
  35. private TmstruckLoadResultMapper tmstruckLoadResultMapper;
  36. @Autowired
  37. private TmstruckEnfactoryResultMapper tmstruckEnfactoryResultMapper;
  38. @Autowired
  39. private TmstruckTimeTaskResultServiceImpl tmstruckTimeTaskResultService;
  40. @Autowired
  41. private TmstruckReturnResultMapper tmstruckReturnResultMapper;
  42. @Autowired
  43. private UtilsServiceImpl utilsService;
  44. @Autowired
  45. private TmstruckWeightResultMapper tmstruckWeightResultMapper;
  46. @Autowired
  47. private TmstruckLeaveFactoryResultMapper tmstruckLeaveFactoryResultMapper;
  48. @Autowired
  49. private TmstruckTimeTaskResultMapper tmstruckTimeTaskResultMapper;
  50. @Autowired
  51. private WmshBoundFeign wmshBoundFeign;
  52. @Autowired
  53. private UtilsMapper utilsMapper;
  54. @Autowired
  55. OmsFeign omsFeign;
  56. @Autowired
  57. private TmstruckWeightResultServiceImpl tmstruckWeightResultService;
  58. @Autowired
  59. private TmstruckMeasureCommissionServiceImpl tmstruckMeasureCommissionService;
  60. @Autowired
  61. private TmstruckUnloadResultMapper tmstruckUnloadResultMapper;
  62. /**
  63. * 生成销售装车实绩(虚拟装车实绩)
  64. * @param map
  65. * @return
  66. */
  67. public int addLoadResult(Map<String, Object> map){
  68. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  69. //添加主键Id
  70. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  71. //添加总实绩ID
  72. tmstruckLoadResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  73. // 添加路段顺序号
  74. tmstruckLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("segmentSqe")));
  75. return tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  76. }
  77. /**
  78. * 查询所有装车实绩
  79. * @param map
  80. * @return
  81. */
  82. @Override
  83. public List<Map<String, Object>> getAllLoadResult(Map<String, Object> map) {
  84. Integer orderType = (Integer) map.get("orderTypee");
  85. switch (orderType) {
  86. case 1:
  87. case 2:
  88. case 3:
  89. map.put("status", 0);
  90. return tmstruckLoadResultMapper.getXSLoadResult(map); //apiId = 221
  91. case 4:
  92. return tmstruckLoadResultMapper.getSteelNzLoadResult(map); //apiID: 263
  93. case 5:
  94. break;
  95. case 6:
  96. break;
  97. case 7:
  98. break;
  99. case 8:
  100. return tmstruckLoadResultMapper.getCGJKLoadResult(map); // apiId = 91
  101. case 9:
  102. case 10:
  103. case 15:
  104. case 16:
  105. case 20:
  106. case 23:
  107. case 24:
  108. return tmstruckLoadResultMapper.getImportedDomesticNzLoadResult(map); //apiId = 353
  109. case 11:
  110. return tmstruckLoadResultMapper.getInFactoryLoadResult(map); //apiId = 359
  111. case 12:
  112. case 13:
  113. case 14:
  114. case 19:
  115. case 100:
  116. return tmstruckLoadResultMapper.getSporadicSuppliesLoadResult(map); //apiId = 430
  117. }
  118. return null;
  119. }
  120. /**
  121. * 更新装车实绩表
  122. * @return
  123. */
  124. public int updateLoadingId(Map<String, Object> map){
  125. //获取装车实绩Id 订单ID 物资ID
  126. Integer loadResultId = tmstruckLoadResultMapper.getLoadResultId(map);
  127. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  128. tmstruckLoadResult.setResultId(new BigDecimal(loadResultId));
  129. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("loadingId")));
  130. return tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  131. }
  132. /**
  133. * 钢材装车
  134. * orderId materialId loadStartTime loadId warehouseId insertUpdateRemark
  135. * @param map
  136. * @return
  137. */
  138. @Transactional(rollbackFor = Exception.class)
  139. public int addXSLoadResult(Map<String, Object> map){
  140. //通过运输订单号查询实绩
  141. Map<String, Object> steelMesMap = tmstruckLoadResultMapper.getSteelLoadResult(map);
  142. if(steelMesMap == null){
  143. return -1;
  144. }
  145. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  146. //总实绩ID 开始时间 结束时间 装车时长 物资Id 装卸工ID 装货点Id 备注
  147. tmstruckLoadResult.setResultId(DataChange.dataToBigDecimal(steelMesMap.get("resultId")));
  148. Date loadStartTime = DataChange.dataToDate(map.get("loadStartTime"));
  149. loadStartTime = loadStartTime == null ? new Date() : loadStartTime;
  150. tmstruckLoadResult.setResultLoadStartTime(loadStartTime);
  151. Date loadEndTime = new Date();
  152. tmstruckLoadResult.setResultLoadEndTime(loadEndTime);
  153. long duration = (loadEndTime.getTime() - loadStartTime.getTime()) / 60000;
  154. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(duration));
  155. Object loadId = map.get("loadId");
  156. if(loadId != null){
  157. tmstruckLoadResult.setLoaderId(DataChange.dataToBigDecimal(map.get("loadId")));
  158. }
  159. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  160. tmstruckLoadResult.setMaterialId(materialId);
  161. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("warehouseId")));
  162. tmstruckLoadResult.setInsertUpdateRemark((String) map.get("insertUpdateRemark"));
  163. steelMesMap.put("materialId", materialId);
  164. //给达钢发送委托
  165. steelMesMap.put("numberOfFurnaces", map.get("numberOfFurnaces")); //炉号件数
  166. int i = tmstruckMeasureCommissionService.addSteelMeasureCommission(steelMesMap);
  167. if(i == 0){
  168. return i;
  169. }
  170. tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  171. //更新路段顺序号
  172. utilsService.updateOrderLineSequence(steelMesMap); //orderId segmentSqe
  173. //推送数据
  174. utilsService.pushMesToWebsocket((String) steelMesMap.get("capacityNumber"), "装货");
  175. return 1;
  176. }
  177. /**
  178. * PDA新增装车实绩 (非钢材)
  179. * loadStartTime 装车开始时间
  180. * @param map
  181. * @return
  182. */
  183. @Transactional(rollbackFor = Exception.class)
  184. public int addXS2LoadResult(Map<String, Object> map) throws Exception {
  185. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  186. BigDecimal orderId=null;
  187. int i=0;
  188. //通过运输订单号查询订单类型
  189. String orderNumber = (String) map.get("orderNumber");
  190. //通过订单号查询订单类型 及总实绩Id
  191. Map<String, Object> mesMap = utilsMapper.getOrderTypeByOrderNumber(orderNumber);
  192. String capacityNumber = (String) mesMap.get("capacityNumber");
  193. int orderType = DataChange.dataToBigDecimal(mesMap.get("orderType")).intValue();
  194. BigDecimal resultTotalId = DataChange.dataToBigDecimal(mesMap.get("totalId"));
  195. orderId = DataChange.dataToBigDecimal(mesMap.get("orderId"));
  196. //装货时查询是否含有净重
  197. Integer netWeight = tmstruckUnloadResultMapper.getNetWeightByTotalId(resultTotalId);
  198. if(orderType == 11 || orderType == 15 || orderType == 16){
  199. //判断是否有装货实绩,如果有装货实绩,则更新
  200. BigDecimal resultId = tmstruckLoadResultMapper.getResultId(resultTotalId);
  201. if (resultId==null) {
  202. int sqe = DataChange.dataToBigDecimal(mesMap.get("Sqe")).intValue();
  203. sqe = sqe + 1;
  204. map.put("resultId", tmstruckLoadResultMapper.selectMaxId());
  205. map.put("Sqe", sqe);//查询路段顺序号+1
  206. map.put("resultTotalId", resultTotalId);
  207. i += tmstruckLoadResultMapper.insertSelective(generateLoad(map));
  208. //更新路段顺序号
  209. mesMap.put("orderLineSequence", sqe);
  210. utilsService.updateOrderLineSqeByOrderNumber(mesMap);
  211. //推送消息到websocket
  212. utilsService.pushMesToWebsocket(capacityNumber, "装货");
  213. }else {
  214. //已装货的实绩
  215. //map.put("resultId",resultId);
  216. tmstruckLoadResult.setResultId(resultId);
  217. if(map.get("personnelSsoId") != null){
  218. //通过SSo主键查询人员管理主键
  219. Integer personnelId = utilsMapper.getPersonnelIdBySsoId((String) map.get("personnelSsoId"));
  220. if(personnelId != null){
  221. tmstruckLoadResult.setLoaderId(new BigDecimal(personnelId));
  222. }else{
  223. String capacityName = utilsMapper.getCapacityNameBySsoId((String) map.get("personnelSsoId"));
  224. if(capacityName != null){
  225. tmstruckLoadResult.setCapacityRemark(capacityName);
  226. }
  227. }
  228. }
  229. i += tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  230. }
  231. //根据运输订单查找需求备注
  232. Map<String,Object> remarkMap=tmstruckTimeTaskResultMapper.selectInwardDueTimeByOrderId(orderId);
  233. String remark =(String) remarkMap.get("remark");
  234. if (remark.contains("计时")){
  235. //判断计时是否开始
  236. BigDecimal startTime = utilsMapper.getTime(DataChange.dataToBigDecimal(orderId));
  237. if (startTime==null){
  238. map.put("inwardTypes",1);
  239. tmstruckTimeTaskResultService.addTimeTaskResult(map);
  240. }
  241. }
  242. return i;
  243. }
  244. //如果是零星多拼订单 需要查询这个物资是否已经装过了
  245. if(orderType == 12 || orderType == 13){
  246. mesMap.put("updateUnloadResult", 1);
  247. Integer checkMaterial = tmstruckLoadResultMapper.checkMaterialIdLoad(resultTotalId, DataChange.dataToBigDecimal(map.get("materialId")));
  248. if(checkMaterial != null){
  249. return -2; //已装过此物资
  250. }
  251. }
  252. Map<String, Object> dataMap = tmstruckLoadResultMapper.getLoadResultIdByMIdAndTotalId(mesMap);
  253. if(dataMap == null){
  254. return -3; //该订单没有装车作业
  255. }
  256. //获取该实绩的路段顺序号
  257. BigDecimal segmentSqe = DataChange.dataToBigDecimal(dataMap.get("segmentSqe"));
  258. //获取订单的路段顺序号
  259. BigDecimal orderSegmentSqe = DataChange.dataToBigDecimal(mesMap.get("orderSegmentSqe"));
  260. if(segmentSqe.intValue() > (orderSegmentSqe.intValue() + 1)){
  261. return -6;
  262. }
  263. //查询装车实绩ID
  264. map.putAll(dataMap);
  265. tmstruckLoadResult.setResultId(DataChange.dataToBigDecimal(map.get("resultId")));
  266. tmstruckLoadResult.setStatus(new BigDecimal(0));
  267. tmstruckLoadResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  268. //添加装车开始时间
  269. Date loadStartTime = new Date((long) map.get("loadStartTime"));
  270. tmstruckLoadResult.setResultLoadStartTime(loadStartTime);
  271. //添加装车结束时间(当前时间)
  272. Date loadEndTime = new Date();
  273. tmstruckLoadResult.setResultLoadEndTime(loadEndTime);
  274. //计算装车时长 取分钟
  275. long differentTime = (loadEndTime.getTime() - loadStartTime.getTime()) / 60000;
  276. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(differentTime));
  277. if(map.get("personnelSsoId") != null){
  278. //通过SSo主键查询人员管理主键
  279. Integer personnelId = utilsMapper.getPersonnelIdBySsoId((String) map.get("personnelSsoId"));
  280. if(personnelId != null){
  281. tmstruckLoadResult.setLoaderId(new BigDecimal(personnelId));
  282. }
  283. }
  284. // 更新装货点
  285. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("warehouseId")));
  286. if(netWeight == 0){ //如果没有净重 则更新路段顺序号 有则不更新
  287. //路段顺序号 + 1
  288. map.put("orderId", mesMap.get("orderId"));
  289. utilsService.updateOrderLineSequence(map);
  290. }
  291. ////更新路段顺序号
  292. //utilsService.updateOrderLineSequence(map);
  293. //判断是否存在未装货出厂的出厂实绩
  294. if(tmstruckLoadResultMapper.countJudgeLeave(mesMap)>0){
  295. //回滚出厂信息
  296. rollbackJudge(mesMap);
  297. }
  298. //判断是否为未装货
  299. if (map.get("insertUpdateRemark")!=null) {
  300. String insertUpdateRemark = (String) map.get("insertUpdateRemark");
  301. if("未装货".equals(insertUpdateRemark)){
  302. loadJudge(mesMap);
  303. }
  304. tmstruckLoadResult.setInsertUpdateRemark(insertUpdateRemark);
  305. }
  306. addCapacityRemark(map);
  307. tmstruckLoadResult.setCaseNumber((String) map.get("caseNumber"));
  308. tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  309. //推送消息到websocket
  310. utilsService.pushMesToWebsocket(capacityNumber, "装货");
  311. //map.put("orderTypee",orderType);
  312. if (map.get("warehouseId")==null){
  313. map.put("warehouseName",null);
  314. }else {
  315. //根据id查找装货点名称
  316. String warehouseName = utilsMapper.queryWarehouseName(DataChange.dataToBigDecimal(map.get("warehouseId")));
  317. map.put("warehouseName",warehouseName);
  318. }
  319. i = tmstruckMeasureCommissionService.addMeasureCommissionForLoding(map);
  320. return 1;
  321. }
  322. @Override
  323. public int LoadMeasure(Map<String, Object> map) throws Exception {
  324. return tmstruckMeasureCommissionService.addMeasureCommissionForLoding(map);
  325. }
  326. //内转添加装货实绩
  327. private TmstruckLoadResult generateLoad(Map<String, Object> map) {
  328. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  329. tmstruckLoadResult.setId(DataChange.dataToBigDecimal(map.get("resultId")));
  330. tmstruckLoadResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  331. tmstruckLoadResult.setStatus(new BigDecimal(0));
  332. tmstruckLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("Sqe")));
  333. tmstruckLoadResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  334. //添加装车开始时间
  335. Date loadStartTime = new Date((long) map.get("loadStartTime"));
  336. tmstruckLoadResult.setResultLoadStartTime(loadStartTime);
  337. //添加装车结束时间(当前时间)
  338. Date loadEndTime = new Date();
  339. tmstruckLoadResult.setResultLoadEndTime(loadEndTime);
  340. //计算装车时长 取分钟
  341. long differentTime = (loadEndTime.getTime() - loadStartTime.getTime()) / 60000;
  342. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(differentTime));
  343. if(map.get("personnelSsoId") != null){
  344. //通过SSo主键查询人员管理主键
  345. Integer personnelId = utilsMapper.getPersonnelIdBySsoId((String) map.get("personnelSsoId"));
  346. if(personnelId != null){
  347. tmstruckLoadResult.setLoaderId(new BigDecimal(personnelId));
  348. }else{
  349. String capacityName = utilsMapper.getCapacityNameBySsoId((String) map.get("personnelSsoId"));
  350. if(capacityName != null){
  351. tmstruckLoadResult.setCapacityRemark(capacityName);
  352. }
  353. }
  354. }
  355. tmstruckLoadResult.setInsertUpdateRemark((String) map.get("insertUpdateRemark"));
  356. // 添加装货点
  357. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("warehouseId")));
  358. return tmstruckLoadResult;
  359. }
  360. /**
  361. * 更改最大路段顺序号 -1
  362. * @Author TXF
  363. * @Date 2022/2/13 12:59
  364. * @param map
  365. * @return
  366. **/
  367. @Override
  368. public int loadJudge(Map<String, Object> map) {
  369. BigDecimal orderId =DataChange.dataToBigDecimal(map.get("orderId"));
  370. //查找当前订单共有几次出厂
  371. List<Integer> resultIdList = tmstruckLoadResultMapper.allOutFactoryNum(orderId);
  372. if(resultIdList.size() > 1){
  373. for(int i = 0; i < resultIdList.size() - 1; i ++){
  374. //给最后一次出厂 之外的出厂实绩 赋值出厂时间
  375. TmstruckLeaveFactoryResult tmstruckLeaveFactoryResult = new TmstruckLeaveFactoryResult();
  376. tmstruckLeaveFactoryResult.setResultId(new BigDecimal(resultIdList.get(i)));
  377. tmstruckLeaveFactoryResult.setResultOutMode("未装货出厂");
  378. tmstruckLeaveFactoryResult.setResultOutGateTime(new Date());
  379. tmstruckLeaveFactoryResultMapper.updateByPrimaryKeySelective(tmstruckLeaveFactoryResult);
  380. }
  381. }
  382. return tmstruckLoadResultMapper.updateSqe(orderId);
  383. }
  384. /**
  385. * 回退未装货
  386. * @Author TXF
  387. * @Date 2022/2/13 12:59
  388. * @param map
  389. * @return
  390. **/
  391. public int rollbackJudge(Map<String, Object> map) {
  392. BigDecimal orderId =DataChange.dataToBigDecimal(map.get("orderId"));
  393. //查找当前订单所有未装货出厂
  394. List<Integer> resultIdList = tmstruckLoadResultMapper.allOutFactoryJudge(orderId);
  395. for(Integer resultId: resultIdList){
  396. //清空出厂信息
  397. TmstruckLeaveFactoryResult tmstruckLeaveFactoryResult = tmstruckLeaveFactoryResultMapper.selectByPrimaryKey(new BigDecimal(resultId));
  398. tmstruckLeaveFactoryResult.setResultOutMode(null);
  399. tmstruckLeaveFactoryResult.setResultOutGateTime(null);
  400. tmstruckLeaveFactoryResultMapper.updateByPrimaryKey(tmstruckLeaveFactoryResult);
  401. }
  402. //更新订单路段顺序号为装货路段顺序号
  403. return tmstruckLoadResultMapper.updateLoadSeq(map);
  404. }
  405. /**
  406. * 添加装车标准时长ID
  407. * @param orderNumber
  408. * @param tmstruckLoadResult
  409. */
  410. public void setLoadStandardTimeId(String orderNumber, TmstruckLoadResult tmstruckLoadResult){
  411. //添加标准时长ID 通过运输订单号查找运输订单类型
  412. Integer orderType = tmstruckLoadResultMapper.selectOrderTypeByOrderNumber(orderNumber);
  413. if(orderType == 1){
  414. tmstruckLoadResult.setLoadStandardTimeId(new BigDecimal(1));
  415. }else if(orderType == 2){
  416. tmstruckLoadResult.setLoadStandardTimeId(new BigDecimal(2));
  417. }else if(orderType == 3){
  418. tmstruckLoadResult.setLoadStandardTimeId(new BigDecimal(3));
  419. }
  420. }
  421. /**
  422. * 修改装车作业
  423. * @param tmstruckLoadResult
  424. * @return
  425. */
  426. @Override
  427. public int updateLoadResult(TmstruckLoadResult tmstruckLoadResult) {
  428. // BigDecimal orderId = tmstruckLoadResultMapper.getOrderId(tmstruckLoadResult.getResultId());
  429. // Map<String , Object> map = new
  430. // omsFeign.pushMesToWebsocket(map);
  431. return tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  432. }
  433. /**
  434. * 通过ID查询装车实绩
  435. *
  436. * @param resultId
  437. * @return
  438. */
  439. @Override
  440. public List<Map<String, Object>> getLoadResultById(Integer resultId) {
  441. return tmstruckLoadResultMapper.getLoadResultById(resultId);
  442. }
  443. /**
  444. * 逻辑删除装车实绩 状态 1
  445. * @param resultId
  446. * @return
  447. */
  448. @Override
  449. public int deleteLoadResult(Integer resultId) {
  450. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  451. tmstruckLoadResult.setResultId(new BigDecimal(resultId));
  452. tmstruckLoadResult.setStatus(new BigDecimal(1));
  453. return tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  454. }
  455. /**
  456. * 修改装车作业点
  457. * @param mapList
  458. * @return
  459. */
  460. @Override
  461. public int updateLoadingIds(List<Map<String, Object>> mapList) {
  462. int i = 0;
  463. //获取所有装车实绩ID
  464. for (Map<String, Object> map : mapList) {
  465. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  466. //通过传过来的物资ID(一个订单中物资ID唯一) 和订单Id 寻找装车实绩ID
  467. Integer resultIdList = tmstruckLoadResultMapper.getLoadResultId(map);
  468. tmstruckLoadResult.setResultId(new BigDecimal(resultIdList));
  469. //获取算出来的装车点
  470. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("loadingId")));
  471. i += tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  472. }
  473. return i;
  474. }
  475. @Override
  476. public int addCapacityRemark(Map<String, Object> map) {
  477. int i=0;
  478. TmstruckLoadResult tmstruckLoadResult=new TmstruckLoadResult();
  479. String capacityName = utilsMapper.getCapacityNameBySsoId((String) map.get("personnelSsoId"));
  480. if (capacityName!=null) {
  481. map.put("capacityName",capacityName);
  482. //判断装机是否重复扫码
  483. BigDecimal loadResultId = utilsMapper.getLoadResultId(map);
  484. if (loadResultId == null) {
  485. tmstruckLoadResult.setResultId(DataChange.dataToBigDecimal(map.get("resultId")));
  486. tmstruckLoadResult.setCapacityRemark(capacityName);
  487. i = tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  488. }else {
  489. i=-5;
  490. }
  491. }
  492. return i;
  493. }
  494. /**
  495. * 查询销售合同装车实绩
  496. * @param map
  497. * @return
  498. */
  499. @Override
  500. public List<Map<String, Object>> selectLoadResultForSale(Map<String, Object> map) {
  501. return tmstruckLoadResultMapper.selectLoadResultForSale(map);
  502. }
  503. /**
  504. * 内转物流,新增装车实绩
  505. */
  506. @Override
  507. public int addLoadResultForconverted(Map<String, Object> map) {
  508. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  509. //设置主键id
  510. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  511. //获取开始时间
  512. Date startTime = (Date) map.get("startTime");
  513. //获取运输订单号
  514. String OrderNumber = map.get("OrderNumber").toString();
  515. Map<String, Object> Map = new HashMap<>();
  516. Map.put("OrderNumber", OrderNumber);
  517. //通过运输订单号查找物资id
  518. List<Map<String, Object>> materialIdList = tmstruckLoadResultMapper.selectMaterialIdByOrderNumber(Map);
  519. //设置物资id
  520. for (int i = 0; i < materialIdList.size(); i++) {
  521. Map<String, Object> map1 = materialIdList.get(i);
  522. Integer materialId = (Integer) map1.get("materialId");
  523. tmstruckLoadResult.setMaterialId(new BigDecimal(materialId));
  524. }
  525. //绑定总实绩id
  526. Map<String, Object> map2 = tmstruckReturnResultMapper.getResultTotalIdByOrderNumber(OrderNumber);
  527. BigDecimal reultTotalId = (BigDecimal) map2.get("resultTotalId");
  528. //设置总实绩id
  529. tmstruckLoadResult.setResultTotalId(reultTotalId);
  530. tmstruckLoadResult.setResultLoadStartTime(startTime);
  531. //获取用户id
  532. Integer personnelId = (Integer) map.get("personnelId");
  533. String personnelName = tmstruckLoadResultMapper.selectPersonNameByPersonnelId(personnelId);
  534. tmstruckLoadResult.setInsertTime(new Date());
  535. tmstruckLoadResult.setInsertUsername(personnelName);
  536. int i = tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  537. return i;
  538. }
  539. //内转物流,修改装车实绩
  540. @Override
  541. public int updateLoadResultForconverted(Map<String, Object> map) {
  542. //获取装车实绩id
  543. //通过运输订单号查找装车实绩
  544. String orderNumber = (String) map.get("orderNumber");
  545. Map<String, Object> map1 = tmstruckLoadResultMapper.selectLoadResultIdByOrderNumber(orderNumber);
  546. //获取结束时间
  547. Integer LoadResultId = (Integer) map1.get("loadResultId");
  548. Date endTime = (Date) map.get("endTime");
  549. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  550. //根据主键id设置装车结束时间
  551. tmstruckLoadResult.setResultId(new BigDecimal(LoadResultId));
  552. tmstruckLoadResult.setResultLoadEndTime(endTime);
  553. //获取装车开始时间
  554. Date startTime = (Date) map1.get("startTime");
  555. //开始时间
  556. long LoadstartTime = startTime.getTime();
  557. long LoadendTime = endTime.getTime();
  558. long time = LoadendTime - LoadstartTime;
  559. long l = time / 1000;
  560. //设置标准时长
  561. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(l));
  562. int i = tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  563. return i;
  564. }
  565. @Override
  566. public Map<String, Object> getLoadResultIdForOrderNumber(String orderNumber) {
  567. return tmstruckLoadResultMapper.selectLoadResultIdByOrderNumber(orderNumber);
  568. }
  569. /**
  570. * 内转物流汽车装货实绩展示
  571. *
  572. * @param map
  573. * @return
  574. */
  575. @Override
  576. public List<Map<String, Object>> selectLoadResultForConverted(Map<String, Object> map) {
  577. return tmstruckLoadResultMapper.selectLoadResultForConverted(map);
  578. }
  579. /**
  580. * 根据实绩id渲染数据
  581. *
  582. * @param resultId
  583. * @return
  584. */
  585. @Override
  586. public List<Map<String, Object>> selectLoadResultByResultId(Integer resultId) {
  587. return tmstruckLoadResultMapper.selectLoadResultByResultId(resultId);
  588. }
  589. /**
  590. * 内转物流新增装车实绩(火车卸货后装车,装车点固定为达州站)
  591. *
  592. * @param map
  593. * @return
  594. */
  595. @Override
  596. public int addLoadResultForConverted(Map<String, Object> map) {
  597. Integer personnelId = (Integer) map.get("personnelId");
  598. String personnelName = tmstruckLoadResultMapper.selectPersonNameByPersonnelId(personnelId);
  599. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  600. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  601. //获取车牌号,物资id以及总实绩id
  602. String capacityNumber = (String) map.get("capacityNumber");
  603. Map<String, Object> map1 = tmstruckLoadResultMapper.selectMaterialIdAndCapacityId(capacityNumber);
  604. BigDecimal materialId = (BigDecimal) map1.get("materialId");
  605. BigDecimal resultTotalId = (BigDecimal) map1.get("resultTotalId");
  606. tmstruckLoadResult.setMaterialId(materialId);
  607. tmstruckLoadResult.setResultTotalId(resultTotalId);
  608. tmstruckLoadResult.setInsertTime(new Date());
  609. //获取装货点
  610. Integer arrivalId = (Integer) map.get("arrivalId");
  611. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(arrivalId));
  612. Date insertTime = (Date) map.get("insertTime");
  613. tmstruckLoadResult.setInsertTime(insertTime);
  614. Integer tonnage = (Integer) map.get("tonnage");
  615. tmstruckLoadResult.setResultMeasuredTonnage(DataChange.dataToBigDecimal(tonnage));
  616. tmstruckLoadResult.setInsertUsername(personnelName);
  617. return tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  618. }
  619. /**
  620. * 查询所有正在排队的销售订单
  621. * @param map
  622. * @return
  623. */
  624. @Override
  625. public List<Map<String, Object>> getSaleOrderOnQueue(Map<String, Object> map) {
  626. return tmstruckLoadResultMapper.getSaleOrderOnQueue(map);
  627. }
  628. /**
  629. * 修改装车点和装车顺序
  630. * @param map
  631. * @return
  632. */
  633. public int updateLoadingIdAndLoadSq(Map<String, Object> map){
  634. //前端传来数据结构类型为 {order: Integer, list: List<Map<String, Object>>}
  635. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  636. List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("list");
  637. int i = 0;
  638. for (Map<String, Object> mesMap : list) {
  639. mesMap.put("orderId", orderId);
  640. //通过物资ID和订单ID查询装车实绩ID
  641. Integer resultId = tmstruckLoadResultMapper.getLoadIdByOrderIdAndMId(mesMap);
  642. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  643. tmstruckLoadResult.setResultId(new BigDecimal(resultId));
  644. //设置装车顺序
  645. tmstruckLoadResult.setLoadingSequence(DataChange.dataToBigDecimal(mesMap.get("serialNumber")));
  646. //设置装车月台
  647. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(mesMap.get("platformId")));
  648. i += tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  649. }
  650. return i;
  651. }
  652. /**
  653. * 新增内转国产矿进口矿装车实绩
  654. * @param map
  655. * @return
  656. */
  657. public int addDaZhouToDaGangLoadResult(Map<String, Object> map){
  658. List<Integer> totalResultIdList = (List<Integer>) map.get("totalResultIdList");
  659. BigDecimal loadingId = DataChange.dataToBigDecimal(map.get("loadingId"));
  660. //添加是否需要质检字段
  661. BigDecimal isdeduct = DataChange.dataToBigDecimal(map.get("isdeduct"));
  662. Date loadTime = new Date((long) map.get("loadTime"));
  663. int count = 0;
  664. for (Integer totalResultId : totalResultIdList) {
  665. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  666. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  667. tmstruckLoadResult.setResultTotalId(new BigDecimal(totalResultId));
  668. tmstruckLoadResult.setLoadingId(loadingId);
  669. tmstruckLoadResult.setIsdeduct(isdeduct);
  670. tmstruckLoadResult.setResultLoadStartTime(loadTime);
  671. tmstruckLoadResult.setStatus(new BigDecimal(0));
  672. tmstruckLoadResult.setInsertTime(new Date());
  673. tmstruckLoadResult.setInsertUsername("admin");
  674. count += tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  675. }
  676. return count;
  677. }
  678. @Override
  679. public List<Map<String, Object>> getCgNzLoadingResult(Map<String, Object> mapval) {
  680. return tmstruckLoadResultMapper.getCgNzLoadingResult(mapval);
  681. }
  682. /**
  683. * @author:zyf
  684. * @version:1.0
  685. * @Date:
  686. * @Description:新增装货表
  687. */
  688. @Override
  689. @Transactional(rollbackFor = Exception.class)
  690. public int addLoad1(Map<String, Object> map) {
  691. //获取装货表主键ID
  692. BigDecimal ResultId = tmstruckLoadResultMapper.selectMaxId();
  693. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  694. //总实绩ID 开始时间 结束时间 装车时长 物资Id 装卸工ID 装货点Id 备注
  695. //主键ID
  696. tmstruckLoadResult.setResultId(ResultId);
  697. //装卸工ID
  698. tmstruckLoadResult.setLoaderId(DataChange.dataToBigDecimal(map.get("loadId")));
  699. //装货开始时间
  700. SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  701. String loadStartTime =(String) map.get("loadStartTime");
  702. try {
  703. Date loadStartTime1 = sdf2.parse(loadStartTime);
  704. tmstruckLoadResult.setResultLoadStartTime(loadStartTime1);
  705. //结束时间
  706. Date loadEndTime = new Date();
  707. tmstruckLoadResult.setResultLoadEndTime(loadEndTime);
  708. //装货时长
  709. long duration = (loadEndTime.getTime() - loadStartTime1.getTime()) / 60000;
  710. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(duration));
  711. } catch (ParseException e) {
  712. e.printStackTrace();
  713. }
  714. //总实绩ID
  715. tmstruckLoadResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultid")));
  716. //物资ID
  717. tmstruckLoadResult.setMaterialId(BigDecimal.valueOf((int)map.get("materialId")));
  718. //装货点ID
  719. tmstruckLoadResult.setLoadingId(BigDecimal.valueOf((int)map.get("warehouseId")));
  720. //理重
  721. BigDecimal lz= (BigDecimal.valueOf((Double) map.get("calculateTW")));
  722. tmstruckLoadResult.setResultMeasuredTonnage(lz);
  723. int i=tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  724. TmstruckWeightResult tmstruckWeightResult=new TmstruckWeightResult();
  725. tmstruckWeightResult.setWeightTaskResultId(tmstruckWeightResultMapper.selectMaxId());
  726. tmstruckWeightResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultid")));
  727. tmstruckWeightResult.setResultNetWeight(lz);
  728. tmstruckWeightResultMapper.insertSelective(tmstruckWeightResult);
  729. //给运输订单的路段序列号加一
  730. //1.先查询出来
  731. BigDecimal orderId=BigDecimal.valueOf((int)map.get("orderId"));
  732. BigDecimal orderlinesequence=tmstruckWeightResultMapper.queryRoadId(orderId);
  733. if (orderlinesequence==null){
  734. orderlinesequence=BigDecimal.ZERO;
  735. }
  736. //2.加一在赋值进去
  737. tmstruckWeightResultMapper.updateToRoadId(orderlinesequence.add(BigDecimal.valueOf(1)),orderId);
  738. if (i==1){
  739. return i;
  740. }
  741. return 0;
  742. }
  743. }