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