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.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())){
// 查询转件的站点

View File

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