瀏覽代碼

过滤热点,把siteModel需要把儿子的热点数据也查询

wuweihao 3 年之前
父節點
當前提交
97f200e561

+ 28 - 6
laser/src/main/java/com/fdkankan/indoor/core/service/impl/PoiServiceImpl.java

@@ -13,6 +13,7 @@ import com.fdkankan.indoor.core.mapper.PoiMapper;
 import com.fdkankan.indoor.core.service.DataSetService;
 import com.fdkankan.indoor.core.service.PoiService;
 import com.fdkankan.indoor.core.service.PoiTypeService;
+import com.fdkankan.indoor.core.service.SiteModelService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -44,6 +45,9 @@ public class PoiServiceImpl extends IBaseServiceImpl implements PoiService {
     @Autowired
     DataSetService dataSetService;
 
+    @Autowired
+    SiteModelService siteModelService;
+
     @Override
     public void remove(String sceneCode) {
         entityMapper.deleteById(sceneCode);
@@ -71,7 +75,6 @@ public class PoiServiceImpl extends IBaseServiceImpl implements PoiService {
         String originalFilename = file.getOriginalFilename();
         String suffix = StrUtil.subAfter(originalFilename, ".", true);
 
-//        String newName = DateUtil.format(LocalDateTime.now(), "yyyyMMdd_HHmmssSSS");
         UUID uuid = UUID.randomUUID();
         String newName = "poi-" + uuid + "." + suffix;
 
@@ -239,20 +242,20 @@ public class PoiServiceImpl extends IBaseServiceImpl implements PoiService {
 
         // site_model_entity 必要条件
         List<Integer> siteModelIds = param.getSite_model_entity();
+        log.info("输入siteModelIds: {}", siteModelIds);
         if (siteModelIds == null) {
             return  Result.success();
         }
-        data = data.stream().filter(p -> siteModelIds.contains(p.getSite_model_entity_id())).collect(Collectors.toList());
+        // 2021-10-14 查找本身或者儿子
+        Set<Integer> conditionIds = getSiteModelIds(siteModelIds, sceneCode);
+        log.info("siteModelIds: {}", conditionIds);
+        data = data.stream().filter(p -> conditionIds.contains(p.getSite_model_entity_id())).collect(Collectors.toList());
 
         // Poi_type 非必要条件
         List<Integer> poiTypeIds = param.getPoi_type();
         if (poiTypeIds != null) {
             data = data.stream().filter(p -> poiTypeIds.contains(p.getPoi_type_id())).collect(Collectors.toList());
         }
-//        data = data.stream().filter(p -> poiTypeIds.contains(p.getPoi_type_id())).collect(Collectors.toList());
-//        if (siteModelIds.size() == 0 || poiTypeIds.size() == 0) {
-//            return  Result.success();
-//        }
 
 
         if (data.size() == 0) {
@@ -325,6 +328,25 @@ public class PoiServiceImpl extends IBaseServiceImpl implements PoiService {
 
 
     /**
+     * 2021-10-14
+     * 查找输入的siteModelIds的id(包含本身)和儿子id
+     * @return
+     */
+    private Set<Integer> getSiteModelIds(List<Integer> siteModelIds, String sceneCode){
+        HashSet<Integer> set = new HashSet<>();
+        for (Integer siteModelId : siteModelIds) {
+            if (siteModelId == null){
+                continue;
+            }
+            List<Integer> idAndSon = siteModelService.findBySceneCodeAndIdAndSon(sceneCode, siteModelId);
+            // 去重
+            set.addAll(idAndSon);
+        }
+        return set;
+    }
+
+
+    /**
      * 计算最小距离
      * @param queryJsonData
      * @return 获取最小值对象

+ 1 - 7
laser/src/main/java/com/fdkankan/indoor/core/service/impl/SiteModelServiceImpl.java

@@ -1,7 +1,5 @@
 package com.fdkankan.indoor.core.service.impl;
 
-import cn.hutool.core.util.StrUtil;
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.indoor.base.convert.DistanceUtil;
 import com.fdkankan.indoor.base.exception.BaseRuntimeException;
@@ -205,7 +203,6 @@ public class SiteModelServiceImpl implements SiteModelService {
         }
 
         log.info("result: {}", result);
-//        ArrayList<Object> list = new ArrayList<>();
         list.add(result);
         return Result.success(list);
     }
@@ -214,7 +211,6 @@ public class SiteModelServiceImpl implements SiteModelService {
     public Result getData(JSONObject param, String sceneCode) {
         String type = param.getString("type");
         if (!"BUILDING".equals(type)) {
-//            throw new RuntimeException("非BUILDING类型");
             log.info("非BUILDING类型,返回空数组");
             return Result.success();
         }
@@ -263,7 +259,6 @@ public class SiteModelServiceImpl implements SiteModelService {
             log.info(msg);
             return new ArrayList<>();
 
-//            return Result.success();
         }
 
         // 递归为对象
@@ -353,8 +348,7 @@ public class SiteModelServiceImpl implements SiteModelService {
     @Override
     public Result initSiteModel(String sceneCode) {
 
-//        initService.initSiteModel(sceneCode);
-//        log.info("初始化siteModel完成: " + sceneCode);
+
 
         SiteModelEntity entity = findById(sceneCode);
         if (entity == null) {