This commit is contained in:
linfso 2024-09-29 18:09:53 +08:00
parent 6eabd986ba
commit 72835d1df5
3 changed files with 88 additions and 26 deletions

View File

@ -43,6 +43,7 @@ package com.xdadan.erp.emis.service;
import com.xdadan.erp.emis.service.sms.Sms253Service; import com.xdadan.erp.emis.service.sms.Sms253Service;
import com.xdadan.erp.emis.utils.HTTPHelperV3; import com.xdadan.erp.emis.utils.HTTPHelperV3;
import com.xdadan.erp.emis.utils.Kd100Helper; 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.WaybillHelper;
import com.xdadan.erp.emis.utils.sensitive.Convert; import com.xdadan.erp.emis.utils.sensitive.Convert;
import com.xdadan.erp.system.mapper.SysUserMapper; import com.xdadan.erp.system.mapper.SysUserMapper;
@ -841,7 +842,11 @@ public class EmisBaseService {
try { try {
EmisTmsTransferTrace emisTmsTransferTrace = getEmisTmsTransferTraceByBillCode(billCode); EmisTmsTransferTrace emisTmsTransferTrace = getEmisTmsTransferTraceByBillCode(billCode);
if(emisTmsTransferTrace!=null){ 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) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -884,14 +889,32 @@ public class EmisBaseService {
String to=emisWaybill.getReceiveCountryName()+"-"+emisWaybill.getReceiveProvinceName(); String to=emisWaybill.getReceiveCountryName()+"-"+emisWaybill.getReceiveProvinceName();
// 订阅单号 String kdgs=dt.getTransferExpress().toLowerCase();
Kd100Helper.pollTraceByMainNoAndCom(dt.getTransferBillCode(),dt.getTransferExpress(),from,to,phone);
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()); log.error("===>Start 三方物流跟踪单号:"+dt.getBillCode()+","+dt.getTransferExpress()+" "+dt.getTransferBillCode());
EmisTmsTransferTrace rstUpd=Kd100Helper.queryTmsTransferTraceByKd100(dt,phone);
// 如果已签收,需要做签收扫描 // 如果已签收,需要做签收扫描
if(WaybillStatus.SIGNED.statusCode.equals(rstUpd.getLastWaybillStatus())){ if(WaybillStatus.SIGNED.statusCode.equals(rstUpd.getLastWaybillStatus())){
// 查询转件的站点 // 查询转件的站点

View File

@ -2434,6 +2434,8 @@ public class EmisTmsScanRecordServiceImpl extends EmisBaseService implements IEm
public List<EmisTmsScanRecord> getTraceListByBillCode(String billCode,Boolean isAsc) { public List<EmisTmsScanRecord> getTraceListByBillCode(String billCode,Boolean isAsc) {
List<EmisTmsScanRecord> listTraces = emisTmsScanRecordMapper.selectTraceListByBillCode(billCode); List<EmisTmsScanRecord> listTraces = emisTmsScanRecordMapper.selectTraceListByBillCode(billCode);
// 转件记录
List<EmisTmsScanRecord> transferList=cvtTransferTraceToScanRecord(billCode); List<EmisTmsScanRecord> transferList=cvtTransferTraceToScanRecord(billCode);
if(!CollectionUtil.isEmpty(transferList)){ if(!CollectionUtil.isEmpty(transferList)){
listTraces.addAll(transferList); listTraces.addAll(transferList);

View File

@ -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 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 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 // 17track Key
private static final String KEY = "F461E71E91CC9CEBD016E2A078E5496D"; private static final String KEY = "F461E71E91CC9CEBD016E2A078E5496D";
@ -40,7 +41,7 @@ public class Q17trackHelper {
* @param num 快递单号 * @param num 快递单号
* @return data * @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<String, String> postHeader = new HashMap<>(); Map<String, String> postHeader = new HashMap<>();
@ -50,7 +51,7 @@ public class Q17trackHelper {
JSONArray ydJsonArr = new JSONArray(); JSONArray ydJsonArr = new JSONArray();
JSONObject ydJsonItem = new JSONObject(); JSONObject ydJsonItem = new JSONObject();
ydJsonItem.put("number",mainNo); ydJsonItem.put("number",mainNo);
ydJsonItem.put("carrier",com); ydJsonItem.put("carrier",comId);
ydJsonArr.add(ydJsonItem); ydJsonArr.add(ydJsonItem);
String postJsonStr=ydJsonArr.toJSONString(); String postJsonStr=ydJsonArr.toJSONString();
@ -82,6 +83,7 @@ public class Q17trackHelper {
JSONArray ydJsonArr = new JSONArray(); JSONArray ydJsonArr = new JSONArray();
JSONObject ydJsonItem = new JSONObject(); JSONObject ydJsonItem = new JSONObject();
ydJsonItem.put("number",mainNo); ydJsonItem.put("number",mainNo);
ydJsonItem.put("carrier",com);
ydJsonArr.add(ydJsonItem); ydJsonArr.add(ydJsonItem);
String postJsonStr=ydJsonArr.toJSONString(); String postJsonStr=ydJsonArr.toJSONString();
@ -97,20 +99,47 @@ public class Q17trackHelper {
} }
} }
public static String changeRegister(String mainNo, String com) {
Map<String, String> 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<EmisTmsScanRecord> cvtTraceToScanRecord(String billCode,String traceInfo) { public static List<EmisTmsScanRecord> cvtTraceToScanRecord(String billCode,String traceInfo) {
List<EmisTmsScanRecord> recordList= null; List<EmisTmsScanRecord> recordList= null;
try { try {
if(!StringUtils.isEmpty(traceInfo)){ if(!StringUtils.isEmpty(traceInfo)){
JSONObject jsonObject = JSONObject.parseObject(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){ if(steps!=null && steps.size()>0){
recordList = new ArrayList<>(); recordList = new ArrayList<>();
for (Object obj:steps) { for (Object obj:steps) {
JSONObject stepItem = (JSONObject)obj; JSONObject stepItem = (JSONObject)obj;
EmisTmsScanRecord recordItem = new EmisTmsScanRecord(); EmisTmsScanRecord recordItem = new EmisTmsScanRecord();
recordItem.setBillCode(billCode); recordItem.setBillCode(billCode);
recordItem.setScanDate(DateUtils.parseDate(stepItem.getString("time"))); String timeUtc=stepItem.getString("time_utc");
recordItem.setRemark(stepItem.getString("context")); timeUtc=timeUtc.replace("T"," ").replace("Z","");
recordItem.setScanDate(DateUtils.parseDate(timeUtc));
recordItem.setRemark(stepItem.getString("description"));
recordItem.setScanType("81"); recordItem.setScanType("81");
recordList.add(recordItem); recordList.add(recordItem);
} }
@ -124,28 +153,34 @@ public class Q17trackHelper {
return recordList; return recordList;
} }
public static EmisTmsTransferTrace queryTmsTransferTraceByKd100(EmisTmsTransferTrace emisTmsTransferTrace,String phone) { public static EmisTmsTransferTrace queryTmsTransferTrace(EmisTmsTransferTrace emisTmsTransferTrace,String comId,String phone) {
String rstStr= null; String rstStr= null;
try { try {
emisTmsTransferTrace.setChId("17track"); emisTmsTransferTrace.setChId("17track");
rstStr = queryTraceInfo(emisTmsTransferTrace.getTransferBillCode(),emisTmsTransferTrace.getTransferExpress(),phone); rstStr = queryTraceInfo(emisTmsTransferTrace.getTransferBillCode(),comId,phone);
JSONObject jsonObject=JSONObject.parseObject(rstStr); JSONObject jsonObject=JSONObject.parseObject(rstStr);
emisTmsTransferTrace.setTraceInfo(rstStr); emisTmsTransferTrace.setTraceInfo(rstStr);
/* /*
快递单当前状态,默认为0在途,1揽收,2疑难,3签收,4退签,5派件,8清关,14拒签等10个基础物流状态,如需要返回高级物流状态,请参考 resultv2 传值 快递值 Delivered-签收
*/ */
// String state=jsonObject.getString("state"); String code=jsonObject.getString("code");
// if("3".equals(state)){ if("0".equals(code)) {
// emisTmsTransferTrace.setLastWaybillStatus(WaybillStatus.SIGNED.statusCode);
// } JSONObject jObjAccepted0=jsonObject.getJSONObject("data").getJSONArray("accepted").getJSONObject(0);
// String state = jObjAccepted0.getJSONObject("track_info").getJSONObject("latest_status").getString("status");
// JSONArray steps=jsonObject.getJSONArray("data"); if ("Delivered".equals(state)) {
// if(steps!=null && steps.size()>0){ emisTmsTransferTrace.setLastWaybillStatus(WaybillStatus.SIGNED.statusCode);
// JSONObject lastObj = steps.getJSONObject(0); }
// emisTmsTransferTrace.setLastTraceDate(DateUtils.parseDate(lastObj.getString("time")));
// emisTmsTransferTrace.setRemark(lastObj.getString("context")); 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) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -162,10 +197,12 @@ public class Q17trackHelper {
System.out.println(str); System.out.println(str);
String str1=queryTraceInfo("DRK50179785","100702","137"); String str1=queryTraceInfo("DRK50179785","100702","137");
System.out.println(str1); System.out.println(str1);
List tmpList=cvtTraceToScanRecord("DRK50179785",str1);
System.out.println(JSON.toJSONString(tmpList));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }