TmstruckLoadResultServiceImpl.java 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661
  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.service.ITmstruckLoadResultService;
  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.math.BigDecimal;
  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 TmstruckReturnResultMapper tmstruckReturnResultMapper;
  37. @Autowired
  38. private UtilsServiceImpl utilsService;
  39. @Autowired
  40. private TmstruckLeaveFactoryResultMapper tmstruckLeaveFactoryResultMapper;
  41. @Autowired
  42. private WmshBoundFeign wmshBoundFeign;
  43. @Autowired
  44. private UtilsMapper utilsMapper;
  45. @Autowired
  46. OmsFeign omsFeign;
  47. @Autowired
  48. private TmstruckWeightResultServiceImpl tmstruckWeightResultService;
  49. @Autowired
  50. private TmstruckMeasureCommissionServiceImpl tmstruckMeasureCommissionService;
  51. /**
  52. * 生成销售装车实绩(虚拟装车实绩)
  53. * @param map
  54. * @return
  55. */
  56. public int addLoadResult(Map<String, Object> map){
  57. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  58. //添加主键Id
  59. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  60. //添加总实绩ID
  61. tmstruckLoadResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  62. // 添加路段顺序号
  63. tmstruckLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("segmentSqe")));
  64. return tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  65. }
  66. /**
  67. * 查询所有装车实绩
  68. * @param map
  69. * @return
  70. */
  71. @Override
  72. public List<Map<String, Object>> getAllLoadResult(Map<String, Object> map) {
  73. Integer orderType = (Integer) map.get("orderTypee");
  74. switch (orderType) {
  75. case 1:
  76. case 2:
  77. case 3:
  78. map.put("status", 0);
  79. return tmstruckLoadResultMapper.getXSLoadResult(map); //apiId = 221
  80. case 4:
  81. return tmstruckLoadResultMapper.getSteelNzLoadResult(map); //apiID: 263
  82. case 5:
  83. break;
  84. case 6:
  85. break;
  86. case 7:
  87. break;
  88. case 8:
  89. return tmstruckLoadResultMapper.getCGJKLoadResult(map); // apiId = 91
  90. case 9:
  91. case 10:
  92. case 20:
  93. return tmstruckLoadResultMapper.getImportedDomesticNzLoadResult(map); //apiId = 353
  94. case 11:
  95. return tmstruckLoadResultMapper.getInFactoryLoadResult(map); //apiId = 359
  96. case 12:
  97. case 13:
  98. case 15:
  99. case 16:
  100. return tmstruckLoadResultMapper.getSporadicSuppliesLoadResult(map); //apiId = 430
  101. }
  102. return null;
  103. }
  104. /**
  105. * 新增采购装车实绩 / 内转装车实绩
  106. * @param map resultMeasuredTonnage :计量吨位 portId:港口ID
  107. * resultLoadStartTime:装车时间 resultIsclear:是否清场
  108. */
  109. @Transactional
  110. public int addCGLoadResult(Map<String,Object> map){
  111. //通过运输订单号 或 运单Id 查询实绩总表ID 此方法在 进厂作业mapper中
  112. Map<String,Object> orderMap = tmstruckEnfactoryResultMapper.selectTotalResultIdByCpAndOn(map);
  113. BigDecimal totalId = (BigDecimal) orderMap.get("resultTotalId");
  114. //通过实绩总表ID查询装车实绩ID
  115. BigDecimal loadResultId = tmstruckLoadResultMapper.getResultId(totalId);
  116. TmstruckLoadResult tmstruckLoadResult = tmstruckLoadResultMapper.selectByPrimaryKey(loadResultId);
  117. //添加主键Id
  118. // tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  119. //新增计量吨位 装车所装的重量
  120. BigDecimal resultMeasuredTonnage = DataChange.dataToBigDecimal(map.get("resultMeasuredTonnage"));
  121. tmstruckLoadResult.setResultMeasuredTonnage(resultMeasuredTonnage);
  122. tmstruckLoadResult.setStatus(new BigDecimal(0));
  123. // tmstruckLoadResult.setResultTotalId(totalId);
  124. String resultIsclear = (String) (map.get("resultIsclear"));
  125. tmstruckLoadResult.setResultIsclear(resultIsclear);
  126. tmstruckLoadResult.setResultLoadEndTime(new Date((long) map.get("resultLoadStartTime")));
  127. tmstruckLoadResult.setInsertUpdateRemark((String) map.get("insertUpdateRemark"));
  128. //根据订单ID查询订单类型
  129. Integer orderType = tmstruckLoadResultMapper.getOrderType(totalId);
  130. if(orderType == 8){
  131. tmstruckLoadResult.setSegmentSqe(new BigDecimal(1));
  132. }
  133. Object portId = map.get("portId"); //获取港口
  134. if(portId != null){
  135. //通过订单ID获取批次Id
  136. BigDecimal batchId = tmstruckLoadResultMapper.getBatchIdByOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
  137. if(batchId != null){
  138. Map<String, Object> hashMap = new HashMap<>();
  139. hashMap.put("batchId", batchId);
  140. hashMap.put("portId", portId);
  141. hashMap.put("resultTonnage",resultMeasuredTonnage);
  142. hashMap.put("isClean", resultIsclear);
  143. wmshBoundFeign.addResult(hashMap);
  144. // 通过港口ID查询仓库表中的港存库ID
  145. BigDecimal warehouseId = tmstruckLoadResultMapper.getWarehouseIdByPortId(DataChange.dataToBigDecimal(portId));
  146. tmstruckLoadResult.setLoadingId(warehouseId); // 添加装货点为港口
  147. }
  148. }
  149. int i = tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  150. String capacityNumber = (String) orderMap.get("capacityNumber");
  151. utilsService.pushMesToWebsocket(capacityNumber,"装货!");
  152. //修改订单状态为执行中 1
  153. // int i1 = utilsService.updateOrderStatus(map, 1);
  154. //修改运力状态为执行中 1
  155. // int i2 = utilsService.updateCapacityStatus(map, 1);
  156. return i ;
  157. }
  158. /**
  159. * 更新装车实绩表
  160. * @return
  161. */
  162. public int updateLoadingId(Map<String, Object> map){
  163. //获取装车实绩Id 订单ID 物资ID
  164. Integer loadResultId = tmstruckLoadResultMapper.getLoadResultId(map);
  165. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  166. tmstruckLoadResult.setResultId(new BigDecimal(loadResultId));
  167. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("loadingId")));
  168. return tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  169. }
  170. /**
  171. * PDA新增销售钢材装车实绩 (如果是多种物资【多拼】,通过物资Id和运输订单号来确定唯一的装车实绩进行修改)
  172. * orderNumber 运输订单号
  173. * insertUpdateRemark 备注 scanText 扫描结果
  174. * @param map
  175. * @return
  176. */
  177. @Transactional
  178. public int addXSLoadResult(Map<String, Object> map){
  179. //通过扫描结果截取物资唯一编码
  180. String scanText = (String) map.get("scanText");
  181. String[] split = scanText.split("-");
  182. String materialOnlyCode = split[7];
  183. //通过物资唯一编码查找物资Id
  184. BigDecimal materialId = tmstruckLoadResultMapper.getMaterialIdByMaterialCode(materialOnlyCode);
  185. //通过运输订单号查找总实绩ID
  186. Map<String,Object> orderMap = tmstruckEnfactoryResultMapper.selectTotalResultIdByCpAndOn(map);
  187. BigDecimal resultTotalId = (BigDecimal) orderMap.get("resultTotalId");
  188. map.put("resultTotalId", resultTotalId.intValue());
  189. //通过总实绩ID与物资ID查找 装车实绩主键ID
  190. Map<String, Object> resultIdMap = tmstruckLoadResultMapper.getLoadResultIdByMIdAndTotalId(resultTotalId.intValue(), materialId.intValue());
  191. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  192. tmstruckLoadResult.setStatus(new BigDecimal(0)); // 添加状态0:正常
  193. //编辑装车实绩主键ID对应的各个字段
  194. tmstruckLoadResult.setResultId(DataChange.dataToBigDecimal(resultIdMap.get("resultId")));
  195. // 获取扫描实绩最小Id 添加扫描开始时间
  196. map.put("materialId", materialId);
  197. Map<String, Object> scanMap = tmstruckLoadResultMapper.getMinScanIdByOrderNum(map);
  198. Date resultLoadStartTime = tmstruckLoadResultMapper.selectLoadTimeByResultId(DataChange.dataToBigDecimal(scanMap.get("resultId")));
  199. tmstruckLoadResult.setResultLoadStartTime(resultLoadStartTime);
  200. // 添加装卸工Id
  201. tmstruckLoadResult.setLoaderId(DataChange.dataToBigDecimal(scanMap.get("loadId")));
  202. // 添加扫描结束时间 以调用当前接口时间为结束时间
  203. Date resultLoadEndTime = new Date();
  204. tmstruckLoadResult.setResultLoadEndTime(resultLoadEndTime);
  205. // 添加装车实绩时长 ---- 计算装车时长
  206. long time = (resultLoadEndTime.getTime() - resultLoadStartTime.getTime()) / 60000; // 分钟
  207. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(time));
  208. //添加装车标准时长
  209. setLoadStandardTimeId((String)map.get("orderNumber"), tmstruckLoadResult);
  210. Object platformName = map.get("platformName");
  211. if(platformName != null){
  212. // 如果月台不为空则更新月台
  213. Integer platformId = utilsService.queryPlatformIdByName((String) platformName);
  214. tmstruckLoadResult.setLoadingId(new BigDecimal(platformId));
  215. }
  216. // 添加备注
  217. tmstruckLoadResult.setInsertUpdateRemark((String) map.get("insertUpdateRemark"));
  218. int i = tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  219. //更新汽车衡
  220. i += tmstruckWeightResultService.calculateTruckCalculate(map, resultTotalId.intValue());
  221. //发送计毛委托 订单类型:1
  222. // map.put("orderTypee", 1);
  223. // tmstruckMeasureCommissionService.addMaoMeasureCommission(map);
  224. return i;
  225. }
  226. /**
  227. * PDA新增销售钢渣、水渣、危化品装车实绩 采购内转
  228. * loadStartTime 装车开始时间
  229. * warehouseId 仓库Id orderNumber 运输订单号 / orderId insertUpdateRemark 备注
  230. * @param map
  231. * @return
  232. */
  233. @Transactional
  234. public int addXS2LoadResult(Map<String, Object> map) throws Exception {
  235. //通过运输订单号查询订单类型
  236. String orderNumber = (String) map.get("orderNumber");
  237. //通过订单号查询订单类型 及总实绩Id
  238. Map<String, Object> mesMap = utilsMapper.getOrderTypeByOrderNumber(orderNumber);
  239. String capacityNumber = (String) mesMap.get("capacityNumber");
  240. BigDecimal orderType = DataChange.dataToBigDecimal(mesMap.get("orderType"));
  241. BigDecimal resultTotalId = DataChange.dataToBigDecimal(mesMap.get("totalId"));
  242. if(orderType.intValue() == 11){
  243. Integer sqe = DataChange.dataToBigDecimal(mesMap.get("Sqe")).intValue();
  244. sqe = sqe + 1;
  245. map.put("resultId",tmstruckLoadResultMapper.selectMaxId());
  246. map.put("Sqe",sqe);//查询路段顺序号+1
  247. map.put("resultTotalId", resultTotalId);
  248. int i =tmstruckLoadResultMapper.insertSelective(generateLoad(map));
  249. //更新路段顺序号
  250. mesMap.put("orderLineSequence",sqe);
  251. utilsService.updateOrderLineSqeByOrderNumber(mesMap);
  252. //推送消息到websocket
  253. utilsService.pushMesToWebsocket(capacityNumber, "装货");
  254. return i;
  255. }
  256. //通过运输订单号 查询 总实绩ID、订单类型
  257. Map<String,Object> orderMap = tmstruckEnfactoryResultMapper.selectTotalResultIdByCpAndOn(map);
  258. //查询装车实绩ID
  259. map.putAll(tmstruckLoadResultMapper.getLoadResultIdByMIdAndTotalId(resultTotalId.intValue(), null));
  260. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  261. tmstruckLoadResult.setResultId(DataChange.dataToBigDecimal(map.get("resultId")));
  262. tmstruckLoadResult.setStatus(new BigDecimal(0));
  263. tmstruckLoadResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  264. //添加装车开始时间
  265. Date loadStartTime = new Date((long) map.get("loadStartTime"));
  266. tmstruckLoadResult.setResultLoadStartTime(loadStartTime);
  267. //添加装车结束时间(当前时间)
  268. Date loadEndTime = new Date();
  269. tmstruckLoadResult.setResultLoadEndTime(loadEndTime);
  270. //计算装车时长 取分钟
  271. long differentTime = (loadEndTime.getTime() - loadStartTime.getTime()) / 60000;
  272. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(differentTime));
  273. if(map.get("personnelSsoId") != null){
  274. //通过SSo主键查询人员管理主键
  275. Integer personnelId = utilsMapper.getPersonnelIdBySsoId((String) map.get("personnelSsoId"));
  276. if(personnelId != null){
  277. tmstruckLoadResult.setLoaderId(new BigDecimal(personnelId));
  278. }
  279. }
  280. // 更新装货点
  281. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("warehouseId")));
  282. //更新路段顺序号
  283. int i = utilsService.updateOrderLineSequence(map);
  284. //判断是否为未装货
  285. if (map.get("insertUpdateRemark")!=null) {
  286. String insertUpdateRemark = (String) map.get("insertUpdateRemark");
  287. if("未装货".equals(insertUpdateRemark)){
  288. loadJudge(orderMap);
  289. }
  290. tmstruckLoadResult.setInsertUpdateRemark(insertUpdateRemark);
  291. }
  292. // if (j == 0) {
  293. // throw new Exception("第二次委托发送失败");
  294. // }
  295. tmstruckLoadResult.setCaseNumber((String) map.get("caseNumber"));
  296. i += tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  297. //推送消息到websocket
  298. utilsService.pushMesToWebsocket(capacityNumber, "装货");
  299. return i;
  300. }
  301. //内转添加装货实绩
  302. private TmstruckLoadResult generateLoad(Map<String, Object> map) {
  303. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  304. tmstruckLoadResult.setId(DataChange.dataToBigDecimal(map.get("resultId")));
  305. tmstruckLoadResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  306. tmstruckLoadResult.setStatus(new BigDecimal(0));
  307. tmstruckLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("Sqe")));
  308. tmstruckLoadResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  309. //添加装车开始时间
  310. Date loadStartTime = new Date((long) map.get("loadStartTime"));
  311. tmstruckLoadResult.setResultLoadStartTime(loadStartTime);
  312. //添加装车结束时间(当前时间)
  313. Date loadEndTime = new Date();
  314. tmstruckLoadResult.setResultLoadEndTime(loadEndTime);
  315. //计算装车时长 取分钟
  316. long differentTime = (loadEndTime.getTime() - loadStartTime.getTime()) / 60000;
  317. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(differentTime));
  318. if(map.get("personnelSsoId") != null){
  319. //通过SSo主键查询人员管理主键
  320. Integer personnelId = utilsMapper.getPersonnelIdBySsoId((String) map.get("personnelSsoId"));
  321. if(personnelId != null){
  322. tmstruckLoadResult.setLoaderId(new BigDecimal(personnelId));
  323. }
  324. }
  325. // 添加装货点
  326. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("warehouseId")));
  327. return tmstruckLoadResult;
  328. }
  329. /**
  330. * 更改最大路段顺序号 -1
  331. * @Author TXF
  332. * @Date 2022/2/13 12:59
  333. * @param map
  334. * @return
  335. **/
  336. @Override
  337. public int loadJudge(Map<String, Object> map) {
  338. BigDecimal orderId =DataChange.dataToBigDecimal(map.get("orderId"));
  339. //查找当前订单共有几次出厂
  340. List<Integer> resultIdList = tmstruckLoadResultMapper.allOutFactoryNum(orderId);
  341. if(resultIdList.size() > 1){
  342. for(int i = 0; i < resultIdList.size() - 1; i ++){
  343. //给最后一次出厂 之外的出厂实绩 赋值出厂时间
  344. TmstruckLeaveFactoryResult tmstruckLeaveFactoryResult = new TmstruckLeaveFactoryResult();
  345. tmstruckLeaveFactoryResult.setResultId(new BigDecimal(resultIdList.get(i)));
  346. tmstruckLeaveFactoryResult.setResultOutMode("未装货出厂");
  347. tmstruckLeaveFactoryResult.setResultOutGateTime(new Date());
  348. tmstruckLeaveFactoryResultMapper.updateByPrimaryKeySelective(tmstruckLeaveFactoryResult);
  349. }
  350. }
  351. return tmstruckLoadResultMapper.updateSqe(orderId);
  352. }
  353. /**
  354. * 添加装车标准时长ID
  355. * @param orderNumber
  356. * @param tmstruckLoadResult
  357. */
  358. public void setLoadStandardTimeId(String orderNumber, TmstruckLoadResult tmstruckLoadResult){
  359. //添加标准时长ID 通过运输订单号查找运输订单类型
  360. Integer orderType = tmstruckLoadResultMapper.selectOrderTypeByOrderNumber(orderNumber);
  361. if(orderType == 1){
  362. tmstruckLoadResult.setLoadStandardTimeId(new BigDecimal(1));
  363. }else if(orderType == 2){
  364. tmstruckLoadResult.setLoadStandardTimeId(new BigDecimal(2));
  365. }else if(orderType == 3){
  366. tmstruckLoadResult.setLoadStandardTimeId(new BigDecimal(3));
  367. }
  368. }
  369. /**
  370. * 修改装车作业
  371. * @param tmstruckLoadResult
  372. * @return
  373. */
  374. @Override
  375. public int updateLoadResult(TmstruckLoadResult tmstruckLoadResult) {
  376. // BigDecimal orderId = tmstruckLoadResultMapper.getOrderId(tmstruckLoadResult.getResultId());
  377. // Map<String , Object> map = new
  378. // omsFeign.pushMesToWebsocket(map);
  379. return tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  380. }
  381. /**
  382. * 通过ID查询装车实绩
  383. *
  384. * @param resultId
  385. * @return
  386. */
  387. @Override
  388. public List<Map<String, Object>> getLoadResultById(Integer resultId) {
  389. return tmstruckLoadResultMapper.getLoadResultById(resultId);
  390. }
  391. /**
  392. * 逻辑删除装车实绩 状态 1
  393. * @param resultId
  394. * @return
  395. */
  396. @Override
  397. public int deleteLoadResult(Integer resultId) {
  398. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  399. tmstruckLoadResult.setResultId(new BigDecimal(resultId));
  400. tmstruckLoadResult.setStatus(new BigDecimal(1));
  401. return tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  402. }
  403. /**
  404. * 修改装车作业点
  405. * @param mapList
  406. * @return
  407. */
  408. @Override
  409. public int updateLoadingIds(List<Map<String, Object>> mapList) {
  410. int i = 0;
  411. //获取所有装车实绩ID
  412. for (Map<String, Object> map : mapList) {
  413. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  414. //通过传过来的物资ID(一个订单中物资ID唯一) 和订单Id 寻找装车实绩ID
  415. Integer resultIdList = tmstruckLoadResultMapper.getLoadResultId(map);
  416. tmstruckLoadResult.setResultId(new BigDecimal(resultIdList));
  417. //获取算出来的装车点
  418. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("loadingId")));
  419. i += tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  420. }
  421. return i;
  422. }
  423. /**
  424. * 查询销售合同装车实绩
  425. * @param map
  426. * @return
  427. */
  428. @Override
  429. public List<Map<String, Object>> selectLoadResultForSale(Map<String, Object> map) {
  430. return tmstruckLoadResultMapper.selectLoadResultForSale(map);
  431. }
  432. /**
  433. * 内转物流,新增装车实绩
  434. */
  435. @Override
  436. public int addLoadResultForconverted(Map<String, Object> map) {
  437. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  438. //设置主键id
  439. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  440. //获取开始时间
  441. Date startTime = (Date) map.get("startTime");
  442. //获取运输订单号
  443. String OrderNumber = map.get("OrderNumber").toString();
  444. Map<String, Object> Map = new HashMap<>();
  445. Map.put("OrderNumber", OrderNumber);
  446. //通过运输订单号查找物资id
  447. List<Map<String, Object>> materialIdList = tmstruckLoadResultMapper.selectMaterialIdByOrderNumber(Map);
  448. //设置物资id
  449. for (int i = 0; i < materialIdList.size(); i++) {
  450. Map<String, Object> map1 = materialIdList.get(i);
  451. Integer materialId = (Integer) map1.get("materialId");
  452. tmstruckLoadResult.setMaterialId(new BigDecimal(materialId));
  453. }
  454. //绑定总实绩id
  455. Map<String, Object> map2 = tmstruckReturnResultMapper.getResultTotalIdByOrderNumber(OrderNumber);
  456. BigDecimal reultTotalId = (BigDecimal) map2.get("resultTotalId");
  457. //设置总实绩id
  458. tmstruckLoadResult.setResultTotalId(reultTotalId);
  459. tmstruckLoadResult.setResultLoadStartTime(startTime);
  460. //获取用户id
  461. Integer personnelId = (Integer) map.get("personnelId");
  462. String personnelName = tmstruckLoadResultMapper.selectPersonNameByPersonnelId(personnelId);
  463. tmstruckLoadResult.setInsertTime(new Date());
  464. tmstruckLoadResult.setInsertUsername(personnelName);
  465. int i = tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  466. return i;
  467. }
  468. //内转物流,修改装车实绩
  469. @Override
  470. public int updateLoadResultForconverted(Map<String, Object> map) {
  471. //获取装车实绩id
  472. //通过运输订单号查找装车实绩
  473. String orderNumber = (String) map.get("orderNumber");
  474. Map<String, Object> map1 = tmstruckLoadResultMapper.selectLoadResultIdByOrderNumber(orderNumber);
  475. //获取结束时间
  476. Integer LoadResultId = (Integer) map1.get("loadResultId");
  477. Date endTime = (Date) map.get("endTime");
  478. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  479. //根据主键id设置装车结束时间
  480. tmstruckLoadResult.setResultId(new BigDecimal(LoadResultId));
  481. tmstruckLoadResult.setResultLoadEndTime(endTime);
  482. //获取装车开始时间
  483. Date startTime = (Date) map1.get("startTime");
  484. //开始时间
  485. long LoadstartTime = startTime.getTime();
  486. long LoadendTime = endTime.getTime();
  487. long time = LoadendTime - LoadstartTime;
  488. long l = time / 1000;
  489. //设置标准时长
  490. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(l));
  491. int i = tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  492. return i;
  493. }
  494. @Override
  495. public Map<String, Object> getLoadResultIdForOrderNumber(String orderNumber) {
  496. return tmstruckLoadResultMapper.selectLoadResultIdByOrderNumber(orderNumber);
  497. }
  498. /**
  499. * 内转物流汽车装货实绩展示
  500. *
  501. * @param map
  502. * @return
  503. */
  504. @Override
  505. public List<Map<String, Object>> selectLoadResultForConverted(Map<String, Object> map) {
  506. return tmstruckLoadResultMapper.selectLoadResultForConverted(map);
  507. }
  508. /**
  509. * 根据实绩id渲染数据
  510. *
  511. * @param resultId
  512. * @return
  513. */
  514. @Override
  515. public List<Map<String, Object>> selectLoadResultByResultId(Integer resultId) {
  516. return tmstruckLoadResultMapper.selectLoadResultByResultId(resultId);
  517. }
  518. /**
  519. * 内转物流新增装车实绩(火车卸货后装车,装车点固定为达州站)
  520. *
  521. * @param map
  522. * @return
  523. */
  524. @Override
  525. public int addLoadResultForConverted(Map<String, Object> map) {
  526. Integer personnelId = (Integer) map.get("personnelId");
  527. String personnelName = tmstruckLoadResultMapper.selectPersonNameByPersonnelId(personnelId);
  528. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  529. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  530. //获取车牌号,物资id以及总实绩id
  531. String capacityNumber = (String) map.get("capacityNumber");
  532. Map<String, Object> map1 = tmstruckLoadResultMapper.selectMaterialIdAndCapacityId(capacityNumber);
  533. BigDecimal materialId = (BigDecimal) map1.get("materialId");
  534. BigDecimal resultTotalId = (BigDecimal) map1.get("resultTotalId");
  535. tmstruckLoadResult.setMaterialId(materialId);
  536. tmstruckLoadResult.setResultTotalId(resultTotalId);
  537. tmstruckLoadResult.setInsertTime(new Date());
  538. //获取装货点
  539. Integer arrivalId = (Integer) map.get("arrivalId");
  540. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(arrivalId));
  541. Date insertTime = (Date) map.get("insertTime");
  542. tmstruckLoadResult.setInsertTime(insertTime);
  543. Integer tonnage = (Integer) map.get("tonnage");
  544. tmstruckLoadResult.setResultMeasuredTonnage(DataChange.dataToBigDecimal(tonnage));
  545. tmstruckLoadResult.setInsertUsername(personnelName);
  546. return tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  547. }
  548. /**
  549. * 查询所有正在排队的销售订单
  550. * @param map
  551. * @return
  552. */
  553. @Override
  554. public List<Map<String, Object>> getSaleOrderOnQueue(Map<String, Object> map) {
  555. return tmstruckLoadResultMapper.getSaleOrderOnQueue(map);
  556. }
  557. /**
  558. * 修改装车点和装车顺序
  559. * @param map
  560. * @return
  561. */
  562. public int updateLoadingIdAndLoadSq(Map<String, Object> map){
  563. //前端传来数据结构类型为 {order: Integer, list: List<Map<String, Object>>}
  564. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  565. List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("list");
  566. int i = 0;
  567. for (Map<String, Object> mesMap : list) {
  568. mesMap.put("orderId", orderId);
  569. //通过物资ID和订单ID查询装车实绩ID
  570. Integer resultId = tmstruckLoadResultMapper.getLoadIdByOrderIdAndMId(mesMap);
  571. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  572. tmstruckLoadResult.setResultId(new BigDecimal(resultId));
  573. //设置装车顺序
  574. tmstruckLoadResult.setLoadingSequence(DataChange.dataToBigDecimal(mesMap.get("serialNumber")));
  575. //设置装车月台
  576. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(mesMap.get("platformId")));
  577. i += tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  578. }
  579. return i;
  580. }
  581. /**
  582. * 新增内转国产矿进口矿装车实绩
  583. * @param map
  584. * @return
  585. */
  586. public int addDaZhouToDaGangLoadResult(Map<String, Object> map){
  587. List<Integer> totalResultIdList = (List<Integer>) map.get("totalResultIdList");
  588. BigDecimal loadingId = DataChange.dataToBigDecimal(map.get("loadingId"));
  589. //添加是否需要质检字段
  590. BigDecimal isdeduct = DataChange.dataToBigDecimal(map.get("isdeduct"));
  591. Date loadTime = new Date((long) map.get("loadTime"));
  592. int count = 0;
  593. for (Integer totalResultId : totalResultIdList) {
  594. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  595. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  596. tmstruckLoadResult.setResultTotalId(new BigDecimal(totalResultId));
  597. tmstruckLoadResult.setLoadingId(loadingId);
  598. tmstruckLoadResult.setIsdeduct(isdeduct);
  599. tmstruckLoadResult.setResultLoadStartTime(loadTime);
  600. tmstruckLoadResult.setStatus(new BigDecimal(0));
  601. tmstruckLoadResult.setInsertTime(new Date());
  602. tmstruckLoadResult.setInsertUsername("admin");
  603. count += tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  604. }
  605. return count;
  606. }
  607. @Override
  608. public List<Map<String, Object>> getCgNzLoadingResult(Map<String, Object> mapval) {
  609. return tmstruckLoadResultMapper.getCgNzLoadingResult(mapval);
  610. }
  611. }