From 3328aec7bc4cc2c090f015cba905a82d6d52870c Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 19 十月 2025 10:34:29 +0800
Subject: [PATCH] fix:更新
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 105 insertions(+), 3 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 978f51c..80726d4 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
@@ -3,9 +3,13 @@
import java.util.*;
import java.text.SimpleDateFormat;
import java.text.ParseException;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.service.*;
+import com.ruoyi.common.config.TencentMapConfig;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -24,6 +28,7 @@
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.utils.http.HttpUtils;
/**
* 杞﹁締GPS鍧愭爣Controller
@@ -51,6 +56,9 @@
@Autowired
private ICmsGpsCollectService cmsGpsCollectService;
+
+ @Autowired
+ private TencentMapConfig tencentMapConfig;
/**
* 鏌ヨ杞﹁締GPS鍧愭爣鍒楄〃
@@ -233,13 +241,14 @@
}
// 澶勭悊寮�濮嬫椂闂�
- beginTime = beginTime.replace("T", " ").replace(" ","%20");
+ beginTime = beginTime.replace("T", " ");
if (beginTime.split(":").length == 2) { // 鍙湁灏忔椂鍜屽垎閽�
beginTime += ":00";
}
// 澶勭悊缁撴潫鏃堕棿
- endTime = endTime.replace("T", " ").replace(" ","%20");
+// endTime = endTime.replace("T", " ").replace(" ","%20");
+ endTime = endTime.replace("T", " ");
if (endTime.split(":").length == 2) { // 鍙湁灏忔椂鍜屽垎閽�
endTime += ":59";
}
@@ -368,4 +377,97 @@
throw new Error("鏌ヨ杞﹁締杞ㄨ抗澶辫触锛�" + e.getMessage());
}
}
-}
\ No newline at end of file
+
+ /**
+ * 鑵捐鍦板浘鍦板潃鎼滅储鎺ュ彛浠g悊
+ */
+ @Anonymous()
+ @GetMapping("/address/search")
+ public AjaxResult searchAddress(String keyword, String region) {
+ try {
+ // 鏋勫缓鑵捐鍦板浘鎼滅储API URL
+ String url = "https://apis.map.qq.com/ws/place/v1/search";
+ String params = "keyword=" + URLEncoder.encode(keyword, StandardCharsets.UTF_8.toString()) +
+ "&boundary=region(" + (region != null ? region : "骞垮窞") + ")" +
+ "&key=" + tencentMapConfig.getKey();
+
+ // 鍙戦�丠TTP璇锋眰
+ String response = HttpUtils.sendGet(url, params);
+
+ // 杩斿洖缁撴灉
+ return AjaxResult.success("鏌ヨ鎴愬姛", response);
+ } catch (Exception e) {
+ logger.error("鍦板潃鎼滅储澶辫触", e);
+ return AjaxResult.error("鍦板潃鎼滅储澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 鑵捐鍦板浘閫嗗湴鍧�瑙f瀽鎺ュ彛浠g悊
+ */
+ @Anonymous()
+ @GetMapping("/address/geocoder")
+ public AjaxResult reverseGeocoder(Double lat, Double lng) {
+ try {
+ // 妫�鏌ュ弬鏁�
+ logger.info("閫嗗湴鍧�瑙f瀽璇锋眰鍙傛暟: lat={}, lng={}", lat, lng);
+
+ if (lat == null || lng == null) {
+ logger.warn("鍙傛暟涓嶅畬鏁达紝缂哄皯缁忕含搴﹀潗鏍�: lat={}, lng={}", lat, lng);
+ return AjaxResult.error("鍙傛暟涓嶅畬鏁达紝缂哄皯缁忕含搴﹀潗鏍�");
+ }
+
+ // 妫�鏌ュ弬鏁版湁鏁堟��
+ if (Double.isNaN(lat) || Double.isNaN(lng) ||
+ Double.isInfinite(lat) || Double.isInfinite(lng)) {
+ logger.warn("鍙傛暟鏃犳晥锛岀粡绾害鍧愭爣鍖呭惈闈炴硶鍊�: lat={}, lng={}", lat, lng);
+ return AjaxResult.error("鍙傛暟鏃犳晥锛岀粡绾害鍧愭爣鏍煎紡閿欒");
+ }
+
+ // 鏋勫缓鑵捐鍦板浘閫嗗湴鍧�瑙f瀽API URL
+ String url = "https://apis.map.qq.com/ws/geocoder/v1/";
+ String params = "location=" + lat + "," + lng +
+ "&key=" + tencentMapConfig.getKey() +
+ "&get_poi=1";
+
+ // 鍙戦�丠TTP璇锋眰
+ String response = HttpUtils.sendGet(url, params);
+
+ // 杩斿洖缁撴灉
+ return AjaxResult.success("鏌ヨ鎴愬姛", response);
+ } catch (Exception e) {
+ logger.error("閫嗗湴鍧�瑙f瀽澶辫触: lat={}, lng={}", lat, lng, e);
+ return AjaxResult.error("閫嗗湴鍧�瑙f瀽澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 鑵捐鍦板浘璺嚎瑙勫垝鎺ュ彛浠g悊锛堣绠椾袱鐐归棿璺濈锛�
+ */
+ @Anonymous()
+ @GetMapping("/route/distance")
+ public AjaxResult calculateDistance(Double fromLat, Double fromLng, Double toLat, Double toLng) {
+ try {
+ // 妫�鏌ュ弬鏁�
+ if (fromLat == null || fromLng == null || toLat == null || toLng == null) {
+ return AjaxResult.error("鍙傛暟涓嶅畬鏁达紝缂哄皯璧风偣鎴栫粓鐐瑰潗鏍�");
+ }
+
+ // 鏋勫缓鑵捐鍦板浘璺嚎瑙勫垝API URL
+ String url = "https://apis.map.qq.com/ws/distance/v1/";
+ String params = "mode=driving" +
+ "&from=" + fromLat + "," + fromLng +
+ "&to=" + toLat + "," + toLng +
+ "&key=" + tencentMapConfig.getKey();
+
+ // 鍙戦�丠TTP璇锋眰
+ String response = HttpUtils.sendGet(url, params);
+
+ // 杩斿洖缁撴灉
+ return AjaxResult.success("璁$畻鎴愬姛", response);
+ } catch (Exception e) {
+ logger.error("璺濈璁$畻澶辫触", e);
+ return AjaxResult.error("璺濈璁$畻澶辫触锛�" + e.getMessage());
+ }
+ }
+}
\ No newline at end of file
--
Gitblit v1.9.1