TmstruckMeasureCommissionServiceImpl.java 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839
  1. package com.steerinfo.dil.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.steerinfo.dil.mapper.*;
  5. import com.steerinfo.dil.model.MeasureJsonData;
  6. import com.steerinfo.dil.model.TmstruckMeasureCommission;
  7. import com.steerinfo.dil.model.TmstruckTareReturnResult;
  8. import com.steerinfo.dil.service.ITmstruckMeasureCommissionService;
  9. import com.steerinfo.dil.util.DataChange;
  10. import com.steerinfo.dil.util.HTTPRequestUtils;
  11. import com.steerinfo.dil.util.getRequestUtils;
  12. import io.swagger.models.auth.In;
  13. import org.apache.poi.ss.formula.functions.T;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import java.io.IOException;
  18. import java.math.BigDecimal;
  19. import java.net.Inet4Address;
  20. import java.util.*;
  21. /**
  22. * TmstruckMeasureCommission服务实现:
  23. * @author generator
  24. * @version 1.0-SNAPSHORT 2021-09-09 10:28
  25. * 类描述
  26. * 修订历史:
  27. * 日期:2021-09-09
  28. * 作者:generator
  29. * 参考:
  30. * 描述:TmstruckMeasureCommission服务实现
  31. * @see null
  32. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  33. */
  34. @Service(value = "tmstruckMeasureCommissionService")
  35. public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCommissionService{
  36. @Autowired
  37. private TmstruckMeasureCommissionMapper tmstruckMeasureCommissionMapper;
  38. @Autowired
  39. private RulesMapper rulesMapper;
  40. @Autowired
  41. private UtilsMapper utilsMapper;
  42. @Autowired
  43. private RulesServiceImpl rulesService;
  44. @Autowired
  45. private MeasureJsonDataMapper measureJsonDataMapper;
  46. @Autowired
  47. private TmstruckTareReturnResultMapper tmstruckTareReturnResultMapper;
  48. private static final String daGangUrl = "http://172.16.33.122:44325/api/logistics/TareApplyFor";
  49. private static final String dagangUrlForLoad = "http://172.16.33.122:44325/api/logistics/modifyLoadPlace";
  50. private static final String liuPiUrl = "http://172.16.33.122:44325/api/logistics/updateTareWeight";
  51. private static final String daXingUrl = "http://172.16.59.251:8121/daXingWeight/OrderBusiness/addOrder.do";
  52. //给达钢发送委托
  53. private static final List<Integer> judgeDaGangNum = Arrays.asList(5, 6, 8, 11, 17,15,16,23);
  54. //给达兴发委托
  55. private static final List<Integer> judgeDaXinNum = Arrays.asList(7, 18,24);
  56. //销售焦炭、化产品 判断一厂二厂委托
  57. private static final String judgeCoke = "一厂";
  58. //根据门来判断委托发送依据
  59. public static final List<Integer> daGangGatepost = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 14);
  60. public static final List<Integer> daXingGatepost = Arrays.asList(8, 9, 10, 11, 12, 13);
  61. /**
  62. * 根据门岗发送委托
  63. * @Author TXF
  64. * @Date 2022/3/15 11:14
  65. * @param map
  66. * @return
  67. **/
  68. public int sendMeasureCommissionByGatepost(Map<String, Object> map){
  69. int gatepostId = DataChange.dataToBigDecimal(map.get("gatepostId")).intValue();
  70. if(daGangGatepost.contains(gatepostId)){ //给达钢发送委托
  71. return sendMeasureCommissionMes(map);
  72. }else if(daXingGatepost.contains(gatepostId)){ //给达兴发送委托
  73. return sendDXMeasureCommissionMes(map);
  74. }
  75. return -2; //返回-2为没有获取到门岗ID
  76. }
  77. //添加装货点发送委托给计量
  78. @Override
  79. public int addMeasureCommissionForLoding(Map<String, Object> map) throws Exception {
  80. int i = 0;
  81. // if (map.get("status")!=null) {
  82. // List<Map<String, Object>> mapList = tmstruckMeasureCommissionMapper.getLoadMeasure();
  83. // for (Map<String, Object> map1 : mapList) {
  84. String loadingPace = (String) map.get("warehouseName");
  85. String url = "http://172.16.33.122:44325/api/logistics/modifyLoadPlace";
  86. String ysdd = (String) map.get("orderNumber");
  87. String memo = (String) map.get("insertUpdateRemark");
  88. String sendUrl = url + "?ysdd=" + ysdd + "&loadingPace=" + loadingPace;
  89. if (memo != null) {
  90. sendUrl += "&memo=" + memo;
  91. }
  92. String jsonData = getRequestUtils.doGet(sendUrl);
  93. System.out.println(sendUrl);
  94. System.out.println("委托已发送" + jsonData);
  95. MeasureJsonData measureJsonData = new MeasureJsonData();
  96. BigDecimal measureId = measureJsonDataMapper.selectMaxId();
  97. //设置主键id
  98. measureJsonData.setMeasureId(measureId);
  99. //老厂区报文
  100. measureJsonData.setMeasureTypeId(new BigDecimal(1));
  101. measureJsonData.setMeasureJsonData(jsonData);
  102. measureJsonData.setMeasureJsonUrl(sendUrl);
  103. measureJsonData.setWarehouseName(loadingPace);
  104. measureJsonData.setOrderNumber(ysdd);
  105. i = measureJsonDataMapper.insertSelective(measureJsonData);
  106. // }
  107. // }
  108. return i;
  109. }
  110. /**
  111. * 查询计量委托 0 :计皮 1:计毛
  112. * @param map orderTypee 订单类型 type 是计皮还是计毛
  113. * @return
  114. */
  115. @Override
  116. public List<Map<String, Object>> getAllMeasureCommission(Map<String, Object> map) {
  117. return null;
  118. }
  119. /**
  120. * 添加计量委托 并发送采购订单计量委托
  121. * @param map {orderTypee: 订单类型
  122. * resultTotalId:总实绩ID orderId: 订单ID
  123. * 总实绩ID }
  124. * @return
  125. */
  126. public int addMaoMeasureCommission(Map<String, Object> map){
  127. int i = 0;
  128. //发送数据给计量系统 必要数据 orderTypee:订单类型 resultTotalId: 总实绩Id orderId
  129. int orderType = DataChange.dataToBigDecimal(map.get("orderTypee")).intValue();
  130. if(orderType == 10){
  131. //获取当前订单是属于哪个厂区订单
  132. Integer receiveId = tmstruckMeasureCommissionMapper.getReceiveIdByRequirementOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
  133. if(receiveId == 1){
  134. i = sendMeasureCommissionMes(map); //发送委托给达州钢铁
  135. }else if(receiveId == 2) {
  136. i = sendDXMeasureCommissionMes(map); //发送委托给达兴能源
  137. }
  138. }else if(judgeDaGangNum.contains(orderType)){
  139. //发送委托给达州钢铁
  140. i = sendMeasureCommissionMes(map);
  141. }else if(judgeDaXinNum.contains(orderType)) {
  142. //发送委托给达兴能源
  143. i = sendDXMeasureCommissionMes(map);
  144. }
  145. return i;
  146. }
  147. /**
  148. * 发送销售订单计量委托
  149. * @param map
  150. * @return
  151. */
  152. public int addXSMeasureCommission(Map<String, Object> map){
  153. int i = 0;
  154. //发送数据给计量系统 必要数据 orderTypee:订单类型 resultTotalId: 总实绩Id orderId
  155. //获取当前订单是属于哪个厂区订单
  156. Map<String, Object> mesMap = tmstruckMeasureCommissionMapper.getShipperIdByOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
  157. if(mesMap.get("saleWarehouse") != null){
  158. String saleWarehouse = String.valueOf(mesMap.get("saleWarehouse"));
  159. if(saleWarehouse.contains(judgeCoke)){ //如果是一厂焦炭库则向达钢发送委托
  160. map.put("isDG", "1"); //标识为老厂区
  161. return sendMeasureCommissionMes(map);
  162. }
  163. }
  164. int shipperId = DataChange.dataToBigDecimal(mesMap.get("shipperId")).intValue();
  165. if(shipperId == 1){
  166. //发送委托给达州钢铁
  167. i += sendMeasureCommissionMes(map);
  168. }
  169. if(shipperId == 2) {
  170. //发送委托给达兴能源
  171. i += sendDXMeasureCommissionMes(map);
  172. }
  173. return i;
  174. }
  175. /**
  176. * 发送钢材销售委托:只有老厂区有钢材
  177. * @param map
  178. * @return
  179. */
  180. public int addSteelMeasureCommission(Map<String, Object> map){
  181. Map<String, Object> measureCommission = null;
  182. if(map.get("firstMC") != null){ //进厂发送空委托
  183. measureCommission = new HashMap<>();
  184. measureCommission.put("flowTo","出厂钢材");
  185. measureCommission.put("carNum", map.get("capacityNumber"));
  186. measureCommission.put("transportNum", map.get("orderNumber"));
  187. }else {
  188. measureCommission = tmstruckMeasureCommissionMapper.getSteelMeasureCommission(map);
  189. measureCommission.put("isDel", false);
  190. measureCommission.put("isInsert", true);
  191. measureCommission.put("isRelationEAS", true);
  192. measureCommission.put("flowTo", "出厂钢材");
  193. measureCommission.put("numberOfFurnaces",map.get("numberOfFurnaces"));
  194. Object isPoundSale = measureCommission.get("isPoundSale");
  195. measureCommission.remove("isPoundSale");
  196. if(isPoundSale != null){
  197. if(DataChange.dataToBigDecimal(isPoundSale).intValue() == 0){
  198. measureCommission.put("deliveryMethod", "磅重");
  199. }else {
  200. measureCommission.put("deliveryMethod", "理重");
  201. }
  202. }else {
  203. String materiaName = (String) measureCommission.get("materiaName");
  204. if(materiaName.contains("盘螺")){ //如果名字中包含盘螺则为磅重交货
  205. measureCommission.put("deliveryMethod", "磅重");
  206. }else {
  207. measureCommission.put("deliveryMethod", "理重");
  208. }
  209. }
  210. //查询已经计量物资
  211. //Integer materialNum = tmstruckMeasureCommissionMapper.getAlreadyWeightMaterialNum(DataChange.dataToBigDecimal(map.get("orderId")));
  212. //查询有净重的条数,如果有净重的条数为0,则为false,否则发true
  213. Integer materialNum = tmstruckMeasureCommissionMapper.getNoNetWeight(DataChange.dataToBigDecimal(map.get("orderId")));
  214. if(materialNum == 0){
  215. measureCommission.put("IsAssembly", false);
  216. }else {
  217. measureCommission.put("IsAssembly", true);
  218. }
  219. }
  220. System.out.println(measureCommission);
  221. return sendMesToMeasure(measureCommission);
  222. }
  223. /**
  224. * 添加零星物资计量委托
  225. * @param map
  226. * @return
  227. */
  228. public int addLXMeasureCommission(Map<String, Object> map){
  229. int orderType = DataChange.dataToBigDecimal(map.get("orderTypee")).intValue();
  230. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  231. int i = 0;
  232. if(orderType == 12) {
  233. //查询进厂收货单位
  234. Integer receiveId = tmstruckMeasureCommissionMapper.getLxRealReceiveIdByOrderId(orderId);
  235. if(receiveId == 1){
  236. //给达钢发送委托
  237. i = sendMeasureCommissionMes(map);
  238. }else if(receiveId == 2){
  239. //给达兴发送委托
  240. i = sendDXMeasureCommissionMes(map);
  241. }
  242. }else if(orderType == 13){
  243. Integer sendId = tmstruckMeasureCommissionMapper.getLxRealSendUnitIdByOrderId(orderId);
  244. if(sendId == 1){
  245. i = sendMeasureCommissionMes(map);
  246. }else if(sendId == 2){
  247. i = sendDXMeasureCommissionMes(map);
  248. }
  249. }else if(orderType == 15){
  250. //进厂,收货单位
  251. //如果是15类型的订单寻找订单父级发货单位 (现只有进厂)
  252. Integer receiveId = tmstruckMeasureCommissionMapper.getLxRealReceiveIdByOrderId(orderId);
  253. if(receiveId == 1){
  254. i = sendMeasureCommissionMes(map);
  255. }else if (receiveId == 2){
  256. i = sendDXMeasureCommissionMes(map);
  257. }
  258. }else if(orderType == 16){
  259. //出厂,发货单位
  260. Integer sendUnitId = tmstruckMeasureCommissionMapper.getLxRealSendUnitIdByOrderId(orderId);
  261. if(sendUnitId == 1){
  262. i = sendMeasureCommissionMes(map);
  263. }else if (sendUnitId == 2){
  264. i = sendDXMeasureCommissionMes(map);
  265. }
  266. }
  267. else if(orderType == 20) {//内转零星进厂
  268. //查询还未计量实绩
  269. Integer noNetWeightResult = rulesMapper.getNoNetWeightResult(orderId);
  270. if(noNetWeightResult != 2){
  271. i = sendMeasureCommissionMes(map);
  272. }else {
  273. i = sendDXMeasureCommissionMes(map);//如果有两条没有净重的实绩则需要给达兴发委托 否则给达钢发委托
  274. }
  275. }
  276. return i;
  277. }
  278. /**
  279. * 新增计毛、计皮委托
  280. * @return
  281. */
  282. @Override
  283. public int addMeasureCommission(Map<String, Object> map) {
  284. TmstruckMeasureCommission tmstruckMeasureCommission = new TmstruckMeasureCommission();
  285. //生成主键Id
  286. tmstruckMeasureCommission.setCommssionId(tmstruckMeasureCommissionMapper.selectMaxId());
  287. //添加物资ID
  288. tmstruckMeasureCommission.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  289. //添加汽车衡Id
  290. if(map.get("grossPlaceId") != null){
  291. tmstruckMeasureCommission.setCalculateId(DataChange.dataToBigDecimal(map.get("grossPlaceId")));
  292. }
  293. if(map.get("tarePlaceId") != null){
  294. tmstruckMeasureCommission.setCalculateId(DataChange.dataToBigDecimal(map.get("tarePlaceId")));
  295. }
  296. //添加实绩总表Id
  297. tmstruckMeasureCommission.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  298. tmstruckMeasureCommission.setInsertTime(new Date());
  299. tmstruckMeasureCommission.setInsertUsername("admin");
  300. return tmstruckMeasureCommissionMapper.insertSelective(tmstruckMeasureCommission);
  301. }
  302. /**
  303. * 查询计量委托并向计量系统发送数据 调用他们接口 (老厂区)
  304. * 1:销售订单;2:焦炭发运计划;3:水渣发运计划;4:内转到异地库;5:采购辅料订单;6:采购老区燃料订单;
  305. * 7:采购新区燃料订单;8:采购进口矿(万州-厂内);9:采购内转(达州-厂内);10:采购内转(老区-厂内); 11:厂内内转
  306. * @param map orderTypee 订单类型 type 计皮0还是计毛1类型 orderId 订单ID
  307. */
  308. public int sendMeasureCommissionMes(Map<String, Object> map){
  309. Map<String, Object> measureCommission = null;
  310. //查询计量委托
  311. int orderType = DataChange.dataToBigDecimal(map.get("orderTypee")).intValue();
  312. switch (orderType){
  313. case 1:
  314. break;
  315. case 2:
  316. measureCommission=tmstruckMeasureCommissionMapper.selectXsMeasuresion(map);
  317. if(measureCommission == null){
  318. return 0;
  319. }
  320. measureCommission.put("isRelationEAS",true);
  321. measureCommission.put("flowTo","出厂");
  322. measureCommission.put("isDel", false);
  323. measureCommission.put("isInsert", true);
  324. measureCommission.put("IsAssembly", false);
  325. measureCommission.put("deliveryMethod", "磅重");
  326. measureCommission.put("packagesNum", 0);
  327. if(map.get("isDG") != null){
  328. measureCommission.put("factory", "dg");
  329. }
  330. break;
  331. case 5:
  332. case 6:
  333. case 8:
  334. case 17:
  335. measureCommission = tmstruckMeasureCommissionMapper.purchaseMeasure(map);
  336. if(measureCommission == null){
  337. return 0;
  338. }
  339. measureCommission.put("isRelationEAS", true);
  340. measureCommission.put("flowTo", "进厂");
  341. measureCommission.put("isDel", false);
  342. measureCommission.put("isInsert", true);
  343. measureCommission.put("IsAssembly", false);
  344. measureCommission.put("deliveryMethod", "磅重");
  345. measureCommission.put("packagesNum", 0);
  346. break;
  347. case 11:
  348. //纯内转发送计量委托
  349. measureCommission = tmstruckMeasureCommissionMapper.purchaseNzMeasure(map);
  350. if(measureCommission == null){
  351. return 0;
  352. }
  353. if(map.get("deletedCommission") != null){
  354. measureCommission.put("isDel", true);
  355. measureCommission.put("isInsert", false);
  356. }else {
  357. measureCommission.put("isDel", false);
  358. measureCommission.put("isInsert", true);
  359. }
  360. measureCommission.put("isRelationEAS", false);
  361. measureCommission.put("flowTo", "中转");
  362. measureCommission.put("IsAssembly", false);
  363. measureCommission.put("deliveryMethod", "磅重");
  364. measureCommission.put("packagesNum", 0);
  365. System.out.println(measureCommission);
  366. break;
  367. case 12:
  368. case 13: //零星进厂、出厂
  369. case 14:
  370. case 19:
  371. measureCommission = tmstruckMeasureCommissionMapper.sproadicMeasure(map);
  372. if(measureCommission == null){
  373. return 0;
  374. }
  375. measureCommission.put("steelyardNum", "null");
  376. measureCommission.put("demo", "无");
  377. measureCommission.put("isRelationEAS",false);
  378. if(orderType == 12){
  379. measureCommission.put("flowTo","进厂");
  380. }else if(orderType == 13){
  381. measureCommission.put("flowTo","出厂");
  382. }else if(orderType == 14){
  383. //查询还有几次未计量实绩
  384. BigDecimal resultTotalId = DataChange.dataToBigDecimal(map.get("resultTotalId"));
  385. Integer count = tmstruckMeasureCommissionMapper.selectNoNetWeightResult(resultTotalId);
  386. if(count > 1){ //第一次进厂
  387. measureCommission.put("materiaName", measureCommission.get("materiaName") + "(出)");
  388. }else { //第二次进厂
  389. measureCommission.put("materiaName", measureCommission.get("materiaName") + "(入)");
  390. }
  391. measureCommission.put("flowTo","中转");
  392. }else{
  393. measureCommission.put("flowTo","退货");
  394. }
  395. measureCommission.put("isDel", false);
  396. measureCommission.put("isInsert", true);
  397. measureCommission.put("deliveryMethod", "磅重");
  398. measureCommission.put("packagesNum", 0);
  399. break;
  400. case 20://采购内转委托总厂区
  401. case 15:
  402. case 16:
  403. case 23:
  404. measureCommission=tmstruckMeasureCommissionMapper.purchaseXqCgNzMeasure(map);
  405. if(measureCommission == null){
  406. return 0;
  407. }
  408. if(orderType == 16){
  409. measureCommission.put("factory","dg");
  410. }
  411. measureCommission.put("isRelationEAS",false);
  412. measureCommission.put("flowTo","进厂");
  413. measureCommission.put("isDel",false);
  414. measureCommission.put("isInsert",true);
  415. measureCommission.put("deliveryMethod", "磅重");
  416. measureCommission.put("packagesNum", 0);
  417. }
  418. if(measureCommission != null){
  419. map.put("materialId", measureCommission.get("materialId"));
  420. }
  421. addMeasureCommission(map); // 添加计量委托
  422. /*访问接口发送数据*/
  423. return sendMesToMeasure(measureCommission);
  424. // return 1;
  425. }
  426. /**
  427. * 发送计量委托给达兴能源 计量
  428. * @param map
  429. * @return
  430. */
  431. public int sendDXMeasureCommissionMes(Map<String, Object> map){
  432. Map<String, Object> measureCommission = null;
  433. //查询计量委托
  434. Integer orderType = DataChange.dataToBigDecimal(map.get("orderTypee")).intValue();
  435. switch (orderType){
  436. case 1:
  437. case 2:
  438. case 3:
  439. measureCommission = tmstruckMeasureCommissionMapper.saleDXMeasure(map); //订单ID 物资ID 计量实绩ID
  440. if(measureCommission == null)
  441. return 0;
  442. measureCommission.put("deliveryType", "计重");
  443. measureCommission.put("billType", "1");
  444. measureCommission.put("crname", "admin");
  445. measureCommission.put("ended", "0");
  446. break;
  447. case 7:
  448. case 18:
  449. measureCommission = tmstruckMeasureCommissionMapper.purchaseDXMeasure(map);
  450. if(measureCommission == null)
  451. return 0;
  452. measureCommission.put("deliveryType", "计重");
  453. measureCommission.put("billType", "0");
  454. measureCommission.put("crname", "admin");
  455. measureCommission.put("ended", "0");
  456. break;
  457. case 10:
  458. case 20:
  459. case 24:
  460. //新区采购内转
  461. measureCommission = tmstruckMeasureCommissionMapper.purchaseXqCgNzDXMeasure(map);
  462. if(measureCommission == null)
  463. return 0;
  464. measureCommission.put("deliveryType", "计重");
  465. measureCommission.put("crname", "admin");
  466. //判断还没有净重的计量实绩
  467. Integer weightResultCount = tmstruckMeasureCommissionMapper.selectNoNetWeightResult(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  468. if(weightResultCount == 1){
  469. //如果只剩一条未计量的数据则需要走金蝶(进厂卸货)
  470. measureCommission.put("orderSource", measureCommission.get("chooseOrderSource"));
  471. measureCommission.put("billType", "0");
  472. measureCommission.put("item", measureCommission.get("item") + ",1");
  473. measureCommission.put("goodsName",measureCommission.get("goodsName") + "null");
  474. }else {
  475. measureCommission.put("orderSource", "0");
  476. measureCommission.put("billType", "2");
  477. }
  478. measureCommission.put("ended", "0");
  479. break;
  480. case 12: // 零星订单
  481. case 13:
  482. case 14:
  483. measureCommission = tmstruckMeasureCommissionMapper.sporadicDXMeasure(map);
  484. if(measureCommission == null)
  485. return 0;
  486. if(orderType == 14){
  487. Integer count = tmstruckMeasureCommissionMapper.selectNoNetWeightResult(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  488. if(count > 1){ //第一次进厂
  489. measureCommission.put("goodsName", measureCommission.get("goodsName") + "(出)");
  490. }else {//第二次进厂
  491. measureCommission.put("item", measureCommission.get("item") + ",1");
  492. measureCommission.put("goodsName", measureCommission.get("goodsName") + "(入)");
  493. }
  494. }
  495. measureCommission.put("regionName", "无法确定汽车衡"); //无法确定汽车衡
  496. measureCommission.put("deliveryType", "计重");
  497. measureCommission.put("billType", "2");
  498. measureCommission.put("planQuantity", "0");
  499. measureCommission.put("crname", "admin");
  500. measureCommission.put("orderSource", "0");
  501. measureCommission.put("ended", "0");
  502. break;
  503. }
  504. if(measureCommission != null)
  505. map.put("materialId", measureCommission.get("item"));
  506. addMeasureCommission(map); // 添加计量委托
  507. // System.out.println(measureCommission);
  508. // return 1;
  509. /*访问接口发送数据*/
  510. return sendMesToDXMeasure(measureCommission);
  511. }
  512. /**
  513. *
  514. * 访问老厂区计量接口方法
  515. * @param map
  516. * @return
  517. */
  518. public int sendMesToMeasure(Map<String, Object> map){
  519. List<Map<String, Object>> sendMap = new ArrayList<>();
  520. sendMap.add(map);
  521. JSONObject jsonObject = new JSONObject();
  522. jsonObject.put("data", sendMap);
  523. String jsonData = null;
  524. try {
  525. jsonData = HTTPRequestUtils.send(daGangUrl, jsonObject, "utf-8");
  526. } catch (IOException e) {
  527. e.printStackTrace();
  528. }
  529. if(!"null".equals(jsonData)){
  530. System.out.println(jsonData);
  531. HashMap hashMap = JSON.parseObject(jsonData, HashMap.class);
  532. boolean success = (boolean) hashMap.get("success");
  533. System.out.println(hashMap.get("msg"));
  534. if(success){
  535. return 1;
  536. }
  537. }else{
  538. System.out.println("委托发送失败:" + jsonData);
  539. }
  540. return 0;
  541. }
  542. // /**
  543. // *
  544. // * 访问老厂区计量接口方法
  545. // * @param ysdd
  546. // * @param loadingPace
  547. // * @return
  548. // */
  549. // public int sendUpdateLoadPlaceMeasure(String ysdd,String loadingPace){
  550. //// List<Map<String, Object>> sendMap = new ArrayList<>();
  551. //// sendMap.add(map);
  552. //// JSONObject jsonObject = new JSONObject();
  553. //// jsonObject.put("data", sendMap);
  554. // String jsonData = null;
  555. // try {
  556. //// jsonData = HTTPRequestUtils.send(dagangUrlForLoad, jsonObject, "utf-8");
  557. //
  558. // } catch (IOException e) {
  559. // e.printStackTrace();
  560. // }
  561. // if(!"null".equals(jsonData)){
  562. // System.out.println(jsonData);
  563. // HashMap hashMap = JSON.parseObject(jsonData, HashMap.class);
  564. // boolean success = (boolean) hashMap.get("success");
  565. // System.out.println(hashMap.get("msg"));
  566. // if(success){
  567. // return 1;
  568. // }
  569. // }else{
  570. // System.out.println("委托发送失败:" + jsonData);
  571. // }
  572. // return 0;
  573. // }
  574. /**
  575. * 访问新厂区达兴能源计量接口方法
  576. * @param map
  577. * @return
  578. */
  579. public int sendMesToDXMeasure(Map<String, Object> map){
  580. JSONObject jsonObject = new JSONObject();
  581. jsonObject.putAll(map);
  582. String jsonData = null;
  583. try {
  584. jsonData = HTTPRequestUtils.send(daXingUrl, jsonObject, "utf-8");
  585. } catch (IOException e) {
  586. e.printStackTrace();
  587. }
  588. if(!"null".equals(jsonData)){
  589. System.out.println(jsonData);
  590. HashMap hashMap = JSON.parseObject(jsonData, HashMap.class);
  591. String code = (String) hashMap.get("code");
  592. System.out.println(hashMap.get("msg"));
  593. if("0".equals(code)){
  594. return 1;
  595. }
  596. }
  597. return 0;
  598. }
  599. //发送计量委托
  600. @Override
  601. @Transactional
  602. public int sendMeasureCommssion(Map<String, Object> map){
  603. if(map.get("asd") == null){ //预防司机没更新APP点击发送委托
  604. return 5;
  605. }
  606. int i=0;
  607. //获取订单类型
  608. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  609. if(map.get("materialId") == null){
  610. map.putAll(utilsMapper.getOrderMesByOrderId(orderId));
  611. }
  612. BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderTypee"));
  613. //根据运输订单id查找运输订单号
  614. switch (orderType.intValue()){
  615. case 1: //查询未装车实绩
  616. List<Map<String, Object>> mapList = rulesService.judgeLastMaterial(DataChange.dataToBigDecimal(map.get("orderId")));
  617. map.put("materialId", mapList.get(0).get("materialId"));
  618. i+=addXSMeasureCommission(map);
  619. case 2:
  620. case 3: //通过物资ID查询订单ID(针对单拼)
  621. List<Integer> materialIdList = utilsMapper.getMaterialIdByOrderId(orderId);
  622. map.put("materialId", materialIdList.get(0));
  623. i+=addXSMeasureCommission(map);
  624. break;
  625. case 12:
  626. case 13:
  627. //如果是自动发送委托 查询最近进厂的门岗
  628. if(map.get("materialId") != null){
  629. Integer gatepostId = utilsMapper.getLastGatepostId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  630. if(gatepostId == null){
  631. map.put("gatepostId", 1); //一般零星多拼只存在于老厂
  632. }else {
  633. map.put("gatepostId", gatepostId);
  634. }
  635. }else {
  636. //手动发送委托
  637. Integer materialId = utilsMapper.getNextMaterialId(orderId);
  638. if(materialId == null) {
  639. return 0;
  640. }else {
  641. map.put("materialId", materialId);
  642. map.put("gatepostId", 1);
  643. }
  644. }
  645. i+=sendMeasureCommissionByGatepost(map);
  646. break;
  647. case 14:
  648. break;
  649. case 20:
  650. //发送计量委托(查询物资顺序第一个装卸货的物资)
  651. //拿到需要计量的物资ID
  652. Integer materialId = utilsMapper.getLxFirstMaterialId(DataChange.dataToBigDecimal(map.get("orderId")));
  653. map.put("materialId", materialId);
  654. i+=addLXMeasureCommission(map);
  655. break;
  656. case 5:
  657. case 6:
  658. case 7:
  659. case 8:
  660. case 10:
  661. case 11:
  662. case 17:
  663. case 18:
  664. case 15:
  665. case 16:
  666. i+=addMaoMeasureCommission(map);
  667. }
  668. return i;
  669. }
  670. /* 手动发送委托稽核代码
  671. if(map.get("deletedCommission") != null){
  672. //在计量实绩中查询是否有计量数据,如果有则代表已经计量过了不允许撤回
  673. List<Integer> commission = tmstruckMeasureCommissionMapper.checkoutWeightCommission(map);
  674. if(commission.size() != 0){
  675. return 2;
  676. }
  677. }else {
  678. //查询最后发送委托的物资
  679. Integer alreadySentMaterialId = tmstruckMeasureCommissionMapper.getAlreadySentMaterialId(map);
  680. if(alreadySentMaterialId != null){
  681. map.put("checkMaterialId", alreadySentMaterialId);
  682. //判断当前订单是否有已经发送过委托 但是还未计量完成的物资
  683. Map<String, Object> checkoutMesMap = tmstruckMeasureCommissionMapper.checkoutWeightCommission2(map);
  684. if(checkoutMesMap == null){ // 为空则是这个物资还没有计量
  685. return 4;
  686. }else {
  687. //如果不为空, 判断是否有净重 如果有净重则是计量完成 否则 没有
  688. if(checkoutMesMap.get("resultNetWeight") == null){
  689. return 4;
  690. }
  691. }
  692. }
  693. }
  694. if(i == 1 && orderType.intValue() == 11){
  695. //发送委托成功后修改订单物资表
  696. tmstruckMeasureCommissionMapper.updateOmsTruckMaterial(map);
  697. if(map.get("deletedCommission") != null){
  698. i = 3;
  699. }
  700. }
  701. **/
  702. /**
  703. * 发送留皮委托
  704. * @Author TXF
  705. * @Date 2022/3/8 14:35
  706. * @param capacityNumber
  707. * @return
  708. **/
  709. @Override
  710. synchronized public Map<String, Object> sendLiuPiMeasureCommission(String capacityNumber) throws InterruptedException {
  711. Map<String, Object> map = new HashMap<>();
  712. String num = "WZGTZDLP" + System.currentTimeMillis();
  713. map.put("carNumber", capacityNumber);
  714. map.put("purchOrder", num);
  715. //通过车牌号查询上一次委托发送数据
  716. Map<String, Object> mesMap = tmstruckTareReturnResultMapper.getMesByCapacityNum(capacityNumber);
  717. if(mesMap != null){
  718. Date lastDate = (Date) mesMap.get("returnTime");
  719. if((System.currentTimeMillis() - lastDate.getTime()) < 3600000){ //小于一小时重复点击 返回上一次发送的委托号
  720. map.put("status", "1");
  721. map.put("purchOrder", mesMap.get("returnNum"));
  722. }else {
  723. //进行委托发送正常流程
  724. dataDealWith(map, mesMap);
  725. }
  726. }else {
  727. dataDealWith(map, null);
  728. }
  729. Thread.sleep(1); //避免网络问题多设备同时请求导致高并发 导致委托号相同(同一时间点)
  730. return map;
  731. }
  732. public void dataDealWith(Map<String, Object> map, Map<String, Object> mesMap){
  733. String carNumber = (String) map.get("carNumber");
  734. //委托发送正常流程
  735. String isOK = sendMesToMeasure2(map);
  736. if("ok".equals(isOK)){
  737. //如果委托正常发送,则保存数据并返回
  738. map.put("status", "1");
  739. TmstruckTareReturnResult tmstruckTareReturnResult = new TmstruckTareReturnResult();
  740. tmstruckTareReturnResult.setId(tmstruckTareReturnResultMapper.selectMaxId());
  741. tmstruckTareReturnResult.setReturnTime(new Date());
  742. tmstruckTareReturnResult.setReturnNum((String) map.get("purchOrder"));
  743. tmstruckTareReturnResult.setInsertTime(new Date());
  744. tmstruckTareReturnResult.setInsertUsername(carNumber);
  745. if(mesMap == null){
  746. //通过车牌号查询运力ID
  747. tmstruckTareReturnResult.setCapacityId(utilsMapper.getCapacityIdByNum(carNumber));
  748. }else {
  749. tmstruckTareReturnResult.setCapacityId(DataChange.dataToBigDecimal(mesMap.get("capacityId")));
  750. }
  751. tmstruckTareReturnResultMapper.insertSelective(tmstruckTareReturnResult);
  752. }else {
  753. map.put("status", "0");
  754. map.put("mes", isOK);
  755. }
  756. }
  757. /**
  758. * 上面方法儿子方法
  759. * @Author TXF
  760. * @Date 2022/3/8 16:19
  761. * @param map
  762. * @return
  763. **/
  764. public String sendMesToMeasure2(Map<String, Object> map){
  765. JSONObject jsonObject = new JSONObject(map);
  766. String jsonData = null;
  767. try {
  768. jsonData = HTTPRequestUtils.send(liuPiUrl, jsonObject, "utf-8");
  769. } catch (IOException e) {
  770. e.printStackTrace();
  771. }
  772. if(!"null".equals(jsonData)){
  773. System.out.println(jsonData);
  774. HashMap hashMap = JSON.parseObject(jsonData, HashMap.class);
  775. boolean success = (boolean) hashMap.get("success");
  776. System.out.println(hashMap.get("msg"));
  777. if(success){
  778. return "ok";
  779. }else {
  780. return (String) hashMap.get("msg");
  781. }
  782. }else{
  783. System.out.println("委托发送失败:" + jsonData);
  784. }
  785. return "委托发送失败";
  786. }
  787. }