UniversalServiceImpl.java 18 KB

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