From 95a6e4392acc0f559b78c7300fdb3e5155e89795 Mon Sep 17 00:00:00 2001
From: chen_xi <276999030@qq.com>
Date: Wed, 28 Jun 2023 17:34:14 +0800
Subject: [PATCH] 部分提交

---
 screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java |   44 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
index 8e3e681..7172787 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
@@ -32,6 +32,7 @@
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
@@ -103,7 +104,7 @@
     }
 
     @Override
-    public List<Map<String, Object>> carTrajectory(Map<String, Object> params) {
+    public List<Map<String, Object>> carTrajectory(Map<String, Object> params,boolean type) {
         params.put("dateFormat", "%Y-%m-%d %H:%i:%s");
         Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo();
         Map<String, Object> orgInfo = (Map<String, Object>) userInfo.get("organization");
@@ -126,7 +127,12 @@
             if (lon < 70 || lon > 150 || lat < 20 || lat > 60) {
                 return true;
             }
-            o.putAll(value);
+            if(type){
+                o.putAll(value);
+            }else {
+
+            }
+
             return false;
         });
         /*for (Map<String, Object> map:data) {
@@ -142,7 +148,6 @@
         }*/
         return filterData(data);
     }
-
     @Override
     public SpecialDevice getSpecialDeviceMapByMac(String mac) {
         QueryWrapper<SpecialDevice> queryWrapper = new QueryWrapper();
@@ -182,7 +187,7 @@
         String time2 = params.get("time2").toString();
         String rsTime = getTime(time1, time2);
         list.add(rsTime);
-        List<Map<String, Object>> maps = specialDeviceService.carTrajectory(params);
+        List<Map<String, Object>> maps = specialDeviceService.carTrajectory(params,false);
         if (ObjectUtils.isEmpty(maps)){
             return null;
         }
@@ -194,7 +199,7 @@
             map.put("time1",time3);
             map.put("time2",time4);
             map.put("mac",mac);
-            List<Map<String, Object>> maps1 = specialDeviceService.carTrajectory(map);
+            List<Map<String, Object>> maps1 = specialDeviceService.carTrajectory(map,false);
             if (ObjectUtils.isEmpty(maps1)){
                 return null;
             }
@@ -210,7 +215,7 @@
             map.put("time1",time5);
             map.put("time2",time6);
             map.put("mac",mac);
-            List<Map<String, Object>> maps1 = specialDeviceService.carTrajectory(map);
+            List<Map<String, Object>> maps1 = specialDeviceService.carTrajectory(map,false);
             if (ObjectUtils.isEmpty(maps1)){
                 return null;
             }
@@ -495,6 +500,33 @@
                 result.add(map);
             }
         }
+
+
         return result;
     }
+    //���������������
+    private List<Map<String, Object>> filterData(List<Map<String, Object>> data, List<Map<String, Object>> result) {
+        List<Map<String, Object>> list = new ArrayList<>();
+
+        Map<String,List<Object>> map = new HashMap<>();
+        result.forEach(it->map.put(it.get(Constants.SENSOR_CODE_LON).toString()+ "_"+Constants.SENSOR_CODE_LAT.toString(),Arrays.asList(it)));
+        // ���������50 ������������
+        for (Map<String, Object> mapData : data) {
+            for (Map.Entry<String, List<Object>> entry : map.entrySet()) {
+                double lng1 = Double.parseDouble(mapData.get(Constants.SENSOR_CODE_LON).toString());
+                double lat1 = Double.parseDouble(mapData.get(Constants.SENSOR_CODE_LAT).toString());
+                String[] mapKey = entry.getKey().split("_");
+                List<Object> mapValue = entry.getValue();
+                double lng2 = Double.parseDouble(mapKey[0]);
+                double lat2 = Double.parseDouble(mapKey[1]);
+                double distance = GeodesyUtils.getDistance(lat1, lng1, lat2, lng2);
+                if (distance < dis) {
+                    mapValue.add(mapData);
+                }
+            }
+        }
+
+        return list;
+    }
+
 }

--
Gitblit v1.8.0