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