From f1ba120c486048373505acfa74c3943c19be55ca Mon Sep 17 00:00:00 2001
From: wanglizhong <wlz>
Date: 星期三, 14 五月 2025 15:23:20 +0800
Subject: [PATCH] feat:优化查看历史轨迹

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectServiceImpl.java |   88 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 88 insertions(+), 0 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 f456c36..7c20adb 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
@@ -510,4 +510,92 @@
 
         return null;
     }
+
+    @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 {
+            // 鍙戦�丠TTP璇锋眰
+            String result = HttpUtil.post(url, params);
+            JSONObject jsonResult = JSON.parseObject(result);
+
+            // 瑙f瀽鍝嶅簲
+            GpsTrackQueryResponse response = new GpsTrackQueryResponse();
+            response.setStatus(jsonResult.getInteger("status"));
+            response.setCause(jsonResult.getString("cause"));
+            response.setDeviceid(jsonResult.getString("deviceid"));
+
+            if (response.getStatus() == 0) {
+                // 瑙f瀽杞ㄨ抗璁板綍鍒楄〃
+                JSONArray recordsArray = jsonResult.getJSONArray("records");
+                List<GpsTrackPoint> records = new ArrayList<>();
+                
+                for (int i = 0; i < recordsArray.size(); i++) {
+                    JSONObject recordJson = recordsArray.getJSONObject(i);
+                    GpsTrackPoint record = new GpsTrackPoint();
+                    record.setTrackCount(recordJson.getInteger("trackCount"));
+                    record.setStarttime(recordJson.getLong("starttime"));
+                    record.setEndtime(recordJson.getLong("endtime"));
+                    record.setTrackid(recordJson.getInteger("trackid"));
+                    record.setArrivedtime(recordJson.getLong("arrivedtime"));
+                    record.setUpdatetime(recordJson.getLong("updatetime"));
+                    record.setLatitude(recordJson.getDouble("callat"));
+                    record.setLongitude(recordJson.getDouble("callon"));
+                    record.setAltitude(recordJson.getDouble("altitude"));
+                    record.setRadius(recordJson.getInteger("radius"));
+                    record.setSpeed(recordJson.getDouble("speed"));
+                    record.setRecorderspeed(recordJson.getDouble("recorderspeed"));
+                    record.setTotaldistance(recordJson.getInteger("totaldistance"));
+                    record.setCourse(recordJson.getInteger("course"));
+                    record.setStatus(recordJson.getLong("status"));
+                    record.setStrstatus(recordJson.getString("strstatus"));
+                    record.setStrstatusen(recordJson.getString("strstatusen"));
+                    record.setGotsrc(recordJson.getString("gotsrc"));
+                    record.setRxlevel(recordJson.getInteger("rxlevel"));
+                    record.setGpsvalidnum(recordJson.getInteger("gpsvalidnum"));
+                    record.setReportmode(recordJson.getShort("reportmode"));
+                    
+                    records.add(record);
+                }
+                
+                response.setRecords(records);
+            }
+
+            return response;
+        } catch (Exception e) {
+            GpsTrackQueryResponse response = new GpsTrackQueryResponse();
+            response.setStatus(-1);
+            response.setCause("鏌ヨ鍘嗗彶杞ㄨ抗澶辫触锛�" + e.getMessage());
+            return response;
+        }
+    }
 } 
\ No newline at end of file

--
Gitblit v1.9.1