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