TmstruckLoadResultServiceImpl.java 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657
  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. tmstruckLoadResult.setCaseNumber((String) map.get("caseNumber"));
  293. i += tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  294. //推送消息到websocket
  295. utilsService.pushMesToWebsocket(capacityNumber, "装货");
  296. return i;
  297. }
  298. //内转添加装货实绩
  299. private TmstruckLoadResult generateLoad(Map<String, Object> map) {
  300. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  301. tmstruckLoadResult.setId(DataChange.dataToBigDecimal(map.get("resultId")));
  302. tmstruckLoadResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  303. tmstruckLoadResult.setStatus(new BigDecimal(0));
  304. tmstruckLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("Sqe")));
  305. tmstruckLoadResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  306. //添加装车开始时间
  307. Date loadStartTime = new Date((long) map.get("loadStartTime"));
  308. tmstruckLoadResult.setResultLoadStartTime(loadStartTime);
  309. //添加装车结束时间(当前时间)
  310. Date loadEndTime = new Date();
  311. tmstruckLoadResult.setResultLoadEndTime(loadEndTime);
  312. //计算装车时长 取分钟
  313. long differentTime = (loadEndTime.getTime() - loadStartTime.getTime()) / 60000;
  314. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(differentTime));
  315. if(map.get("personnelSsoId") != null){
  316. //通过SSo主键查询人员管理主键
  317. Integer personnelId = utilsMapper.getPersonnelIdBySsoId((String) map.get("personnelSsoId"));
  318. if(personnelId != null){
  319. tmstruckLoadResult.setLoaderId(new BigDecimal(personnelId));
  320. }
  321. }
  322. // 添加装货点
  323. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("warehouseId")));
  324. return tmstruckLoadResult;
  325. }
  326. /**
  327. * 更改最大路段顺序号 -1
  328. * @Author TXF
  329. * @Date 2022/2/13 12:59
  330. * @param map
  331. * @return
  332. **/
  333. @Override
  334. public int loadJudge(Map<String, Object> map) {
  335. BigDecimal orderId =DataChange.dataToBigDecimal(map.get("orderId"));
  336. //查找当前订单共有几次出厂
  337. List<Integer> resultIdList = tmstruckLoadResultMapper.allOutFactoryNum(orderId);
  338. if(resultIdList.size() > 1){
  339. for(int i = 0; i < resultIdList.size() - 1; i ++){
  340. //给最后一次出厂 之外的出厂实绩 赋值出厂时间
  341. TmstruckLeaveFactoryResult tmstruckLeaveFactoryResult = new TmstruckLeaveFactoryResult();
  342. tmstruckLeaveFactoryResult.setResultId(new BigDecimal(resultIdList.get(i)));
  343. tmstruckLeaveFactoryResult.setResultOutMode("未装货出厂");
  344. tmstruckLeaveFactoryResult.setResultOutGateTime(new Date());
  345. tmstruckLeaveFactoryResultMapper.updateByPrimaryKeySelective(tmstruckLeaveFactoryResult);
  346. }
  347. }
  348. return tmstruckLoadResultMapper.updateSqe(orderId);
  349. }
  350. /**
  351. * 添加装车标准时长ID
  352. * @param orderNumber
  353. * @param tmstruckLoadResult
  354. */
  355. public void setLoadStandardTimeId(String orderNumber, TmstruckLoadResult tmstruckLoadResult){
  356. //添加标准时长ID 通过运输订单号查找运输订单类型
  357. Integer orderType = tmstruckLoadResultMapper.selectOrderTypeByOrderNumber(orderNumber);
  358. if(orderType == 1){
  359. tmstruckLoadResult.setLoadStandardTimeId(new BigDecimal(1));
  360. }else if(orderType == 2){
  361. tmstruckLoadResult.setLoadStandardTimeId(new BigDecimal(2));
  362. }else if(orderType == 3){
  363. tmstruckLoadResult.setLoadStandardTimeId(new BigDecimal(3));
  364. }
  365. }
  366. /**
  367. * 修改装车作业
  368. * @param tmstruckLoadResult
  369. * @return
  370. */
  371. @Override
  372. public int updateLoadResult(TmstruckLoadResult tmstruckLoadResult) {
  373. // BigDecimal orderId = tmstruckLoadResultMapper.getOrderId(tmstruckLoadResult.getResultId());
  374. // Map<String , Object> map = new
  375. // omsFeign.pushMesToWebsocket(map);
  376. return tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  377. }
  378. /**
  379. * 通过ID查询装车实绩
  380. *
  381. * @param resultId
  382. * @return
  383. */
  384. @Override
  385. public List<Map<String, Object>> getLoadResultById(Integer resultId) {
  386. return tmstruckLoadResultMapper.getLoadResultById(resultId);
  387. }
  388. /**
  389. * 逻辑删除装车实绩 状态 1
  390. * @param resultId
  391. * @return
  392. */
  393. @Override
  394. public int deleteLoadResult(Integer resultId) {
  395. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  396. tmstruckLoadResult.setResultId(new BigDecimal(resultId));
  397. tmstruckLoadResult.setStatus(new BigDecimal(1));
  398. return tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  399. }
  400. /**
  401. * 修改装车作业点
  402. * @param mapList
  403. * @return
  404. */
  405. @Override
  406. public int updateLoadingIds(List<Map<String, Object>> mapList) {
  407. int i = 0;
  408. //获取所有装车实绩ID
  409. for (Map<String, Object> map : mapList) {
  410. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  411. //通过传过来的物资ID(一个订单中物资ID唯一) 和订单Id 寻找装车实绩ID
  412. Integer resultIdList = tmstruckLoadResultMapper.getLoadResultId(map);
  413. tmstruckLoadResult.setResultId(new BigDecimal(resultIdList));
  414. //获取算出来的装车点
  415. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("loadingId")));
  416. i += tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  417. }
  418. return i;
  419. }
  420. /**
  421. * 查询销售合同装车实绩
  422. * @param map
  423. * @return
  424. */
  425. @Override
  426. public List<Map<String, Object>> selectLoadResultForSale(Map<String, Object> map) {
  427. return tmstruckLoadResultMapper.selectLoadResultForSale(map);
  428. }
  429. /**
  430. * 内转物流,新增装车实绩
  431. */
  432. @Override
  433. public int addLoadResultForconverted(Map<String, Object> map) {
  434. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  435. //设置主键id
  436. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  437. //获取开始时间
  438. Date startTime = (Date) map.get("startTime");
  439. //获取运输订单号
  440. String OrderNumber = map.get("OrderNumber").toString();
  441. Map<String, Object> Map = new HashMap<>();
  442. Map.put("OrderNumber", OrderNumber);
  443. //通过运输订单号查找物资id
  444. List<Map<String, Object>> materialIdList = tmstruckLoadResultMapper.selectMaterialIdByOrderNumber(Map);
  445. //设置物资id
  446. for (int i = 0; i < materialIdList.size(); i++) {
  447. Map<String, Object> map1 = materialIdList.get(i);
  448. Integer materialId = (Integer) map1.get("materialId");
  449. tmstruckLoadResult.setMaterialId(new BigDecimal(materialId));
  450. }
  451. //绑定总实绩id
  452. Map<String, Object> map2 = tmstruckReturnResultMapper.getResultTotalIdByOrderNumber(OrderNumber);
  453. BigDecimal reultTotalId = (BigDecimal) map2.get("resultTotalId");
  454. //设置总实绩id
  455. tmstruckLoadResult.setResultTotalId(reultTotalId);
  456. tmstruckLoadResult.setResultLoadStartTime(startTime);
  457. //获取用户id
  458. Integer personnelId = (Integer) map.get("personnelId");
  459. String personnelName = tmstruckLoadResultMapper.selectPersonNameByPersonnelId(personnelId);
  460. tmstruckLoadResult.setInsertTime(new Date());
  461. tmstruckLoadResult.setInsertUsername(personnelName);
  462. int i = tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  463. return i;
  464. }
  465. //内转物流,修改装车实绩
  466. @Override
  467. public int updateLoadResultForconverted(Map<String, Object> map) {
  468. //获取装车实绩id
  469. //通过运输订单号查找装车实绩
  470. String orderNumber = (String) map.get("orderNumber");
  471. Map<String, Object> map1 = tmstruckLoadResultMapper.selectLoadResultIdByOrderNumber(orderNumber);
  472. //获取结束时间
  473. Integer LoadResultId = (Integer) map1.get("loadResultId");
  474. Date endTime = (Date) map.get("endTime");
  475. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  476. //根据主键id设置装车结束时间
  477. tmstruckLoadResult.setResultId(new BigDecimal(LoadResultId));
  478. tmstruckLoadResult.setResultLoadEndTime(endTime);
  479. //获取装车开始时间
  480. Date startTime = (Date) map1.get("startTime");
  481. //开始时间
  482. long LoadstartTime = startTime.getTime();
  483. long LoadendTime = endTime.getTime();
  484. long time = LoadendTime - LoadstartTime;
  485. long l = time / 1000;
  486. //设置标准时长
  487. tmstruckLoadResult.setResultLoadDuration(new BigDecimal(l));
  488. int i = tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  489. return i;
  490. }
  491. @Override
  492. public Map<String, Object> getLoadResultIdForOrderNumber(String orderNumber) {
  493. return tmstruckLoadResultMapper.selectLoadResultIdByOrderNumber(orderNumber);
  494. }
  495. /**
  496. * 内转物流汽车装货实绩展示
  497. *
  498. * @param map
  499. * @return
  500. */
  501. @Override
  502. public List<Map<String, Object>> selectLoadResultForConverted(Map<String, Object> map) {
  503. return tmstruckLoadResultMapper.selectLoadResultForConverted(map);
  504. }
  505. /**
  506. * 根据实绩id渲染数据
  507. *
  508. * @param resultId
  509. * @return
  510. */
  511. @Override
  512. public List<Map<String, Object>> selectLoadResultByResultId(Integer resultId) {
  513. return tmstruckLoadResultMapper.selectLoadResultByResultId(resultId);
  514. }
  515. /**
  516. * 内转物流新增装车实绩(火车卸货后装车,装车点固定为达州站)
  517. *
  518. * @param map
  519. * @return
  520. */
  521. @Override
  522. public int addLoadResultForConverted(Map<String, Object> map) {
  523. Integer personnelId = (Integer) map.get("personnelId");
  524. String personnelName = tmstruckLoadResultMapper.selectPersonNameByPersonnelId(personnelId);
  525. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  526. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  527. //获取车牌号,物资id以及总实绩id
  528. String capacityNumber = (String) map.get("capacityNumber");
  529. Map<String, Object> map1 = tmstruckLoadResultMapper.selectMaterialIdAndCapacityId(capacityNumber);
  530. BigDecimal materialId = (BigDecimal) map1.get("materialId");
  531. BigDecimal resultTotalId = (BigDecimal) map1.get("resultTotalId");
  532. tmstruckLoadResult.setMaterialId(materialId);
  533. tmstruckLoadResult.setResultTotalId(resultTotalId);
  534. tmstruckLoadResult.setInsertTime(new Date());
  535. //获取装货点
  536. Integer arrivalId = (Integer) map.get("arrivalId");
  537. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(arrivalId));
  538. Date insertTime = (Date) map.get("insertTime");
  539. tmstruckLoadResult.setInsertTime(insertTime);
  540. Integer tonnage = (Integer) map.get("tonnage");
  541. tmstruckLoadResult.setResultMeasuredTonnage(DataChange.dataToBigDecimal(tonnage));
  542. tmstruckLoadResult.setInsertUsername(personnelName);
  543. return tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  544. }
  545. /**
  546. * 查询所有正在排队的销售订单
  547. * @param map
  548. * @return
  549. */
  550. @Override
  551. public List<Map<String, Object>> getSaleOrderOnQueue(Map<String, Object> map) {
  552. return tmstruckLoadResultMapper.getSaleOrderOnQueue(map);
  553. }
  554. /**
  555. * 修改装车点和装车顺序
  556. * @param map
  557. * @return
  558. */
  559. public int updateLoadingIdAndLoadSq(Map<String, Object> map){
  560. //前端传来数据结构类型为 {order: Integer, list: List<Map<String, Object>>}
  561. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  562. List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("list");
  563. int i = 0;
  564. for (Map<String, Object> mesMap : list) {
  565. mesMap.put("orderId", orderId);
  566. //通过物资ID和订单ID查询装车实绩ID
  567. Integer resultId = tmstruckLoadResultMapper.getLoadIdByOrderIdAndMId(mesMap);
  568. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  569. tmstruckLoadResult.setResultId(new BigDecimal(resultId));
  570. //设置装车顺序
  571. tmstruckLoadResult.setLoadingSequence(DataChange.dataToBigDecimal(mesMap.get("serialNumber")));
  572. //设置装车月台
  573. tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(mesMap.get("platformId")));
  574. i += tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
  575. }
  576. return i;
  577. }
  578. /**
  579. * 新增内转国产矿进口矿装车实绩
  580. * @param map
  581. * @return
  582. */
  583. public int addDaZhouToDaGangLoadResult(Map<String, Object> map){
  584. List<Integer> totalResultIdList = (List<Integer>) map.get("totalResultIdList");
  585. BigDecimal loadingId = DataChange.dataToBigDecimal(map.get("loadingId"));
  586. //添加是否需要质检字段
  587. BigDecimal isdeduct = DataChange.dataToBigDecimal(map.get("isdeduct"));
  588. Date loadTime = new Date((long) map.get("loadTime"));
  589. int count = 0;
  590. for (Integer totalResultId : totalResultIdList) {
  591. TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
  592. tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
  593. tmstruckLoadResult.setResultTotalId(new BigDecimal(totalResultId));
  594. tmstruckLoadResult.setLoadingId(loadingId);
  595. tmstruckLoadResult.setIsdeduct(isdeduct);
  596. tmstruckLoadResult.setResultLoadStartTime(loadTime);
  597. tmstruckLoadResult.setStatus(new BigDecimal(0));
  598. tmstruckLoadResult.setInsertTime(new Date());
  599. tmstruckLoadResult.setInsertUsername("admin");
  600. count += tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
  601. }
  602. return count;
  603. }
  604. @Override
  605. public List<Map<String, Object>> getCgNzLoadingResult(Map<String, Object> mapval) {
  606. return tmstruckLoadResultMapper.getCgNzLoadingResult(mapval);
  607. }
  608. }