From 73d7f7aed91cdaaaf61e6177dc02c71ef5ca51e8 Mon Sep 17 00:00:00 2001
From: wzp <2040239371@qq.com>
Date: 星期三, 03 九月 2025 16:42:14 +0800
Subject: [PATCH] fix: 修复轨迹查询,界面报401的问题
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysClientAppServiceImpl.java | 13 +++
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectServiceImpl.java | 180 ++++++++++++++++++++++++++++++---------------
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java | 6 +
3 files changed, 137 insertions(+), 62 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java
index 145b63d..978f51c 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java
@@ -139,6 +139,8 @@
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String beginTime= sdf.format(dispatchOrd.getDispatchOrdStartDate());
String endTime= sdf.format(new Date());
+
+ logger.info("鏌ヨ杞﹁締杞ㄨ抗锛氳溅杈嗗彿锛歿}, 寮�濮嬫椂闂达細{}, 缁撴潫鏃堕棿锛歿}", vehicleNo, beginTime, endTime);
return this.getAnonymousTracks(vehicleNo,beginTime,endTime);
//
// vehicleGps.setVehicleNo(tbVehicleOrder.getVehicle());
@@ -312,10 +314,12 @@
request.setEndtime(endTime);
request.setTimezone(8); // 涓浗鏃跺尯
+ logger.info("鏌ヨ杞﹁締杞ㄨ抗锛氳溅杈嗗彿锛歿}, 璁惧ID锛歿}, 寮�濮嬫椂闂达細{}, 缁撴潫鏃堕棿锛歿}", vehicleNo, vehicleInfo.getDeviceId(), beginTime, endTime);
// 鏌ヨ杞ㄨ抗
GpsTrackQueryResponse response = gpsCollectService.queryTracks(request);
if (response.getStatus() != 0) {
- throw new Error("鏌ヨ杞ㄨ抗澶辫触锛�" + response.getCause());
+ logger.error("鏌ヨ杞ㄨ抗澶辫触锛岀姸鎬佺爜锛歿}, 閿欒淇℃伅锛歿}", response.getStatus(), response.getCause());
+ throw new Error("鏌ヨ杞ㄨ抗澶辫触锛�" + (response.getCause() != null ? response.getCause() : "鏈煡閿欒"));
}
// 杞崲GPS51杞ㄨ抗鐐逛负缁熶竴鏍煎紡
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectServiceImpl.java
index 7c20adb..6385cea 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectServiceImpl.java
@@ -131,36 +131,59 @@
* 鑾峰彇鏈夋晥鐨則oken锛屽鏋渢oken鏃犳晥鍒欒嚜鍔ㄧ櫥褰�
*/
private String getValidTokenWithAutoLogin() {
- // 鑾峰彇褰撳墠token
- String token = gpsConfigService.getValidToken("gps51");
- if (token == null || token.isEmpty()) {
- //璇诲彇gspconfig涓殑鍩熷悕锛岀敤鎴峰悕锛屽瘑鐮�
- SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51");
- if (config == null) {
- return null;
+ try {
+ // 鑾峰彇褰撳墠token
+ String token = gpsConfigService.getValidToken("gps51");
+ if (token == null || token.isEmpty()) {
+ System.out.println("褰撳墠token鏃犳晥锛屽皾璇曢噸鏂扮櫥褰�");
+ //璇诲彇gspconfig涓殑鍩熷悕锛岀敤鎴峰悕锛屽瘑鐮�
+ SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51");
+ if (config == null) {
+ System.err.println("GPS閰嶇疆淇℃伅鏈壘鍒帮紝鏃犳硶杩涜鐧诲綍");
+ return null;
+ }
+
+ String username = config.getUsername();
+ String password = config.getPassword();
+ String domain = config.getDomain();
+
+ if (username == null || password == null || domain == null) {
+ System.err.println("GPS閰嶇疆淇℃伅涓嶅畬鏁达紝鐢ㄦ埛鍚嶃�佸瘑鐮佹垨鍩熷悕涓虹┖");
+ return null;
+ }
+
+ // token鏃犳晥锛屽皾璇曠櫥褰�
+ GpsLoginRequest loginRequest = new GpsLoginRequest();
+ loginRequest.setType("USER");
+ loginRequest.setFrom("WEB");
+ loginRequest.setUsername(username);
+ loginRequest.setPassword(password);
+ loginRequest.setDomain(domain);
+
+ System.out.println("寮�濮嬬櫥褰旼PS绯荤粺锛岀敤鎴峰悕: " + username + ", 鍩熷悕: " + domain);
+ GpsLoginResponse loginResponse = login(loginRequest);
+
+ if (loginResponse.isSuccess()) {
+ //灏唗oken鍐欏叆gspconfig
+ token = loginResponse.getToken();
+ //getTokenExpireTime 杩欎釜鏄病鏈夌殑 闇�瑕佽嚜宸辫绠楋紝褰撳墠鏃堕棿+23灏忔椂
+ Date expireTime = DateUtils.addHours(new Date(), 23);
+ gpsConfigService.updateToken("gps51", token, expireTime);
+ System.out.println("GPS绯荤粺鐧诲綍鎴愬姛锛宼oken宸叉洿鏂�");
+ return token;
+ } else {
+ System.err.println("GPS绯荤粺鐧诲綍澶辫触: " + loginResponse.getMessage());
+ return null;
+ }
+ } else {
+ System.out.println("浣跨敤鐜版湁鏈夋晥token");
}
- String username = config.getUsername();
- String password = config.getPassword();
- String domain = config.getDomain();
- // token鏃犳晥锛屽皾璇曠櫥褰�
- GpsLoginRequest loginRequest = new GpsLoginRequest();
- loginRequest.setType("USER");
- loginRequest.setFrom("WEB");
- loginRequest.setUsername(username);
- loginRequest.setPassword(password);
- loginRequest.setDomain(domain);
- GpsLoginResponse loginResponse = login(loginRequest);
-
- if (loginResponse.isSuccess()) {
- //灏唗oken鍐欏叆gspconfig
- token = loginResponse.getToken();
- //getTokenExpireTime 杩欎釜鏄病鏈夌殑 闇�瑕佽嚜宸辫绠楋紝褰撳墠鏃堕棿+23灏忔椂
- Date expireTime = DateUtils.addHours(new Date(), 23);
- gpsConfigService.updateToken("gps51", token, expireTime);
- return token;
- }
+ return token;
+ } catch (Exception e) {
+ System.err.println("鑾峰彇token鏃跺彂鐢熷紓甯�: " + e.getMessage());
+ e.printStackTrace();
+ return null;
}
- return token;
}
/**
@@ -344,6 +367,7 @@
response.setCause("鏈壘鍒癎PS閰嶇疆淇℃伅");
return response;
}
+ System.out.println("GPS閰嶇疆淇℃伅鑾峰彇鎴愬姛锛�");
// 鑾峰彇鏈夋晥鐨則oken锛屽鏋滄棤鏁堝垯鑷姩鐧诲綍
String token = getValidTokenWithAutoLogin();
@@ -354,9 +378,12 @@
return response;
}
+ System.out.println("token鑾峰彇鎴愬姛锛�"+token);
+
// 鏋勫缓璇锋眰URL
String url = config.getDomain() + "/webapi?action=lastposition&token="+token;
-
+ System.out.println("璇锋眰URL锛�"+url);
+
// 鏋勫缓璇锋眰鍙傛暟
Map<String, String> params = new HashMap<>();
@@ -372,6 +399,8 @@
if (request.getDeviceids() != null && !request.getDeviceids().isEmpty()) {
params.put("deviceids", JSON.toJSONString(request.getDeviceids()));
}
+
+ System.out.println("璇锋眰鍙傛暟锛�"+params);
try {
@@ -513,39 +542,58 @@
@Override
public GpsTrackQueryResponse queryTracks(GpsTrackQueryRequest request) {
- // 鑾峰彇GPS閰嶇疆淇℃伅
- SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51");
- if (config == null) {
- GpsTrackQueryResponse response = new GpsTrackQueryResponse();
- response.setStatus(-1);
- response.setCause("鏈壘鍒癎PS閰嶇疆淇℃伅");
- return response;
- }
-
- // 鑾峰彇鏈夋晥鐨則oken锛屽鏋滄棤鏁堝垯鑷姩鐧诲綍
- String token = getValidTokenWithAutoLogin();
- if (token == null) {
- GpsTrackQueryResponse response = new GpsTrackQueryResponse();
- response.setStatus(-1);
- response.setCause("鑾峰彇token澶辫触");
- return response;
- }
-
- // 鏋勫缓璇锋眰URL
- String url = config.getDomain() + "/webapi?action=querytracks&token=" + token;
-
- // 鏋勫缓璇锋眰鍙傛暟
- Map<String, String> params = new HashMap<>();
- params.put("deviceid", request.getDeviceid());
- params.put("begintime", request.getBegintime());
- params.put("endtime", request.getEndtime());
- if (request.getTimezone() != null) {
- params.put("timezone", String.valueOf(request.getTimezone()));
- }
-
try {
+ // 鑾峰彇GPS閰嶇疆淇℃伅
+ SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51");
+ if (config == null) {
+ System.err.println("GPS閰嶇疆淇℃伅鏈壘鍒帮紝configKey: gps51");
+ GpsTrackQueryResponse response = new GpsTrackQueryResponse();
+ response.setStatus(-1);
+ response.setCause("鏈壘鍒癎PS閰嶇疆淇℃伅");
+ return response;
+ }
+
+ System.out.println("GPS閰嶇疆淇℃伅鑾峰彇鎴愬姛锛屽煙鍚�: " + config.getDomain() + ", 鐢ㄦ埛鍚�: " + config.getUsername());
+
+ // 鑾峰彇鏈夋晥鐨則oken锛屽鏋滄棤鏁堝垯鑷姩鐧诲綍
+ String token = getValidTokenWithAutoLogin();
+ if (token == null) {
+ System.err.println("鑾峰彇token澶辫触");
+ GpsTrackQueryResponse response = new GpsTrackQueryResponse();
+ response.setStatus(-1);
+ response.setCause("鑾峰彇token澶辫触");
+ return response;
+ }
+
+ System.out.println("Token鑾峰彇鎴愬姛: " + token);
+
+ // 鏋勫缓璇锋眰URL
+ String url = config.getDomain() + "/webapi?action=querytracks&token=" + token;
+ System.out.println("璇锋眰URL: " + url);
+
+ // 鏋勫缓璇锋眰鍙傛暟
+ Map<String, String> params = new HashMap<>();
+ params.put("deviceid", request.getDeviceid());
+ params.put("begintime", request.getBegintime());
+ params.put("endtime", request.getEndtime());
+ if (request.getTimezone() != null) {
+ params.put("timezone", String.valueOf(request.getTimezone()));
+ }
+
+ System.out.println("璇锋眰鍙傛暟: " + params);
+
// 鍙戦�丠TTP璇锋眰
String result = HttpUtil.post(url, params);
+ System.out.println("HTTP鍝嶅簲缁撴灉: " + result);
+
+ if (result == null || result.trim().isEmpty()) {
+ System.err.println("HTTP璇锋眰杩斿洖绌虹粨鏋�");
+ GpsTrackQueryResponse response = new GpsTrackQueryResponse();
+ response.setStatus(-1);
+ response.setCause("HTTP璇锋眰杩斿洖绌虹粨鏋�");
+ return response;
+ }
+
JSONObject jsonResult = JSON.parseObject(result);
// 瑙f瀽鍝嶅簲
@@ -555,6 +603,16 @@
response.setDeviceid(jsonResult.getString("deviceid"));
if (response.getStatus() == 0) {
+
+ if(jsonResult.getJSONObject("result")==null)
+ {
+ System.err.println("鏌ヨ杞ㄨ抗澶辫触锛岃建杩硅褰曚负绌�");
+ GpsTrackQueryResponse responseErr = new GpsTrackQueryResponse();
+ responseErr.setStatus(-1);
+ responseErr.setCause("杞ㄨ抗璁板綍涓虹┖");
+ return responseErr;
+ }
+
// 瑙f瀽杞ㄨ抗璁板綍鍒楄〃
JSONArray recordsArray = jsonResult.getJSONArray("records");
List<GpsTrackPoint> records = new ArrayList<>();
@@ -592,9 +650,11 @@
return response;
} catch (Exception e) {
+ System.err.println("鏌ヨ鍘嗗彶杞ㄨ抗寮傚父: " + e.getMessage());
+ e.printStackTrace();
GpsTrackQueryResponse response = new GpsTrackQueryResponse();
response.setStatus(-1);
- response.setCause("鏌ヨ鍘嗗彶杞ㄨ抗澶辫触锛�" + e.getMessage());
+ response.setCause("鏌ヨ鍘嗗彶杞ㄨ抗澶辫触锛�" + (e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName()));
return response;
}
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysClientAppServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysClientAppServiceImpl.java
index f36ecea..a3db696 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysClientAppServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysClientAppServiceImpl.java
@@ -138,11 +138,15 @@
// 鏍规嵁appId鑾峰彇搴旂敤淇℃伅
SysClientApp clientApp = sysClientAppMapper.selectSysClientAppByAppKey(appId);
if (clientApp == null) {
+ System.out.println("鏈壘鍒癮ppId涓� " + appId + " 鐨勫簲鐢ㄩ厤缃�");
return false;
}
+ System.out.println("鎵惧埌搴旂敤閰嶇疆: " + clientApp);
+
// 楠岃瘉搴旂敤鏄惁鏈夋晥
if (!"0".equals(clientApp.getStatus())) {
+ System.out.println("搴旂敤鐘舵�佹棤鏁�: " + clientApp.getStatus());
return false;
}
@@ -151,12 +155,16 @@
long currentTime = System.currentTimeMillis();
if (currentTime < clientApp.getValidStartTime().getTime()
|| currentTime > clientApp.getValidEndTime().getTime()) {
+ System.out.println("搴旂敤宸茶繃鏈�");
return false;
}
}
// 鐢熸垚绛惧悕
String serverSign = generateSign(appId, clientApp.getSecurityKey(), timestamp);
+ System.out.println("鏈嶅姟鍣ㄧ敓鎴愮殑绛惧悕: " + serverSign);
+ System.out.println("瀹㈡埛绔彁渚涚殑绛惧悕: " + sign);
+ System.out.println("绛惧悕鏄惁鍖归厤: " + sign.equals(serverSign));
// 姣旇緝绛惧悕
return sign.equals(serverSign);
@@ -168,6 +176,9 @@
*/
private String generateSign(String appId, String securityKey, String timestamp) {
String signStr = appId + timestamp + securityKey;
- return md5(signStr);
+ System.out.println("绛惧悕鍘熷瀛楃涓�: " + signStr);
+ String result = md5(signStr);
+ System.out.println("MD5缁撴灉: " + result);
+ return result;
}
}
\ No newline at end of file
--
Gitblit v1.9.1