UniversalServiceImpl.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518
  1. package com.steerinfo.dil.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.steerinfo.dil.feign.AmsFeign;
  5. import com.steerinfo.dil.feign.JoinFeign;
  6. import com.steerinfo.dil.mapper.DilRoleOrgcodeTableMapper;
  7. import com.steerinfo.dil.mapper.DilTableColumnRoleMapper;
  8. import com.steerinfo.dil.mapper.UniversalMapper;
  9. import com.steerinfo.dil.model.DilRoleOrgcodeTable;
  10. import com.steerinfo.dil.service.UniversalService;
  11. import com.steerinfo.dil.util.DataChange;
  12. import com.steerinfo.dil.util.ESUtil;
  13. import com.steerinfo.dil.util.HTTPRequestUtils;
  14. import com.steerinfo.framework.controller.RESTfulResult;
  15. import com.sun.org.apache.bcel.internal.generic.NEW;
  16. import io.swagger.annotations.ApiModelProperty;
  17. import org.apache.commons.codec.digest.DigestUtils;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.scheduling.annotation.Async;
  20. import org.springframework.scheduling.annotation.EnableAsync;
  21. import org.springframework.scheduling.annotation.EnableScheduling;
  22. import org.springframework.scheduling.annotation.Scheduled;
  23. import org.springframework.stereotype.Service;
  24. import javax.annotation.Resource;
  25. import java.io.IOException;
  26. import java.io.InputStream;
  27. import java.math.BigDecimal;
  28. import java.sql.Blob;
  29. import java.sql.SQLException;
  30. import java.util.*;
  31. /**
  32. * @ author :TXF
  33. * @ time :2021/10/19 18:05
  34. */
  35. @Service
  36. @EnableScheduling
  37. @EnableAsync
  38. public class UniversalServiceImpl implements UniversalService {
  39. @Resource
  40. private UniversalMapper universalMapper;
  41. @Resource
  42. private DilRoleOrgcodeTableMapper dilRoleOrgcodeTableMapper;
  43. @Resource
  44. private DilTableColumnRoleMapper dilTableColumnRoleMapper;
  45. @Autowired
  46. private JoinFeign joinFeign;
  47. @Autowired
  48. private ESUtil esUtil;
  49. @Autowired
  50. private AmsFeign amsFeign;
  51. /**
  52. * 打印提货单
  53. * @param orderNumber 运输订单号
  54. * @return
  55. */
  56. @Override
  57. public Map<String, Object> printTiHuoDan(String orderNumber) {
  58. //查询订单信息
  59. Map<String, Object> tiHuoDanMap = universalMapper.getTiHuoDan(orderNumber);
  60. //查询该订单下的所有装车信息
  61. List<Map<String, Object>> oomMes = universalMapper.getOOMMes(orderNumber);
  62. tiHuoDanMap.put("loadMes", oomMes);
  63. return tiHuoDanMap;
  64. }
  65. /**
  66. * 查询路段顺序及当前路段顺序号
  67. * @param map
  68. * @return
  69. */
  70. @Override
  71. public Map<String, Object> getNowLineMes(Map<String, Object> map) {
  72. return null;
  73. }
  74. // @Override
  75. // public List<String> getWarrantyAndPrint(String orderNumber) {
  76. // List<Map<String,Object>> warrantyCode = universalMapper.getWarranty(orderNumber);
  77. // List<String> list = new ArrayList<>();
  78. // String content = null;
  79. // for(Map<String,Object> code:warrantyCode){
  80. // Blob blob = (Blob) code.get("warrantyCode");
  81. // try {
  82. // content = new String(blob.getBytes((long)1, (int)blob.length()));
  83. // String string = content.substring(0,content.length()-2);
  84. // System.out.println(string);
  85. // list.add(string);
  86. // } catch (SQLException throwables) {
  87. // throwables.printStackTrace();
  88. // }
  89. // }
  90. //
  91. // return list;
  92. // }
  93. @Override
  94. public List<String> getWarranty(String orderNumber) {
  95. List<String> list = new ArrayList<>();
  96. //回传金蝶
  97. //根据orderNumber查询
  98. Map<String,Object> map = getWarrantyToES(orderNumber);
  99. String string = null;
  100. try{
  101. string = joinFeign.sendWarranty(map);
  102. Map<String,Object> waMap = JSON.parseObject(string);
  103. //成功
  104. if(waMap.get("kdStatus").equals("1")){
  105. List<Map<String,Object>> reportList = (List<Map<String,Object>>) waMap.get("qcReportList");
  106. Map<String,Object> map1 = reportList.get(0);
  107. Iterator<Map.Entry<String, Object>> it = map1.entrySet().iterator();
  108. Map.Entry<String,Object> entry;
  109. while(it.hasNext()){
  110. entry = it.next();
  111. String value = (String) entry.getValue();
  112. list.add(value);
  113. }
  114. } //失败
  115. else{
  116. list.add("-1");
  117. }
  118. }catch (NullPointerException e){
  119. e.printStackTrace();
  120. list.add("-2");
  121. }
  122. return list;
  123. }
  124. @Override
  125. public List<String> getTest(Map<String, Object> map) {
  126. List<String> list = new ArrayList<>();
  127. //成功
  128. if(map.get("kdStatus").equals("1")){
  129. List<Map<String,Object>> reportList = (List<Map<String,Object>>) map.get("qcReportList");
  130. Map<String,Object> map1 = reportList.get(0);
  131. Iterator<Map.Entry<String, Object>> it = map1.entrySet().iterator();
  132. Map.Entry<String,Object> entry;
  133. while(it.hasNext()){
  134. entry = it.next();
  135. String value = (String) entry.getValue();
  136. list.add(value);
  137. }
  138. }//失败
  139. else{
  140. list.add("0");
  141. }
  142. return list;
  143. }
  144. //出库与金蝶打通接口(获得质保书)
  145. public Map<String,Object> getWarrantyToES(String orderNumber) {
  146. Map<String, Object> input = new HashMap<>();
  147. Map<String, Object> head = universalMapper.selectNum(orderNumber);
  148. input.put("head", head);
  149. List<Map<String, Object>> mapList = universalMapper.selectOutbound(orderNumber);
  150. input.put("entries",mapList);
  151. Map<String,Object> totalMap = esUtil.getTotalMap();
  152. //组装报文
  153. totalMap.put("input",input);
  154. return totalMap;
  155. }
  156. /**
  157. * sha1加密字符串
  158. * @param text
  159. * @return
  160. */
  161. public String sha1DigestUtils(String text){
  162. return DigestUtils.sha1Hex(text);
  163. }
  164. /**
  165. * 根据收货客户查询承运商
  166. */
  167. public Map<String, Object> getCarrierByConsignee(Map<String, Object> mapValue){
  168. String isSelfMention = (String) mapValue.get("isSelfMention");
  169. String consigneeName = (String) mapValue.get("consigneeName");
  170. Map<String, Object> map = new HashMap<>();
  171. if (isSelfMention.equals("是")) {
  172. map = universalMapper.getCarrierByConsignee(consigneeName);
  173. }
  174. else {
  175. map.put("carrierId",null);
  176. map.put("carrierName",null);
  177. }
  178. return map;
  179. }
  180. /**
  181. *
  182. * @param mapValue
  183. * @return
  184. */
  185. public Map<String, Object> isInCapacityCarrier(Map<String, Object> mapValue) {
  186. BigDecimal capacityCarrierId = universalMapper.isInCapacityCarrier(mapValue);
  187. BigDecimal capacityId = universalMapper.isInCapacity(mapValue);
  188. Map<String,Object> map = new HashMap<>();
  189. map.put("capacityCarrierId",capacityCarrierId);
  190. map.put("capacityId",capacityId);
  191. return map;
  192. }
  193. public List<Map<String, Object>> getPortId() {
  194. return universalMapper.getPortId();
  195. }
  196. //获取订单号以及订单号下的物资
  197. public Map<String, Object> getOrderNumber(String num) {
  198. return universalMapper.getOrderNumber(num);
  199. }
  200. public List<Map<String, Object>> getCapacityNumber(String num) {
  201. return universalMapper.getCapacityNumber(num);
  202. }
  203. public List<Map<String, Object>> getMaterialIdByOrderId(Integer orderId) {
  204. return universalMapper.getMaterialIdByOrderId(orderId);
  205. }
  206. public int recordingWeightResult(List<Map<String, Object>> mapList) throws IOException {
  207. String URL = "http://172.16.33.166:8066/api/v1/join/tmstruckweightresult/receiveTmsTruckWeightResult";
  208. String jsonData = null;
  209. String jsonString= JSON.toJSONString(mapList);
  210. jsonData = HTTPRequestUtils.send(URL, jsonString,"utf-8");
  211. if(!"null".equals(jsonData)){
  212. System.out.println(jsonData);
  213. HashMap hashMap = JSON.parseObject(jsonData, HashMap.class);
  214. String code = (String) hashMap.get("code");
  215. System.out.println(hashMap.get("code"));
  216. if("SUCCESS".equals(code)){
  217. return 1;
  218. }else{
  219. return 0;
  220. }
  221. }else{
  222. System.out.println("补录委托失败:" + jsonData);
  223. return 0;
  224. }
  225. }
  226. /**
  227. * 关闭过期运输订单
  228. * @return
  229. */
  230. //@Scheduled(cron = "0 0,5 8 * * ?")
  231. public void closePassedOrder() {
  232. //List<Map<String,Object>> passedOrderList = universalMapper.findPassedOrder();
  233. //System.out.println("关闭的未出厂过期订单如下:<" + passedOrderList + ">");
  234. //int result=0;
  235. ////int result = universalMapper.closePassedOrder();
  236. //try {
  237. // if (passedOrderList.isEmpty()){
  238. //
  239. // }else {
  240. // for (Map<String, Object> map : passedOrderList) {
  241. // BigDecimal orderId = (BigDecimal) map.get("orderId");
  242. // //分两种情况关单
  243. // //净重为0状态设为2,不为零设为7
  244. // BigDecimal bigDecimal = universalMapper.sumNetWeight(orderId);
  245. // if (bigDecimal.compareTo(BigDecimal.ZERO)!=0){
  246. // result+=universalMapper.updateStatusTwo(orderId);
  247. // }else {
  248. // result+=universalMapper.updateStatusSeven(orderId);
  249. // }
  250. // /* BigDecimal capacityIdS=universalMapper.queueSingle(orderId);*/
  251. // /*if (capacityIdS !=null){
  252. // //删除单拼
  253. // universalMapper.delectQueueS(capacityIdS);
  254. // }*/
  255. // /*//查询多拼的数据
  256. // BigDecimal capacityIdM =universalMapper.queueMore(orderId);
  257. // if (capacityIdM !=null){
  258. // //删除多拼
  259. // universalMapper.delectQueueM(capacityIdM);
  260. // }
  261. // //查询单拼的数据
  262. // BigDecimal capacityIdS=universalMapper.queueSingle(orderId);
  263. // if (capacityIdS !=null){
  264. // //删除单拼
  265. // universalMapper.delectQueueS(capacityIdS);
  266. // }*/
  267. // }
  268. // }
  269. //
  270. //}catch (Exception e){
  271. //
  272. //}
  273. //System.out.println("订单关闭数为:" + result);
  274. //return 1;
  275. }
  276. public int linkageDeleteTransportOrder(List<Map<String, Object>> mapList) throws IOException{
  277. String URL = "http://172.16.33.166:8066/api/v1/join/tmstruckweightresult/linkageDeleteTransportOrder";
  278. String jsonData = null;
  279. String jsonString= JSON.toJSONString(mapList);
  280. jsonData = HTTPRequestUtils.send(URL, jsonString,"utf-8");
  281. if(!"null".equals(jsonData)){
  282. System.out.println(jsonData);
  283. HashMap hashMap = JSON.parseObject(jsonData, HashMap.class);
  284. String code = (String) hashMap.get("code");
  285. System.out.println(hashMap.get("code"));
  286. if("200".equals(code)){
  287. return 1;
  288. }else{
  289. return 0;
  290. }
  291. }else{
  292. System.out.println("补录委托失败:" + jsonData);
  293. return 0;
  294. }
  295. }
  296. @Override
  297. public Map<String, Object> submitSteel(Map<String, Object> map) {
  298. List<String> responseMapList = new ArrayList<>();
  299. List<String> responseMapFailedList = new ArrayList<>();
  300. BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
  301. //根据车序号ID获取内容
  302. Map<String,Object> oldMes = universalMapper.getSteelReportDetailsBySmId(saleOrderMaterialId);
  303. //修改车辆备注
  304. if(map.get("truckRemark") != null && !map.get("truckRemark").equals(oldMes.get("truckRemark"))) {
  305. universalMapper.updateTruckRemark(map);
  306. responseMapList.add("修改车辆备注成功");
  307. }
  308. //修改收货客户电话
  309. if(map.get("consigneeTel") != null && !map.get("consigneeTel").equals(oldMes.get("consigneeTel"))) {
  310. Map<String, Object> updateConsigneeTelMap = new HashMap<>();
  311. updateConsigneeTelMap.put("saleOrderNo",map.get("saleOrderNo"));
  312. updateConsigneeTelMap.put("saleOrderMaterialId",map.get("saleOrderMaterialId"));
  313. updateConsigneeTelMap.put("consigneeTel",map.get("consigneeTel"));
  314. Map<String,Object> updateConsigneeMap = amsFeign.updateConsigneeTel(updateConsigneeTelMap);
  315. if(updateConsigneeMap.get("code").toString().equals("200")) {
  316. responseMapList.add("修改收货客户电话号码成功");
  317. }else{
  318. responseMapFailedList.add("修改收货客户电话号码失败");
  319. }
  320. }
  321. //修改备注
  322. if(map.get("orderId") != null && map.get("remark") != null && !map.get("remark").equals(oldMes.get("remark"))) {
  323. universalMapper.updateRemark(map);
  324. responseMapList.add("修改备注成功");
  325. }
  326. if(map.get("orderId") != null && map.get("urls") != null && !map.get("urls").equals(oldMes.get("urls"))) {
  327. universalMapper.updateRemarkPic(map);
  328. responseMapList.add("修改备注图片成功");
  329. }
  330. //修改司机电话号码
  331. if(map.get("capacityTel") != null && !map.get("capacityTel").equals(oldMes.get("capacityTel"))) {
  332. Map<String, Object> updateDriverTelMap = new HashMap<>();
  333. updateDriverTelMap.put("orderId",map.get("orderId"));
  334. updateDriverTelMap.put("saleOrderMaterialId",map.get("saleOrderMaterialId"));
  335. updateDriverTelMap.put("driverTel",map.get("capacityTel"));
  336. universalMapper.updateCapacityDriverTel(DataChange.dataToBigDecimal(map.get("orderId")).intValue(),map.get("capacityTel").toString());
  337. universalMapper.updateDriverTel(updateDriverTelMap);
  338. responseMapList.add("修改司机电话号码成功");
  339. }
  340. //修改承运商授权
  341. if(map.get("carrierName") != null && !"".equals(map.get("carrierName")) && !map.get("carrierName").equals(oldMes.get("carrierName"))){
  342. if(oldMes.get("carrierName") == null) {
  343. List<Map<String,Object>> list = new ArrayList<>();
  344. list.add(map);
  345. Map<String,Object> updateCarrierMap = (Map<String, Object>) amsFeign.dispatchToCarrier(list);
  346. if (updateCarrierMap.get("code").toString().equals("0")) {
  347. responseMapList.add("授权承运商成功");
  348. }else {
  349. responseMapFailedList.add("授权承运商失败,请联系管理员");
  350. }
  351. }else{
  352. Map<String,Object> updateCarrierMap = amsFeign.updateTruckNoCarrier(map);
  353. if (updateCarrierMap.get("code").toString().equals("200")) {
  354. responseMapList.add("修改承运商授权成功");
  355. }else {
  356. responseMapFailedList.add("修改承运商授权失败,请联系管理员");
  357. }
  358. }
  359. }
  360. //修改收货地址
  361. if (map.get("place") != null && !"".equals(map.get("place")) && (!map.get("place").equals(oldMes.get("place"))) || DataChange.dataToBigDecimal(map.get("shipperAddressId")).compareTo(DataChange.dataToBigDecimal(oldMes.get("shipperAddressId"))) != 0){
  362. map.put("isCloseEas",1);
  363. map.put("isNewCar",1);
  364. Map<String,Object> updateCarAddress = amsFeign.updateCarAddress(map);
  365. if (updateCarAddress.get("code").toString().equals("200")) {
  366. responseMapList.add("修改收货地址成功");
  367. }else{
  368. responseMapFailedList.add("修改收货地址失败,请联系管理员");
  369. }
  370. }
  371. //修改运力
  372. if (map.get("capacityNo") != null && !"".equals(map.get("capacityNo")) && !map.get("capacityNo").equals(oldMes.get("capacityNo"))) {
  373. if(oldMes.get("capacityId") != null) {
  374. //修改运力
  375. Map<String,Object> updateCapacityMap = amsFeign.updateCapacityNumberInFactory(map);
  376. if (updateCapacityMap.get("code").toString().equals("200")) {
  377. responseMapList.add("修改车牌号成功");
  378. }else{
  379. responseMapFailedList.add("修改车牌号失败,失败理由:" + updateCapacityMap.get("data"));
  380. }
  381. System.out.println(updateCapacityMap);
  382. }else{
  383. List<Map<String,Object>> list = new ArrayList<>();
  384. list.add(map);
  385. Map<String,Object> updateCapacityMap = amsFeign.dispatchSteelOrder(list);
  386. if (updateCapacityMap.get("code").toString().equals("200")) {
  387. responseMapList.add("派发车牌号成功");
  388. }else{
  389. responseMapFailedList.add("派发车牌号失败,失败理由:" + updateCapacityMap.get("data"));
  390. }
  391. }
  392. }
  393. Map<String, Object> resMap = new HashMap<>();
  394. resMap.put("response",responseMapList);
  395. resMap.put("responseMapFailed",responseMapFailedList);
  396. return resMap;
  397. }
  398. @Override
  399. public Map<String, Object> getColumnShowHidden(Map<String, Object> map) {
  400. Map<String, Object> responseMap = new HashMap<>();
  401. List<Map<String,Object>> columnShowData = universalMapper.getColumnShowData(map);
  402. List<Map<String,Object>> columnAllData = universalMapper.getColumnAllData(map);
  403. List<String> columnHiddenData = universalMapper.getColumnHiddenData(map);
  404. responseMap.put("columnShowData",columnShowData);
  405. responseMap.put("columnAllData",columnAllData);
  406. responseMap.put("columnHiddenData",columnHiddenData);
  407. return responseMap;
  408. }
  409. @Override
  410. public synchronized int updateColumnShowHidden(Map<String, Object> map) {
  411. int i = 0 ;
  412. //首先删除原来的列
  413. if("默认方案".equals(map.get("schemeName"))) {
  414. dilRoleOrgcodeTableMapper.updateEnableStatus(map);
  415. return 0;
  416. }
  417. i += dilRoleOrgcodeTableMapper.deleteSchmenLColumnData(map);
  418. List<String> columnHiddenData = (List<String>) map.get("columnHiddenData");
  419. List<DilRoleOrgcodeTable> mapList = new ArrayList<>();
  420. for (String s : columnHiddenData) {
  421. DilRoleOrgcodeTable dilRoleOrgcodeTable = new DilRoleOrgcodeTable();
  422. BigDecimal columnId = dilTableColumnRoleMapper.selectColumnId(s,map.get("tableName").toString());
  423. dilRoleOrgcodeTable.setColumnId(columnId);
  424. dilRoleOrgcodeTable.setUserName(map.get("userName").toString());
  425. dilRoleOrgcodeTable.setOrgCode(map.get("orgCode").toString());
  426. dilRoleOrgcodeTable.setEnableStatus(new BigDecimal(1));
  427. dilRoleOrgcodeTable.setPrimaryName(map.get("schemeName").toString());
  428. dilRoleOrgcodeTable.setPrimaryId(dilRoleOrgcodeTableMapper.getPrimaryId());
  429. mapList.add(dilRoleOrgcodeTable);
  430. }
  431. //将该用户的所有方案都变成未启用状
  432. dilRoleOrgcodeTableMapper.updateEnableStatus(map);
  433. if(mapList.size() > 0) {
  434. //然后再批量新增进去
  435. i += dilRoleOrgcodeTableMapper.batchInsert(mapList);
  436. }
  437. return i;
  438. }
  439. @Override
  440. public Map<String,Object> getColumShowHideScheme(Map<String, Object> map) {
  441. Map<String, Object> responseMap = new HashMap<>();
  442. List<Map<String,Object>> schemeList = new ArrayList<>();
  443. //每一个map;
  444. Map<String,Object> schemeMap = new HashMap<>();
  445. //作为传值用的map
  446. Map<String,Object> attrMap = new HashMap<>();
  447. //当前启用状态的值
  448. String activeName = "默认方案";
  449. //以下是方案的标题和名字
  450. schemeMap.put("title","默认方案");
  451. schemeMap.put("name","默认方案");
  452. //以下是方案的显示数据和隐藏数据
  453. List<Map<String,Object>> columnAllData = universalMapper.getColumnAllData(map);
  454. schemeMap.put("columnAllData",columnAllData);
  455. responseMap.put("columnAllData",columnAllData);
  456. attrMap.put("tableName",map.get("tableName"));
  457. map.put("schemeName",activeName);
  458. List<String> columnHiddenData = universalMapper.getColumnHiddenData(map);
  459. schemeMap.put("columnHiddenData",columnHiddenData);
  460. schemeList.add(schemeMap);
  461. responseMap.put("activeName",activeName);
  462. responseMap.put("columnHiddenData",columnHiddenData);
  463. //然后根据用户名和报表名称,去查询方案名称和启用状态
  464. List<Map<String,Object>> schemeMapAnotherData = universalMapper.getColumnAllScheme(map);
  465. for(Map<String,Object> schemeMapAnotherDataMap : schemeMapAnotherData) {
  466. Map<String, Object> itemMap = new HashMap<>();
  467. itemMap.put("title",schemeMapAnotherDataMap.get("schemeName"));
  468. itemMap.put("name",schemeMapAnotherDataMap.get("schemeName"));
  469. itemMap.put("columnAllData",columnAllData);
  470. List<String> itemColumnHiddenData = universalMapper.getColumnHiddenData(schemeMapAnotherDataMap);
  471. itemMap.put("columnHiddenData",itemColumnHiddenData);
  472. schemeList.add(itemMap);
  473. if(DataChange.dataToBigDecimal(schemeMapAnotherDataMap.get("enableStatus")).compareTo(new BigDecimal(1)) == 0){
  474. responseMap.put("activeName",schemeMapAnotherDataMap.get("schemeName"));
  475. responseMap.put("columnHiddenData",itemColumnHiddenData);
  476. }
  477. }
  478. responseMap.put("schemeList",schemeList);
  479. return responseMap;
  480. }
  481. }