Prechádzať zdrojové kódy

大改image/filter 若果运行没问题,删除多余代码

wuweihao 4 rokov pred
rodič
commit
2ee40d5c37

+ 2 - 1
laser/src/main/java/com/fdkankan/indoor/base/util/JsonUtil.java

@@ -5,8 +5,9 @@ import java.util.List;
 
 /**
  * @author Admin
+ * 距离计算
  */
-public class JsonUtil {
+public class DistanceUtil {
 
     public static double distance(Double[] coordinates1, Double[] coordinates2, Options options) {
         double dLat = degreesToRadians(coordinates2[1] - coordinates1[1]);

+ 3 - 3
laser/src/main/java/com/fdkankan/indoor/core/controller/FilterController.java

@@ -19,6 +19,8 @@ import org.springframework.web.bind.annotation.RestController;
  * Created by owen on 2021/7/15 0015 15:58
  *
  * filter表需要实体映射,需要把id -> _id
+ *
+ * 漫游点
  */
 @Slf4j
 @Api(tags = "filter数据接口")
@@ -65,13 +67,11 @@ public class FilterController {
 //    }
 
     /**
+     * 获取漫游点
      * http://127.0.0.1:9294/indoor/test1/api/images/filter?dataset=56&hidden=false&limit=100&sort_by=FILE_ID&sort_order=ASC
      *
      * http://127.0.0.1:9294/indoor/test3/api/images/filter?dataset=1&hidden=false&limit=10&sort_by=FILE_ID&sort_order=ASC&site_model_entity=11
      * @param code
-     * @param queryJsonDataOne
-     * @param queryJsonDataTwo
-     * @param jsonDataDetailDto
      * @return
      */
     @WebControllerLog(description = "filter查询接口")

+ 2 - 0
laser/src/main/java/com/fdkankan/indoor/core/controller/PoiController.java

@@ -16,6 +16,8 @@ import java.util.List;
 
 /**
  * Created by owen on 2021/7/14 0014 14:17
+ *
+ * 热点信息
  */
 @Slf4j
 @Api(tags = "poi数据接口")

+ 2 - 0
laser/src/main/java/com/fdkankan/indoor/core/controller/SiteController.java

@@ -20,6 +20,8 @@ import org.springframework.web.bind.annotation.*;
  *
  * 2021-07-20
  * site_model.json的原始数据是数组, 目前存数据库是对象
+ *
+ * 数据集的分类信息
  */
 @Slf4j
 @Api(tags = "Site数据接口")

+ 2 - 0
laser/src/main/java/com/fdkankan/indoor/core/entity/dto/FilterHotDto.java

@@ -4,6 +4,8 @@ import lombok.Data;
 
 /**
  * Created by owen on 2021/7/27 0027 14:55
+ *
+ * filter表是漫游点数据
  */
 @Data
 public class FilterHotDto {

+ 41 - 39
laser/src/main/java/com/fdkankan/indoor/core/service/impl/FilterServiceImpl.java

@@ -382,7 +382,7 @@ public class FilterServiceImpl implements FilterService {
             coordinates2[0] = jsonData.getLocation()[0];
             coordinates2[1] = jsonData.getLocation()[1];
 
-            Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
+            Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
 //            log.info("计算出的距离:{}", distance);
 
             if (queryJsonData.getRadius() > distance) {
@@ -416,7 +416,7 @@ public class FilterServiceImpl implements FilterService {
             coordinates2[0] = jsonData.getLocation()[0];
             coordinates2[1] = jsonData.getLocation()[1];
 
-            Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
+            Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
 //            log.info("计算出的距离:{}", distance);
 
             if (queryJsonData.getRadius() > distance) {
@@ -470,7 +470,7 @@ public class FilterServiceImpl implements FilterService {
             coordinates2[0] = jsonData.getLocation()[0];
             coordinates2[1] = jsonData.getLocation()[1];
 
-            Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
+            Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
 //            log.info("计算出的距离:{}", distance);
             // 默认取第一值
             if (i==1) {
@@ -543,6 +543,12 @@ public class FilterServiceImpl implements FilterService {
         return newJsonData;
     }
 
+    /**
+     * 按最近距离排序
+     * @param queryJsonData
+     * @param jsonDataList
+     * @return
+     */
     private List<FilterHotDto> calcule_5_1(QueryJsonDataOne queryJsonData, List<FilterHotDto> jsonDataList) {
         log.info("run calcule");
 //        List<JsonData> newJsonData = new ArrayList<>();
@@ -560,7 +566,7 @@ public class FilterServiceImpl implements FilterService {
             coordinates2[0] = jsonData.getLocation()[0];
             coordinates2[1] = jsonData.getLocation()[1];
 
-            Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
+            Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
 //            log.info("计算出的距离:{}", distance);
 
             if (queryJsonData.getRadius() > distance) {
@@ -713,7 +719,7 @@ public class FilterServiceImpl implements FilterService {
             coordinates2[0] = jsonData.getLocation()[0];
             coordinates2[1] = jsonData.getLocation()[1];
 
-            Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
+            Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
 //            log.info("计算出的距离:{}", distance);
             // 默认取第一值
             if (i==1) {
@@ -759,24 +765,25 @@ public class FilterServiceImpl implements FilterService {
         List<FilterHotDto> data = getDataBySceneCode_5(code);
         log.info("输入数量:{}", data.size());
 
-        Stream<FilterHotDto> dataStream = data.stream();
         // 过滤条件
         Integer dataset = param.getDataset();
         if (dataset != null) {
-            dataStream = dataStream.filter(p -> dataset.equals(p.getDataset_id()));
+            data = data.stream().filter(p -> dataset.equals(p.getDataset_id())).collect(Collectors.toList());
         }
 
         Integer site_model_entity = param.getSite_model_entity();
         if (site_model_entity != null) {
-            dataStream = dataStream.filter(p -> site_model_entity.equals(p.getSite_model_entity_id()));
+            data = data.stream().filter(p -> site_model_entity.equals(p.getSite_model_entity_id())).collect(Collectors.toList());
         }
 
-        // 处理 z
-        Double z = param.getZ();
-        if (z != null) {
-            dataStream = dataStream.filter(p ->
-                    p.getLocation()[2] >= z && p.getFloor_location()[2] <= z);
-        }
+        // 暂时不处理- 2021-08-02
+//        Double z = param.getZ();
+//        if (z != null) {
+//            dataStream = dataStream.filter(p ->
+//                    p.getLocation()[2] >= z && p.getFloor_location()[2] <= z);
+//            data = dataStream.collect(Collectors.toList());
+//            log.info("z-输出数量:{}", data.size());
+//        }
 
 
         // 处理 lat, lon
@@ -786,11 +793,12 @@ public class FilterServiceImpl implements FilterService {
             // 处理半径, radius:半径
             Double radius = param.getRadius();
             if (radius != null) {
-                dataStream = calcule_5_2(param, dataStream);
+                data = calcule_5_2(param, data);
             } else {
-                // 没有半径,算最近的距离
-                dataStream = calculeMin_5_2(param, dataStream);
+                // 没有半径,算最近的距离, 返回值只有一天数据
+                data = calculeMin_5_2(param, data);
             }
+            log.info("lat、lon-输出数量:{}", data.size());
         }
 
 
@@ -800,9 +808,9 @@ public class FilterServiceImpl implements FilterService {
         Double lonMax = param.getLon_max();
         Double lonMin = param.getLon_min();
         if (latMax != null && latMin != null && lonMax != null && lonMin != null) {
-            dataStream = dataStream.filter(jsonData ->
+            data = data.stream().filter(jsonData ->
                     jsonData.getLocation()[0] >= lonMin && jsonData.getLocation()[0] <= lonMax
-                            && jsonData.getLocation()[1] >= latMin && jsonData.getLocation()[1] <= latMax);
+                            && jsonData.getLocation()[1] >= latMin && jsonData.getLocation()[1] <= latMax).collect(Collectors.toList());
         }
 
 
@@ -811,7 +819,7 @@ public class FilterServiceImpl implements FilterService {
         // 处理间隔数量
         Integer step = param.getStep();
         if (step != null){
-            dataStream = executeStep(step, dataStream);
+            data = executeStep(step, data);
         }
 
 
@@ -826,19 +834,17 @@ public class FilterServiceImpl implements FilterService {
 
         // 处理排序reversed()降序, 默认是升序
         if ("desc".equals(sortBy) && "file_id".equals(sortOrder)) {
-            dataStream = dataStream.sorted(Comparator.comparing(FilterHotDto::getFile_id).reversed());
+            data = data.stream().sorted(Comparator.comparing(FilterHotDto::getFile_id).reversed()).collect(Collectors.toList());
         } else if ("asc".equals(sortBy) && "file_id".equals(sortOrder)){
-            dataStream =  dataStream.sorted(Comparator.comparing(FilterHotDto::getFile_id));
+            data =  data.stream().sorted(Comparator.comparing(FilterHotDto::getFile_id)).collect(Collectors.toList());
         }
-
+        log.info("排序数量-输出数量:{}", data.size());
 
         Integer limit = param.getLimit();
         limit = limit==null ? 10 : limit;
-        dataStream = dataStream.limit(limit);
+        data = data.stream().limit(limit).collect(Collectors.toList());
 
-        // 返回最近距离
 
-        data = dataStream.collect(Collectors.toList());
         log.info("输出数量:{}", data.size());
 
         return Result.success(data);
@@ -849,17 +855,15 @@ public class FilterServiceImpl implements FilterService {
      *   处理step step的值会有影响
      *   当step=null, 0, 1不做处理
      * @param inputStep
-     * @param dataStream
      * @return
      */
-    private Stream<FilterHotDto> executeStep(Integer inputStep, Stream<FilterHotDto> dataStream) {
+    private List<FilterHotDto> executeStep(Integer inputStep, List<FilterHotDto> jsonDataList) {
 
-        List<FilterHotDto> jsonDataList = dataStream.collect(Collectors.toList());
         List<FilterHotDto> newJsonData = new ArrayList<>();
         log.info("输入对象数量:{}", jsonDataList.size());
         // 当inputStep为空、null、0、1 时返回全部数据
         if (inputStep == null || inputStep==0 || inputStep==1) {
-            return jsonDataList.stream();
+            return jsonDataList;
         }
 
         /**
@@ -879,13 +883,12 @@ public class FilterServiceImpl implements FilterService {
             }
         }
         log.info("输出对象数量:{}", newJsonData.size());
-        return newJsonData.stream();
+        return newJsonData;
     }
 
 
-    private Stream<FilterHotDto> calcule_5_2(FilterQueryDto queryJsonData, Stream<FilterHotDto> dataStream) {
+    private List<FilterHotDto> calcule_5_2(FilterQueryDto queryJsonData, List<FilterHotDto> jsonDataList) {
         log.info("run calcule");
-        List<FilterHotDto> jsonDataList = dataStream.collect(Collectors.toList());
 
         // 计算距离后的结果集
         Map<Double, FilterHotDto> calResultMap = new HashMap<>();
@@ -898,7 +901,7 @@ public class FilterServiceImpl implements FilterService {
             coordinates2[0] = jsonData.getLocation()[0];
             coordinates2[1] = jsonData.getLocation()[1];
 
-            Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
+            Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
 //            log.info("计算出的距离:{}", distance);
 
             if (queryJsonData.getRadius() > distance) {
@@ -924,7 +927,7 @@ public class FilterServiceImpl implements FilterService {
             result.add(calResultMap.get(p));
         });
 
-        return result.stream();
+        return result;
     }
 
 
@@ -933,8 +936,7 @@ public class FilterServiceImpl implements FilterService {
      * @param queryJsonData
      * @return 获取最小值对象
      */
-    private  Stream<FilterHotDto> calculeMin_5_2(FilterQueryDto queryJsonData, Stream<FilterHotDto> dataStream) {
-        List<FilterHotDto> jsonDataList = dataStream.collect(Collectors.toList());
+    private  List<FilterHotDto> calculeMin_5_2(FilterQueryDto queryJsonData, List<FilterHotDto> jsonDataList) {
         log.info("run calculeMin");
         List<FilterHotDto> newJsonData = new ArrayList<>();
 
@@ -952,7 +954,7 @@ public class FilterServiceImpl implements FilterService {
             coordinates2[0] = jsonData.getLocation()[0];
             coordinates2[1] = jsonData.getLocation()[1];
 
-            Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
+            Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
 //            log.info("计算出的距离:{}", distance);
             // 默认取第一值
             if (i==1) {
@@ -972,7 +974,7 @@ public class FilterServiceImpl implements FilterService {
         // 获取最小值
         FilterHotDto minJson = calResultMap.get(min);
         newJsonData.add(minJson);
-        return newJsonData.stream();
+        return newJsonData;
     }
 
 

+ 3 - 3
laser/src/main/java/com/fdkankan/indoor/core/service/impl/SiteServiceImpl.java

@@ -2,7 +2,7 @@ package com.fdkankan.indoor.core.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.indoor.base.util.GisUtils;
-import com.fdkankan.indoor.base.util.JsonUtil;
+import com.fdkankan.indoor.base.util.DistanceUtil;
 import com.fdkankan.indoor.base.util.Result;
 import com.fdkankan.indoor.core.entity.SiteModelEntity;
 import com.fdkankan.indoor.core.entity.dto.SiteDto;
@@ -175,7 +175,7 @@ public class SiteServiceImpl implements SiteService {
 
         List<Point2D.Double> allPoints = model.getPolygon().getCoordinates().get(0).stream()
                 .map(points -> new Point2D.Double(points[0], points[1])).collect(Collectors.toList());
-        if (JsonUtil.IsPtInPoly(pointParam, allPoints)) {
+        if (DistanceUtil.IsPtInPoly(pointParam, allPoints)) {
             return true;
         }
         return false;
@@ -195,7 +195,7 @@ public class SiteServiceImpl implements SiteService {
 
         List<Point2D.Double> allPoints = model.getPolygon().getCoordinates().get(0).stream()
                 .map(points -> new Point2D.Double(points[0], points[1])).collect(Collectors.toList());
-        if (JsonUtil.IsPtInPoly(pointParam, allPoints)) {
+        if (DistanceUtil.IsPtInPoly(pointParam, allPoints)) {
             return true;
         }
         return false;