TmstruckLoadResultServiceImpl.java 37 KB

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