diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml
new file mode 100644
index 0000000..8682f3c
--- /dev/null
+++ b/.idea/sqldialects.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/controller/HighDangerController.java b/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/controller/HighDangerController.java
index 15953b4..d55c071 100644
--- a/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/controller/HighDangerController.java
+++ b/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/controller/HighDangerController.java
@@ -8,6 +8,7 @@ import com.hisense.hiatmp.server_api.mapper.OperatorMapper;
import com.hisense.hiatmp.model.common.DangerProblem;
import com.hisense.hiatmp.server_api.service.HighDangerService;
import com.hisense.hiatmp.model.dmr.Point;
+import com.hisense.hiatmp.server_api.utils.CoordinateConverter;
import com.hisense.hiatmp.server_api.utils.CoordinateUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -354,11 +355,16 @@ public class HighDangerController {
String[] split = roadInfo.getCoordinate().split(",");
for(int i = 0; i < split.length; i+=2){
+ CoordinateConverter coordinateConverter = new CoordinateConverter();
Map pointMap = new LinkedHashMap<>();
+
float x = Float.parseFloat(split[i]);
float y = Float.parseFloat(split[i + 1]);
- pointMap.put("longitude", x);
- pointMap.put("latitude", y);
+
+ CoordinateConverter.AMap transform = highDangerService.transform(x, y);
+
+ pointMap.put("longitude", transform.getLongitude());
+ pointMap.put("latitude", transform.getLatitude());
coordinateMapTemporary.add(pointMap);
}
roadInfo.setCoordinateList(coordinateMapTemporary);
diff --git a/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/service/HighDangerService.java b/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/service/HighDangerService.java
index 25b1a1b..0eab2b4 100644
--- a/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/service/HighDangerService.java
+++ b/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/service/HighDangerService.java
@@ -2,6 +2,7 @@ package com.hisense.hiatmp.server_api.service;
import com.hisense.hiatmp.model.common.ThtDangerItems;
import com.hisense.hiatmp.model.dmr.Point;
+import com.hisense.hiatmp.server_api.utils.CoordinateConverter;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@@ -25,5 +26,7 @@ public interface HighDangerService {
Boolean isPicture(MultipartFile file);
+ CoordinateConverter.AMap transform(double wgLon, double wgLat);
+
// Map> sortMapByValue(HashMap unsortedMap);
}
diff --git a/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/service/impl/HighDangerBaseServiceImpl.java b/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/service/impl/HighDangerBaseServiceImpl.java
index 6d89d31..aefa4c8 100644
--- a/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/service/impl/HighDangerBaseServiceImpl.java
+++ b/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/service/impl/HighDangerBaseServiceImpl.java
@@ -4,6 +4,7 @@ import com.hisense.hiatmp.server_api.mapper.HighDangerMapper;
import com.hisense.hiatmp.server_api.service.HighDangerService;
import com.hisense.hiatmp.model.common.ThtDangerItems;
import com.hisense.hiatmp.model.dmr.Point;
+import com.hisense.hiatmp.server_api.utils.CoordinateConverter;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -22,6 +23,19 @@ import java.util.stream.Collectors;
@Service
public class HighDangerBaseServiceImpl implements HighDangerService {
+ /**
+ * 椭球参数
+ */
+ private static double pi = 3.14159265358979324;
+ /**
+ * 卫星椭球坐标投影到平面地图坐标系的投影因子
+ */
+ private static double a = 6378245.0;
+ /**
+ * 椭球的偏心率
+ */
+ private static double ee = 0.00669342162296594323;
+
private static final double EARTH_RADIUS = 6378137;
/*@Value("${file.path.local}")
@@ -198,12 +212,107 @@ public class HighDangerBaseServiceImpl implements HighDangerService {
img = null;
}
+
// @Override
// public Path saveMultipartFiles(MultipartFile multipartFiles) {
// return null;
// }
}
+
+
+ @Override
+ public CoordinateConverter.AMap transform(double wgLon, double wgLat) {
+ if (outOfChina(wgLat, wgLon)) {
+ return new CoordinateConverter.AMap((float) wgLon, (float) wgLat);
+ }
+
+ double dLat = transformLat(wgLon - 105.0, wgLat - 35.0);
+ double dLon = transformLon(wgLon - 105.0, wgLat - 35.0);
+ double radLat = wgLat / 180.0 * pi;
+ double magic = Math.sin(radLat);
+ magic = 1 - ee * magic * magic;
+ double sqrtMagic = Math.sqrt(magic);
+ dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
+ dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
+ double transLat = wgLat + dLat;
+ double transLon = wgLon + dLon;
+ return new CoordinateConverter.AMap((float) transLon, (float) transLat);
+ }
+
+ /**
+ * 判断是否为国外坐标,,不在国内不做偏移
+ *
+ * @param lat
+ * @param lon
+ * @return
+ */
+ private static Boolean outOfChina(double lat, double lon) {
+ if (lon < 72.004 || lon > 137.8347)
+ return true;
+ if (lat < 0.8293 || lat > 55.8271)
+ return true;
+ return false;
+ }
+
+ /**
+ * 纬度转换
+ *
+ * @param x
+ * @param y
+ * @return
+ */
+ private static double transformLat(double x, double y) {
+ double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
+ ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
+ ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
+ ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
+ return ret;
+ }
+
+ /**
+ * 经度转换
+ *
+ * @param x
+ * @param y
+ * @return
+ */
+ private static double transformLon(double x, double y) {
+ double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
+ ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
+ ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
+ ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
+ return ret;
+ }
+
+ /**
+ * 高德经纬度类
+ */
+ public static class AMap {
+ /**
+ * 经度
+ */
+ private double longitude;
+
+ /**
+ * 维度
+ */
+ private double latitude;
+
+ public AMap(double longitude, double latitude) {
+ this.longitude = longitude;
+ this.latitude = latitude;
+ }
+
+ public double getLongitude() {
+ return longitude;
+ }
+
+ public double getLatitude() {
+ return latitude;
+ }
+ }
+
// public Map> sortMapByValue(HashMap unsortedMap) {
// Map> sortedMap = new LinkedHashMap<>();
// Comparator valueComparator = Comparator.naturalOrder();
diff --git a/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/utils/CoordinateConverter.java b/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/utils/CoordinateConverter.java
new file mode 100644
index 0000000..7b1179b
--- /dev/null
+++ b/hiatmp-hidden-danger-server/src/main/java/com/hisense/hiatmp/server_api/utils/CoordinateConverter.java
@@ -0,0 +1,115 @@
+package com.hisense.hiatmp.server_api.utils;
+
+public class CoordinateConverter {
+
+ /**
+ * 椭球参数
+ */
+ private static double pi = 3.14159265358979324;
+ /**
+ * 卫星椭球坐标投影到平面地图坐标系的投影因子
+ */
+ private static double a = 6378245.0;
+ /**
+ * 椭球的偏心率
+ */
+ private static double ee = 0.00669342162296594323;
+
+ /**
+ * 经纬度 GPS转高德
+ *
+ * @param wgLon GPS经度
+ * @param wgLat GPS维度
+ * @return 转化后的经纬度坐标
+ */
+ public static AMap transform(double wgLon, double wgLat) {
+ if (outOfChina(wgLat, wgLon)) {
+ return new AMap((float) wgLon, (float) wgLat);
+ }
+
+ double dLat = transformLat(wgLon - 105.0, wgLat - 35.0);
+ double dLon = transformLon(wgLon - 105.0, wgLat - 35.0);
+ double radLat = wgLat / 180.0 * pi;
+ double magic = Math.sin(radLat);
+ magic = 1 - ee * magic * magic;
+ double sqrtMagic = Math.sqrt(magic);
+ dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
+ dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
+ double transLat = wgLat + dLat;
+ double transLon = wgLon + dLon;
+ return new AMap((float) transLon, (float) transLat);
+ }
+
+ /**
+ * 判断是否为国外坐标,,不在国内不做偏移
+ *
+ * @param lat
+ * @param lon
+ * @return
+ */
+ private static Boolean outOfChina(double lat, double lon) {
+ if (lon < 72.004 || lon > 137.8347)
+ return true;
+ if (lat < 0.8293 || lat > 55.8271)
+ return true;
+ return false;
+ }
+
+ /**
+ * 纬度转换
+ *
+ * @param x
+ * @param y
+ * @return
+ */
+ private static double transformLat(double x, double y) {
+ double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
+ ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
+ ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
+ ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
+ return ret;
+ }
+
+ /**
+ * 经度转换
+ *
+ * @param x
+ * @param y
+ * @return
+ */
+ private static double transformLon(double x, double y) {
+ double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
+ ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
+ ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
+ ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
+ return ret;
+ }
+
+ /**
+ * 高德经纬度类
+ */
+ public static class AMap {
+ /**
+ * 经度
+ */
+ private float longitude;
+
+ /**
+ * 维度
+ */
+ private float latitude;
+
+ public AMap(float longitude, float latitude) {
+ this.longitude = longitude;
+ this.latitude = latitude;
+ }
+
+ public float getLongitude() {
+ return longitude;
+ }
+
+ public float getLatitude() {
+ return latitude;
+ }
+ }
+}
\ No newline at end of file
diff --git a/hiatmp-hidden-danger-server/src/main/resources/sql-mapper/HighDangerMapper.xml b/hiatmp-hidden-danger-server/src/main/resources/sql-mapper/HighDangerMapper.xml
index 54ae93f..bd1f6a5 100644
--- a/hiatmp-hidden-danger-server/src/main/resources/sql-mapper/HighDangerMapper.xml
+++ b/hiatmp-hidden-danger-server/src/main/resources/sql-mapper/HighDangerMapper.xml
@@ -86,7 +86,7 @@
hdb.pc_end_time >
CURRENT_TIMESTAMP - INTERVAL '3 days'
and
- hdb.pc_end_time <=
+ hdb.pc_end_time <
CURRENT_TIMESTAMP
THEN 1 ELSE 0 END) AS count
FROM tht_hidden_danger_base hdb
@@ -343,7 +343,7 @@
#{peakHours},
#{normalTraffic},
#{largeVehicleRate},
- #{vehicleTraffic},
+ #{nonvehicleTraffic},
#{lastModeUser},
#{lastModeDate})
@@ -356,7 +356,7 @@
"PEAK_HOURS" = #{peakHours},
"NORMAL_TRAFFIC" = #{normalTraffic},
"LARGE_VEHICLE_RATE" = #{largeVehicleRate},
- "NONVEHICLE_TRAFFIC" = #{vehicleTraffic},
+ "NONVEHICLE_TRAFFIC" = #{nonvehicleTraffic},
"LAST_MOD_USER" = #{lastModeUser},
"LAST_MOD_DATE" = #{lastModeDate}
where "BUSINESS_ID" = #{businessId}
diff --git a/hiatmp-model/src/main/java/com/hisense/hiatmp/model/common/ManualInvestigation.java b/hiatmp-model/src/main/java/com/hisense/hiatmp/model/common/ManualInvestigation.java
index 462ebdc..f5a771a 100644
--- a/hiatmp-model/src/main/java/com/hisense/hiatmp/model/common/ManualInvestigation.java
+++ b/hiatmp-model/src/main/java/com/hisense/hiatmp/model/common/ManualInvestigation.java
@@ -32,7 +32,7 @@ public class ManualInvestigation implements Serializable {
String peakHours;
String normalTraffic;
String largeVehicleRate;
- String vehicleTraffic;
+ String nonvehicleTraffic;
String lastModeUser;
Date lastModeDate;
diff --git a/log/monitor-info.log b/log/monitor-info.log
deleted file mode 100644
index c40240a..0000000
--- a/log/monitor-info.log
+++ /dev/null
@@ -1,13 +0,0 @@
-2024-07-10 01:10:47,770 [parallel-1] WARN de.codecentric.boot.admin.server.services.IntervalCheck - Unexpected error in status-check
-reactor.core.Exceptions$OverflowException: Could not emit tick 4136 due to lack of requests (interval doesn't support small downstream requests that replenish slower than the ticks)
- at reactor.core.Exceptions.failWithOverflow(Exceptions.java:234) ~[reactor-core-3.3.4.RELEASE.jar:3.3.4.RELEASE]
- at reactor.core.publisher.FluxInterval$IntervalRunnable.run(FluxInterval.java:130) [reactor-core-3.3.4.RELEASE.jar:3.3.4.RELEASE]
- at reactor.core.scheduler.PeriodicWorkerTask.call(PeriodicWorkerTask.java:59) [reactor-core-3.3.4.RELEASE.jar:3.3.4.RELEASE]
- at reactor.core.scheduler.PeriodicWorkerTask.run(PeriodicWorkerTask.java:73) [reactor-core-3.3.4.RELEASE.jar:3.3.4.RELEASE]
- at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_411]
- at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_411]
- at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_411]
- at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_411]
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_411]
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_411]
- at java.lang.Thread.run(Thread.java:750) [?:1.8.0_411]