From 72835d1df5e2833488d59f42546fc0877046c3c7 Mon Sep 17 00:00:00 2001 From: linfso Date: Sun, 29 Sep 2024 18:09:53 +0800 Subject: [PATCH] md --- .../erp/emis/service/EmisBaseService.java | 35 +++++++-- .../impl/EmisTmsScanRecordServiceImpl.java | 2 + .../xdadan/erp/emis/utils/Q17trackHelper.java | 77 ++++++++++++++----- 3 files changed, 88 insertions(+), 26 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java index 07f979ba3..77a299306 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java @@ -43,6 +43,7 @@ package com.xdadan.erp.emis.service; import com.xdadan.erp.emis.service.sms.Sms253Service; import com.xdadan.erp.emis.utils.HTTPHelperV3; import com.xdadan.erp.emis.utils.Kd100Helper; + import com.xdadan.erp.emis.utils.Q17trackHelper; import com.xdadan.erp.emis.utils.WaybillHelper; import com.xdadan.erp.emis.utils.sensitive.Convert; import com.xdadan.erp.system.mapper.SysUserMapper; @@ -841,7 +842,11 @@ public class EmisBaseService { try { EmisTmsTransferTrace emisTmsTransferTrace = getEmisTmsTransferTraceByBillCode(billCode); if(emisTmsTransferTrace!=null){ - return Kd100Helper.cvtTraceToScanRecord(billCode,emisTmsTransferTrace.getTraceInfo()); + if("17track".equals(emisTmsTransferTrace)) { + return Q17trackHelper.cvtTraceToScanRecord(billCode, emisTmsTransferTrace.getTraceInfo()); + }else { + return Kd100Helper.cvtTraceToScanRecord(billCode, emisTmsTransferTrace.getTraceInfo()); + } } } catch (Exception e) { e.printStackTrace(); @@ -884,14 +889,32 @@ public class EmisBaseService { String to=emisWaybill.getReceiveCountryName()+"-"+emisWaybill.getReceiveProvinceName(); - // 订阅单号 - Kd100Helper.pollTraceByMainNoAndCom(dt.getTransferBillCode(),dt.getTransferExpress(),from,to,phone); + String kdgs=dt.getTransferExpress().toLowerCase(); + String kdQueryChannelJsonStr=configService.selectConfigByKey("sys.express.query.channel"); + JSONObject jobjKdQ = JSONObject.parseObject(kdQueryChannelJsonStr); + + JSONObject kdQObj = jobjKdQ.getJSONObject(kdgs); + String kdChId = "kd100"; + String kdComId = kdgs; + if(kdQObj!=null) { + kdChId=kdQObj.getString("chId"); + kdComId=kdQObj.getString("comId"); + } + + EmisTmsTransferTrace rstUpd=null; + // 快递100查询数据 + if("kd100".equals(kdChId)){ + // 订阅单号 + Kd100Helper.pollTraceByMainNoAndCom(dt.getTransferBillCode(),dt.getTransferExpress(),from,to,phone); + rstUpd=Kd100Helper.queryTmsTransferTraceByKd100(dt,phone); + } + else if("17track".equals(kdChId)){ + Q17trackHelper.register(dt.getTransferBillCode(),kdComId); + rstUpd=Q17trackHelper.queryTmsTransferTrace(dt,kdComId,phone); + } log.error("===>Start 三方物流跟踪单号:"+dt.getBillCode()+","+dt.getTransferExpress()+" "+dt.getTransferBillCode()); - - - EmisTmsTransferTrace rstUpd=Kd100Helper.queryTmsTransferTraceByKd100(dt,phone); // 如果已签收,需要做签收扫描 if(WaybillStatus.SIGNED.statusCode.equals(rstUpd.getLastWaybillStatus())){ // 查询转件的站点 diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsScanRecordServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsScanRecordServiceImpl.java index 98d01aba4..df295a183 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsScanRecordServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsScanRecordServiceImpl.java @@ -2434,6 +2434,8 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm public List getTraceListByBillCode(String billCode,Boolean isAsc) { List listTraces = emisTmsScanRecordMapper.selectTraceListByBillCode(billCode); + + // 转件记录 List transferList=cvtTransferTraceToScanRecord(billCode); if(!CollectionUtil.isEmpty(transferList)){ listTraces.addAll(transferList); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/utils/Q17trackHelper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/utils/Q17trackHelper.java index 2b27deba5..091d2ff4a 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/utils/Q17trackHelper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/utils/Q17trackHelper.java @@ -30,6 +30,7 @@ public class Q17trackHelper { private static final String QUERY_URL = "https://api.17track.net/track/v2.2/gettrackinfo"; private static final String REGISTER_URL = "https://api.17track.net/track/v2/register"; + private static final String CHANGE_REGISTER_URL = "https://api.17track.net/track/v2/changecarrier"; // 17track Key private static final String KEY = "F461E71E91CC9CEBD016E2A078E5496D"; @@ -40,7 +41,7 @@ public class Q17trackHelper { * @param num 快递单号 * @return data */ - public static String queryTraceInfo(String mainNo, String com,String phone) throws Exception { + public static String queryTraceInfo(String mainNo, String comId,String phone) throws Exception { Map postHeader = new HashMap<>(); @@ -50,7 +51,7 @@ public class Q17trackHelper { JSONArray ydJsonArr = new JSONArray(); JSONObject ydJsonItem = new JSONObject(); ydJsonItem.put("number",mainNo); - ydJsonItem.put("carrier",com); + ydJsonItem.put("carrier",comId); ydJsonArr.add(ydJsonItem); String postJsonStr=ydJsonArr.toJSONString(); @@ -82,6 +83,7 @@ public class Q17trackHelper { JSONArray ydJsonArr = new JSONArray(); JSONObject ydJsonItem = new JSONObject(); ydJsonItem.put("number",mainNo); + ydJsonItem.put("carrier",com); ydJsonArr.add(ydJsonItem); String postJsonStr=ydJsonArr.toJSONString(); @@ -97,20 +99,47 @@ public class Q17trackHelper { } } + public static String changeRegister(String mainNo, String com) { + + Map postHeader = new HashMap<>(); + postHeader.put("17token",KEY); + + JSONArray ydJsonArr = new JSONArray(); + JSONObject ydJsonItem = new JSONObject(); + ydJsonItem.put("number",mainNo); + + ydJsonArr.add(ydJsonItem); + String postJsonStr=ydJsonArr.toJSONString(); + + try { + log.debug("===17track==POST==>{}",postJsonStr); + String restStr=HTTPHelperV3.postJson(CHANGE_REGISTER_URL,postHeader,postJsonStr); + log.debug("===17track==REST==>{}",restStr); + return restStr; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + public static List cvtTraceToScanRecord(String billCode,String traceInfo) { List recordList= null; try { if(!StringUtils.isEmpty(traceInfo)){ JSONObject jsonObject = JSONObject.parseObject(traceInfo); - JSONArray steps=jsonObject.getJSONArray("data"); + JSONObject jObjAccepted0=jsonObject.getJSONObject("data").getJSONArray("accepted").getJSONObject(0); + + JSONArray steps=jObjAccepted0.getJSONObject("track_info").getJSONObject("tracking").getJSONArray("providers").getJSONObject(0).getJSONArray("events"); if(steps!=null && steps.size()>0){ recordList = new ArrayList<>(); for (Object obj:steps) { JSONObject stepItem = (JSONObject)obj; EmisTmsScanRecord recordItem = new EmisTmsScanRecord(); recordItem.setBillCode(billCode); - recordItem.setScanDate(DateUtils.parseDate(stepItem.getString("time"))); - recordItem.setRemark(stepItem.getString("context")); + String timeUtc=stepItem.getString("time_utc"); + timeUtc=timeUtc.replace("T"," ").replace("Z",""); + recordItem.setScanDate(DateUtils.parseDate(timeUtc)); + recordItem.setRemark(stepItem.getString("description")); recordItem.setScanType("81"); recordList.add(recordItem); } @@ -124,28 +153,34 @@ public class Q17trackHelper { return recordList; } - public static EmisTmsTransferTrace queryTmsTransferTraceByKd100(EmisTmsTransferTrace emisTmsTransferTrace,String phone) { + public static EmisTmsTransferTrace queryTmsTransferTrace(EmisTmsTransferTrace emisTmsTransferTrace,String comId,String phone) { String rstStr= null; try { emisTmsTransferTrace.setChId("17track"); - rstStr = queryTraceInfo(emisTmsTransferTrace.getTransferBillCode(),emisTmsTransferTrace.getTransferExpress(),phone); + rstStr = queryTraceInfo(emisTmsTransferTrace.getTransferBillCode(),comId,phone); JSONObject jsonObject=JSONObject.parseObject(rstStr); emisTmsTransferTrace.setTraceInfo(rstStr); /* - 快递单当前状态,默认为0在途,1揽收,2疑难,3签收,4退签,5派件,8清关,14拒签等10个基础物流状态,如需要返回高级物流状态,请参考 resultv2 传值 + 快递值 Delivered-签收 */ -// String state=jsonObject.getString("state"); -// if("3".equals(state)){ -// emisTmsTransferTrace.setLastWaybillStatus(WaybillStatus.SIGNED.statusCode); -// } -// -// JSONArray steps=jsonObject.getJSONArray("data"); -// if(steps!=null && steps.size()>0){ -// JSONObject lastObj = steps.getJSONObject(0); -// emisTmsTransferTrace.setLastTraceDate(DateUtils.parseDate(lastObj.getString("time"))); -// emisTmsTransferTrace.setRemark(lastObj.getString("context")); -// } + String code=jsonObject.getString("code"); + if("0".equals(code)) { + + JSONObject jObjAccepted0=jsonObject.getJSONObject("data").getJSONArray("accepted").getJSONObject(0); + String state = jObjAccepted0.getJSONObject("track_info").getJSONObject("latest_status").getString("status"); + if ("Delivered".equals(state)) { + emisTmsTransferTrace.setLastWaybillStatus(WaybillStatus.SIGNED.statusCode); + } + + JSONObject latestEvent = jObjAccepted0.getJSONObject("track_info").getJSONObject("latest_event"); + if (latestEvent!=null) { + String timeUtc=latestEvent.getString("time_utc"); + timeUtc=timeUtc.replace("T"," ").replace("Z",""); + emisTmsTransferTrace.setLastTraceDate(DateUtils.parseDate(timeUtc)); + emisTmsTransferTrace.setRemark(latestEvent.getString("description")); + } + } } catch (Exception e) { e.printStackTrace(); @@ -162,10 +197,12 @@ public class Q17trackHelper { System.out.println(str); String str1=queryTraceInfo("DRK50179785","100702","137"); System.out.println(str1); + List tmpList=cvtTraceToScanRecord("DRK50179785",str1); + System.out.println(JSON.toJSONString(tmpList)); + } catch (Exception e) { e.printStackTrace(); } - } }