From 09e6dc3fb7266620fafb5e341808a8eb36e080a1 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 13 十二月 2025 22:51:52 +0800
Subject: [PATCH] feat:增加企业微信消息提醒
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectServiceImpl.java | 193 ++++++++++++++++++++++++++++++++---------------
1 files changed, 130 insertions(+), 63 deletions(-)
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..541ea56 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
@@ -1,10 +1,12 @@
package com.ruoyi.system.service.impl;
+import com.ruoyi.common.utils.PlateNumberExtractor;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.service.IGpsCollectService;
import com.ruoyi.system.config.GpsServiceConfig;
import com.ruoyi.common.utils.MD5Util;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.http.HttpEntity;
@@ -30,6 +32,7 @@
/**
* GPS閲囬泦鏈嶅姟瀹炵幇
*/
+@Slf4j
@Service
public class GpsCollectServiceImpl implements IGpsCollectService {
@@ -78,6 +81,7 @@
response.setSuccess(true);
response.setMessage("鐧诲綍鎴愬姛");
response.setToken(jsonResult.getString("token"));
+ response.setServerid(jsonResult.getInteger("serverid"));
break;
case -1:
response.setSuccess(false);
@@ -131,36 +135,60 @@
* 鑾峰彇鏈夋晥鐨則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();
+ Integer serviceid = loginResponse.getServerid();
+ //getTokenExpireTime 杩欎釜鏄病鏈夌殑 闇�瑕佽嚜宸辫绠楋紝褰撳墠鏃堕棿+23灏忔椂
+ Date expireTime = DateUtils.addHours(new Date(), 23);
+ gpsConfigService.updateToken("gps51", token,serviceid, 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;
}
/**
@@ -231,10 +259,21 @@
private String extractPlateNumber(String deviceName, String remark) {
// 杩欓噷鍙互鏍规嵁瀹為檯鎯呭喌瀹炵幇杞︾墝鍙锋彁鍙栭�昏緫
// 渚嬪锛氫粠瀛楃涓蹭腑鍖归厤杞︾墝鍙锋牸寮�
+ //aaxx绮SX120
+ //鍦ㄨ繖閲屾彁鍙� 绮SX120
+
if (StringUtils.isNotEmpty(deviceName)) {
+ String plateNo =PlateNumberExtractor.extractPlateNumber(deviceName);
+ if (plateNo != null) {
+ return plateNo;
+ }
return deviceName;
}
if (StringUtils.isNotEmpty(remark)) {
+ String plateNo =PlateNumberExtractor.extractPlateNumber(remark);
+ if (plateNo != null) {
+ return plateNo;
+ }
return remark;
}
return null;
@@ -262,7 +301,7 @@
String username = config.getUsername();
// 鏋勫缓璇锋眰URL
- String url = config.getDomain() + "/webapi?action=querymonitorlist&token=" + token;
+ String url = config.getDomain() + "/webapi?action=querymonitorlist&token=" + token+"&serverid="+config.getServerid();
Map<String, String> params = new HashMap<>();
params.put("username", username);
@@ -344,6 +383,7 @@
response.setCause("鏈壘鍒癎PS閰嶇疆淇℃伅");
return response;
}
+ System.out.println("GPS閰嶇疆淇℃伅鑾峰彇鎴愬姛锛�");
// 鑾峰彇鏈夋晥鐨則oken锛屽鏋滄棤鏁堝垯鑷姩鐧诲綍
String token = getValidTokenWithAutoLogin();
@@ -354,9 +394,12 @@
return response;
}
+ System.out.println("token鑾峰彇鎴愬姛锛�"+token);
+
// 鏋勫缓璇锋眰URL
- String url = config.getDomain() + "/webapi?action=lastposition&token="+token;
-
+ String url = config.getDomain() + "/webapi?action=lastposition&token="+token+"&serverid="+config.getServerid();
+ System.out.println("璇锋眰URL锛�"+url);
+
// 鏋勫缓璇锋眰鍙傛暟
Map<String, String> params = new HashMap<>();
@@ -372,6 +415,8 @@
if (request.getDeviceids() != null && !request.getDeviceids().isEmpty()) {
params.put("deviceids", JSON.toJSONString(request.getDeviceids()));
}
+
+ System.out.println("璇锋眰鍙傛暟锛�"+params);
try {
@@ -399,7 +444,7 @@
// 瑙f瀽浣嶇疆璁板綍鍒楄〃
JSONArray recordsArray = jsonResult.getJSONArray("records");
List<GpsLastPosition> records = new ArrayList<>();
-
+ log.info("recordsArray length:{}",recordsArray.size());
for (int i = 0; i < recordsArray.size(); i++) {
JSONObject recordJson = recordsArray.getJSONObject(i);
GpsLastPosition record = new GpsLastPosition();
@@ -513,39 +558,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+"&serverid="+config.getServerid();
+ 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 +619,7 @@
response.setDeviceid(jsonResult.getString("deviceid"));
if (response.getStatus() == 0) {
+
// 瑙f瀽杞ㄨ抗璁板綍鍒楄〃
JSONArray recordsArray = jsonResult.getJSONArray("records");
List<GpsTrackPoint> records = new ArrayList<>();
@@ -592,9 +657,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;
}
}
--
Gitblit v1.9.1