Browse Source

基本稳定版本

wuweihao 4 years ago
parent
commit
671ca86634
21 changed files with 589 additions and 255 deletions
  1. 0 8
      laser/src/main/java/com/fdkankan/indoor/core/controller/LoginController.java
  2. 21 21
      laser/src/main/java/com/fdkankan/indoor/core/entity/dto/SiteModelLatestDto.java
  3. 22 22
      laser/src/main/java/com/fdkankan/indoor/core/entity/siteModel/Polygon.java
  4. 46 46
      laser/src/main/java/com/fdkankan/indoor/core/entity/siteModel/SiteModel.java
  5. 0 1
      laser/src/main/java/com/fdkankan/indoor/core/mapper/PoiMapper.java
  6. 0 1
      laser/src/main/java/com/fdkankan/indoor/core/mapper/PoiTypeMapper.java
  7. 0 1
      laser/src/main/java/com/fdkankan/indoor/core/mapper/SiteModelMapper.java
  8. 0 1
      laser/src/main/java/com/fdkankan/indoor/core/service/LoginService.java
  9. 31 0
      laser/src/main/java/com/fdkankan/indoor/core/service/SiteModelService.java
  10. 3 0
      laser/src/main/java/com/fdkankan/indoor/core/service/SiteService.java
  11. 9 10
      laser/src/main/java/com/fdkankan/indoor/core/service/impl/IBaseServiceImpl.java
  12. 3 2
      laser/src/main/java/com/fdkankan/indoor/core/service/impl/InitServiceImpl.java
  13. 1 14
      laser/src/main/java/com/fdkankan/indoor/core/service/impl/LoginServiceImpl.java
  14. 0 1
      laser/src/main/java/com/fdkankan/indoor/core/service/impl/OwenServiceImpl.java
  15. 32 55
      laser/src/main/java/com/fdkankan/indoor/core/service/impl/PoiServiceImpl.java
  16. 410 0
      laser/src/main/java/com/fdkankan/indoor/core/service/impl/SiteModelServiceImpl.java
  17. 10 0
      laser/src/main/java/com/fdkankan/indoor/core/service/impl/SiteServiceImpl.java
  18. 0 15
      laser/src/main/java/com/fdkankan/indoor/core/service/impl/SysUserServiceImpl.java
  19. 1 1
      laser/src/main/resources/application.properties
  20. 0 42
      laser/src/test/java/com/fdkankan/indoor/core/MongoTest.java
  21. 0 14
      laser/src/test/java/com/fdkankan/indoor/core/service/impl/InitServiceImplTest.java

+ 0 - 8
laser/src/main/java/com/fdkankan/indoor/core/controller/LoginController.java

@@ -71,12 +71,4 @@ public class LoginController {
     }
 
 
-//    @ApiOperation(value = "poi_type_groups", notes = "数据目前是写死的")
-//    @GetMapping("indoor/{sceneCode}/api/poi_type_groups")
-//    public Object poiTypeGroups(@PathVariable String sceneCode){
-//        Result result = loginService.poiTypeGroups(sceneCode);
-//        return result.getData();
-//    }
-
-
 }

+ 21 - 21
laser/src/main/java/com/fdkankan/indoor/core/entity/dto/SiteModelLatestDto.java

@@ -1,21 +1,21 @@
-package com.fdkankan.indoor.core.entity.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * Created by owen on 2021/7/16 0015 11:53
- * 找最近的点位
- */
-@Data
-public class SiteModelLatestDto {
-
-    @ApiModelProperty(value = "返回数量")
-    private Integer size;
-
-    @ApiModelProperty(value = "模糊查询参数")
-    private String query;
-
-
-
-}
+//package com.fdkankan.indoor.core.entity.dto;
+//
+//import io.swagger.annotations.ApiModelProperty;
+//import lombok.Data;
+//
+///**
+// * Created by owen on 2021/7/16 0015 11:53
+// * 找最近的点位
+// */
+//@Data
+//public class SiteModelLatestDto {
+//
+//    @ApiModelProperty(value = "返回数量")
+//    private Integer size;
+//
+//    @ApiModelProperty(value = "模糊查询参数")
+//    private String query;
+//
+//
+//
+//}

+ 22 - 22
laser/src/main/java/com/fdkankan/indoor/core/entity/siteModel/Polygon.java

@@ -1,22 +1,22 @@
-package com.fdkankan.indoor.core.entity.siteModel;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * @author Admin
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-public class Polygon implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    private String type;
-    private List<List<List<Double>>> coordinates;
-}
+//package com.fdkankan.indoor.core.entity.siteModel;
+//
+//import lombok.Data;
+//import lombok.EqualsAndHashCode;
+//import lombok.experimental.Accessors;
+//
+//import java.io.Serializable;
+//import java.util.List;
+//
+///**
+// * @author Admin
+// */
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+//@Accessors(chain = true)
+//public class Polygon implements Serializable {
+//
+//    private static final long serialVersionUID = 1L;
+//
+//    private String type;
+//    private List<List<List<Double>>> coordinates;
+//}

+ 46 - 46
laser/src/main/java/com/fdkankan/indoor/core/entity/siteModel/SiteModel.java

@@ -1,46 +1,46 @@
-package com.fdkankan.indoor.core.entity.siteModel;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.springframework.data.annotation.Transient;
-import org.springframework.data.mongodb.core.mapping.Document;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author Admin
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@Document(collection = "site_model")
-public class SiteModel implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    private Integer id;
-    private String type;
-    private String name;
-    private Polygon polygon;
-    private Double z_min;
-    private Double z_max;
-    private List<Double> center;
-    private Map<String, Object> attributes = new HashMap<>();
-    private Double area;
-    private Double volume;
-    private Long geometry_hash;
-//    private List<SiteModel> children ;
-    private List<SiteModel> children = new ArrayList<>();
-
-    // 父级id, 后端需要,前端不用
-    @Transient
-    @JsonIgnore
-    private Integer parentId;
-
-}
+//package com.fdkankan.indoor.core.entity.siteModel;
+//
+//import com.fasterxml.jackson.annotation.JsonIgnore;
+//import lombok.Data;
+//import lombok.EqualsAndHashCode;
+//import lombok.experimental.Accessors;
+//import org.springframework.data.annotation.Transient;
+//import org.springframework.data.mongodb.core.mapping.Document;
+//
+//import java.io.Serializable;
+//import java.util.ArrayList;
+//import java.util.HashMap;
+//import java.util.List;
+//import java.util.Map;
+//
+///**
+// * @author Admin
+// */
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+//@Accessors(chain = true)
+//@Document(collection = "site_model")
+//public class SiteModel implements Serializable {
+//
+//    private static final long serialVersionUID = 1L;
+//
+//    private Integer id;
+//    private String type;
+//    private String name;
+//    private Polygon polygon;
+//    private Double z_min;
+//    private Double z_max;
+//    private List<Double> center;
+//    private Map<String, Object> attributes = new HashMap<>();
+//    private Double area;
+//    private Double volume;
+//    private Long geometry_hash;
+////    private List<SiteModel> children ;
+//    private List<SiteModel> children = new ArrayList<>();
+//
+//    // 父级id, 后端需要,前端不用
+//    @Transient
+//    @JsonIgnore
+//    private Integer parentId;
+//
+//}

+ 0 - 1
laser/src/main/java/com/fdkankan/indoor/core/mapper/PoiMapper.java

@@ -1,6 +1,5 @@
 package com.fdkankan.indoor.core.mapper;
 
-import com.fdkankan.indoor.core.entity.FilterEntity;
 import com.fdkankan.indoor.core.entity.PoiEntity;
 import org.springframework.data.mongodb.repository.MongoRepository;
 import org.springframework.stereotype.Component;

+ 0 - 1
laser/src/main/java/com/fdkankan/indoor/core/mapper/PoiTypeMapper.java

@@ -1,6 +1,5 @@
 package com.fdkankan.indoor.core.mapper;
 
-import com.fdkankan.indoor.core.entity.PoiEntity;
 import com.fdkankan.indoor.core.entity.PoiTypeEntity;
 import org.springframework.data.mongodb.repository.MongoRepository;
 import org.springframework.stereotype.Component;

+ 0 - 1
laser/src/main/java/com/fdkankan/indoor/core/mapper/SiteModelMapper.java

@@ -1,6 +1,5 @@
 package com.fdkankan.indoor.core.mapper;
 
-import com.fdkankan.indoor.core.entity.PoiEntity;
 import com.fdkankan.indoor.core.entity.SiteModelEntity;
 import org.springframework.data.mongodb.repository.MongoRepository;
 import org.springframework.stereotype.Component;

+ 0 - 1
laser/src/main/java/com/fdkankan/indoor/core/service/LoginService.java

@@ -21,7 +21,6 @@ public interface LoginService {
 
     Result users(String sceneCode);
 
-//    Result poiTypeGroups(String sceneCode);
 
 
 }

+ 31 - 0
laser/src/main/java/com/fdkankan/indoor/core/service/SiteModelService.java

@@ -0,0 +1,31 @@
+//package com.fdkankan.indoor.core.service;
+//
+//import com.alibaba.fastjson.JSONObject;
+//import com.fdkankan.indoor.base.util.Result;
+//import com.fdkankan.indoor.core.entity.dto.SiteModelSearchDto;
+//import com.fdkankan.indoor.core.entity.SiteModelEntity;
+//import com.fdkankan.indoor.core.entity.siteModel.SiteModel;
+//
+///**
+// * @author Admin
+// */
+//public interface SiteModelService {
+//
+//
+//
+//    Result withinType(String code, Double[] location, String type);
+//
+//    SiteModel findById(Long id, String code);
+//
+//    Result getData(JSONObject param, String code);
+//
+//    Result search(String sceneCode, SiteModelSearchDto searchDto);
+//
+//    Result latest(String sceneCode, Double[] location, Double radius);
+//
+//    Result testData(String sceneCode);
+//
+//    Result withinType_5(String code, Double[] location, String type);
+//
+//    void save(SiteModelEntity entity);
+//}

+ 3 - 0
laser/src/main/java/com/fdkankan/indoor/core/service/SiteService.java

@@ -2,6 +2,7 @@ package com.fdkankan.indoor.core.service;
 
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.indoor.base.util.Result;
+import com.fdkankan.indoor.core.entity.SiteModelEntity;
 import com.fdkankan.indoor.core.entity.dto.SiteModelSearchDto;
 
 /**
@@ -17,4 +18,6 @@ public interface SiteService {
     Result withinType(String sceneCode, Double[] location, String type);
 
     Result getData(JSONObject param, String sceneCode);
+
+    void save(SiteModelEntity entity);
 }

+ 9 - 10
laser/src/main/java/com/fdkankan/indoor/core/service/impl/IBaseServiceImpl.java

@@ -22,23 +22,22 @@ public class IBaseServiceImpl {
      * @param dto
      * @return
      */
-    public SecurityDto isLogin(SecurityDto dto){
-        if(checkToken()) {
-            dto.setCan_write(true);
-        } else {
-            dto.setCan_write(false);
-        }
-        return dto;
-    }
+//    public SecurityDto isLogin(SecurityDto dto){
+//        if(checkToken()) {
+//            dto.setCan_write(true);
+//        } else {
+//            dto.setCan_write(false);
+//        }
+//        return dto;
+//    }
 
 
     /**
      * 检查登录
      * @return
      */
-    private Boolean checkToken(){
+    public Boolean isLogin(){
         String token = request.getHeader("X-Authorization");
-//        String token = request.getHeader("token");
         log.info("token: {}", token);
         if (token == null) {
             // 未登录

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

@@ -53,8 +53,9 @@ public class InitServiceImpl implements InitService {
     @Autowired
     PoiTypeGroupService poiTypeGroupService;
 
+
     @Autowired
-    SiteModelService siteModelService;
+    SiteService siteService;
 
     @Autowired
     SpecialPointService specialPointService;
@@ -335,7 +336,7 @@ public class InitServiceImpl implements InitService {
         entity.setUpdateTime(LocalDateTime.now());
         // 默认热点为空
         entity.setData(siteModels);
-        siteModelService.save(entity);
+        siteService.save(entity);
         log.info("siteModel数据初始化创建完成");
     }
 

+ 1 - 14
laser/src/main/java/com/fdkankan/indoor/core/service/impl/LoginServiceImpl.java

@@ -102,13 +102,7 @@ public class LoginServiceImpl  extends IBaseServiceImpl implements LoginService
         return Result.success(vo.getData());
     }
 
-//    @Override
-//    public Result configs(String sceneCode) {
-//        Query query = new Query();
-//        query.addCriteria(Criteria.where("sceneCode").is(sceneCode));
-//        BaseVo vo = mongoTemplate.findOne(query, BaseVo.class, "t_configs");
-//        return Result.success(vo.getData());
-//    }
+
 
     @Override
     public Result configs(String sceneCode) {
@@ -147,13 +141,6 @@ public class LoginServiceImpl  extends IBaseServiceImpl implements LoginService
         return Result.success(vo.getData());
     }
 
-//    @Override
-//    public Result poiTypeGroups(String sceneCode) {
-//        Query query = new Query();
-//        query.addCriteria(Criteria.where("sceneCode").is(sceneCode));
-//        BaseVo vo = mongoTemplate.findOne(query, BaseVo.class, "t_poi_type_groups");
-//        return Result.success(vo.getData());
-//    }
 
 
     public SecurityDto changeSecurity(SecurityDto dto){

+ 0 - 1
laser/src/main/java/com/fdkankan/indoor/core/service/impl/OwenServiceImpl.java

@@ -7,7 +7,6 @@ import com.fdkankan.indoor.core.service.OwenService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-//import org.springframework.transaction.annotation.Transactional;
 
 /**
  * Created by owen on 2021/7/28 0028 20:05

+ 32 - 55
laser/src/main/java/com/fdkankan/indoor/core/service/impl/PoiServiceImpl.java

@@ -8,6 +8,7 @@ import com.fdkankan.indoor.core.entity.dto.PoiHotDto;
 import com.fdkankan.indoor.core.entity.dto.PoiSearchDto;
 import com.fdkankan.indoor.core.entity.dto.PoiTypeDto;
 import com.fdkankan.indoor.core.entity.PoiEntity;
+import com.fdkankan.indoor.core.entity.dto.SecurityDto;
 import com.fdkankan.indoor.core.entity.poi.PoiBaseEntity;
 import com.fdkankan.indoor.core.mapper.PoiMapper;
 import com.fdkankan.indoor.core.service.PoiService;
@@ -28,7 +29,7 @@ import java.util.stream.Collectors;
  */
 @Slf4j
 @Service
-public class PoiServiceImpl implements PoiService {
+public class PoiServiceImpl extends IBaseServiceImpl implements PoiService {
 
     @Autowired
     MongoTemplate mongoTemplate;
@@ -39,19 +40,6 @@ public class PoiServiceImpl implements PoiService {
     @Autowired
     PoiMapper entityMapper;
 
-//    @Override
-//    public Result findBySceneCodeAndId(String code, Integer id) {
-//        log.info("code:{}, id:{}", code, id);
-//        Query query = new Query();
-//        query.addCriteria(Criteria.where("sceneCode").is(code));
-//        PoiBaseEntity poiEtity = mongoTemplate.findOne(query, PoiBaseEntity.class);
-//        if (poiEtity == null) {
-//            throw new RuntimeException("没有此场景数据");
-//        }
-//        Object result = findByDataId(id, poiEtity);
-//
-//        return Result.success(result);
-//    }
 
     @Override
     public Result findBySceneCodeAndId(String code, Integer id) {
@@ -59,7 +47,13 @@ public class PoiServiceImpl implements PoiService {
         List<PoiHotDto> data = findDataBySceneCode(code);
         data = data.stream().filter(p -> id.equals(p.getId())).collect(Collectors.toList());
 
-        return Result.success(data.get(0));
+        if (isLogin()) {
+            return Result.success(data.get(0));
+        }
+
+        PoiHotDto dto = data.get(0);
+        dto.setSecurity(changeSecurityUnLogin());
+        return Result.success(dto);
     }
 
 
@@ -150,7 +144,10 @@ public class PoiServiceImpl implements PoiService {
     @Override
     public Result filter(String sceneCode) {
         List<PoiHotDto> data = findDataBySceneCode(sceneCode);
-        return Result.success(data);
+        if (isLogin()) {
+            return Result.success(data);
+        }
+        return Result.success(changeSecurityUnLoginList(data));
     }
 
     private void update(PoiEntity vo){
@@ -178,7 +175,6 @@ public class PoiServiceImpl implements PoiService {
 
     // 前端需要, 映射实体
     private List<Object> ormPoi(List<PoiHotDto> pois){
-
         List<Object> result = new ArrayList<>();
         for (PoiHotDto o : pois) {
             JSONObject resJson = new JSONObject();
@@ -198,6 +194,24 @@ public class PoiServiceImpl implements PoiService {
 
     }
 
+    /**
+     * 未登录, can_write: false
+     * @param dto
+     * @return
+     */
+    private SecurityDto changeSecurityUnLogin(){
+        SecurityDto dto = new SecurityDto();
+        dto.setCan_write(false);
+        dto.setGroup_read(0);
+        dto.setGroup_write(1);
+        return dto;
+    }
+
+    private List<PoiHotDto> changeSecurityUnLoginList(List<PoiHotDto> param){
+        List<PoiHotDto> collect = param.stream().peek(p -> p.setSecurity(changeSecurityUnLogin())).collect(Collectors.toList());
+            return collect;
+    }
+
 
     private Boolean getContent(PoiHotDto p, String searchKey){
         String titles = p.getTitles().getZh();
@@ -206,45 +220,8 @@ public class PoiServiceImpl implements PoiService {
     }
 
 
-    /**
-     *
-     * @param id data数据里的id
-     * @param poiEtity 文档对象
-     * @return
-     */
-    private Object findByDataId(Integer id, PoiBaseEntity poiEtity){
-        List list = poiEtity.getData();
-        JSONArray array= JSONArray.parseArray(JSON.toJSONString(list));
-        for (Object o : array) {
-            JSONObject cheld = JSONObject.parseObject(o.toString());
-            Integer cheldId = cheld.getInteger("_id");
-            log.info("cheldId: {}", cheldId);
-            if (id == cheldId){
-                return cheld;
-            }
-        }
-        return null;
-    }
-
-    /**
-     *
-     * @return
-     */
-//    private Object findByDataId(Integer id, List<PoiHotDto> data){
-//        JSONArray array= JSONArray.parseArray(JSON.toJSONString(list));
-//        for (Object o : array) {
-//            JSONObject cheld = JSONObject.parseObject(o.toString());
-//            Integer cheldId = cheld.getInteger("id");
-//            log.info("cheldId: {}", cheldId);
-//            if (id == cheldId){
-//                return cheld;
-//            }
-//        }
-//        return null;
-//    }
-
-
     public static void main(String[] args) {
+
         List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
 
         IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x).summaryStatistics();

+ 410 - 0
laser/src/main/java/com/fdkankan/indoor/core/service/impl/SiteModelServiceImpl.java

@@ -0,0 +1,410 @@
+//package com.fdkankan.indoor.core.service.impl;
+//
+//import com.alibaba.fastjson.JSON;
+//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.Result;
+//import com.fdkankan.indoor.core.entity.dto.SiteModelSearchDto;
+//import com.fdkankan.indoor.core.entity.SiteModelEntity;
+//import com.fdkankan.indoor.core.entity.siteModel.Polygon;
+//import com.fdkankan.indoor.core.entity.siteModel.SiteModel;
+//import com.fdkankan.indoor.core.mapper.SiteModelMapper;
+//import com.fdkankan.indoor.core.service.SiteModelService;
+//import com.fdkankan.indoor.core.entity.vo.BaseVo;
+//import lombok.AllArgsConstructor;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.BeanUtils;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.data.mongodb.core.MongoTemplate;
+//import org.springframework.data.mongodb.core.query.Criteria;
+//import org.springframework.data.mongodb.core.query.Query;
+//import org.springframework.stereotype.Service;
+//import org.springframework.util.CollectionUtils;
+//
+//import java.awt.geom.Point2D;
+//import java.util.ArrayList;
+//import java.util.HashSet;
+//import java.util.List;
+//import java.util.Set;
+//import java.util.stream.Collectors;
+//
+///**
+// * @author Admin
+// */
+//@Service
+//@Slf4j
+//@AllArgsConstructor
+//public class SiteModelServiceImpl implements SiteModelService {
+//
+//    private final MongoTemplate mongoTemplate;
+//
+//    @Autowired
+//    SiteModelMapper entityMapper;
+//
+//    private SiteModelEntity findBySceneCode_5(String sceneCode){
+//        Query query = new Query();
+//        query.addCriteria(Criteria.where("sceneCode").is(sceneCode));
+//        SiteModelEntity vo = mongoTemplate.findOne(query, SiteModelEntity.class, "t_site_model");
+//        return vo;
+//    }
+//
+//
+//    @Override
+//    public Result withinType_5(String code, Double[] location, String type) {
+//
+//        return null;
+//    }
+//
+//    @Override
+//    public void save(SiteModelEntity entity) {
+//        entityMapper.insert(entity);
+//    }
+//
+//
+//    /**************************************************************************************************/
+//
+//
+//    @Override
+//    public Result withinType(String code, Double[] location, String type) {
+//        log.info("code: {}", code);
+//        log.info("location: {}", location);
+//        log.info("code: {}", type);
+//
+//        // 总对象
+//        List<SiteModel> models = new ArrayList<>();
+//
+//        SiteModel siteModel = findBySceneCode(code);
+//        // copy实体对象
+//        SiteModel newSiteModel = copyModelNotContainChildren(siteModel);
+//        // 做为父节点的低一条
+//        models.add(newSiteModel);
+//        if (!CollectionUtils.isEmpty(siteModel.getChildren())) {
+//            organizeModels2(siteModel, models);
+//        }
+//
+//
+//        // 按type封装成对象数组
+//        List<SiteModel> resultList = new ArrayList<>();
+//        SiteModel result = null;
+//
+//        Point2D.Double pointParam = new Point2D.Double(location[0], location[1]);
+//        log.info("pointParam: {}", pointParam);
+//        if ("BUILDING".equals(type)) {
+//             resultList =  models.stream().filter(data -> "BUILDING".equals(data.getType())).collect(Collectors.toList());
+//            result = resultList.stream().filter(sm -> getSm(sm, pointParam)).findAny()
+//                    .orElseThrow(() -> new RuntimeException("没有找到符合多边形的点"));
+//        } else if ("FLOOR".equals(type)) {
+//            resultList =  models.stream().filter(data -> "FLOOR".equals(data.getType())).collect(Collectors.toList());
+//            log.info("resultList.size: {}", resultList.size());
+//
+//            result = resultList.stream().filter(sm -> getSmByFloor(sm, pointParam)).findAny().orElseThrow(() -> new RuntimeException("没有找到符合多边形的点"));
+//        } else if ("ROOM".equals(type)) {
+//            resultList =  models.stream().filter(data -> "ROOM".equals(data.getType())).collect(Collectors.toList());
+//            result = resultList.stream().filter(sm -> getSm(sm, pointParam)).findAny()
+//                    .orElseThrow(() -> new RuntimeException("没有找到符合多边形的点"));
+//            // type为空,返回全部数据
+//        } else {
+//            resultList =  models.stream().filter(data -> "ROOM".equals(data.getType())).collect(Collectors.toList());
+//            result = resultList.stream().filter(sm -> getSm(sm, pointParam)).findAny()
+//                    .orElseThrow(() -> new RuntimeException("没有找到符合多边形的点"));
+//
+//            List<SiteModel> roomChildren = new ArrayList<>();
+//            roomChildren.add(result);
+//            siteModel.setChildren(roomChildren);
+//            result = siteModel;
+//        }
+//
+//        log.info("result: {}", result);
+//        ArrayList<Object> list = new ArrayList<>();
+//        list.add(result);
+//        return Result.success(list);
+//
+//    }
+//
+//
+//    /**
+//     * 2021-07-20
+//     * 根据场景码查询对象
+//     *
+//     * 2021-07-28 目前表存的数据结构是对象, 正确应该是数组
+//     * 返回结果对象也是一个数组
+//     * @param sceneCode
+//     * @return
+//     */
+//    private SiteModel findBySceneCode(String sceneCode){
+//        Query query = new Query();
+//        query.addCriteria(Criteria.where("sceneCode").is(sceneCode));
+//        BaseVo vo = mongoTemplate.findOne(query, BaseVo.class, "t_site_model");
+//        log.info("vo: {}", vo);
+//        Object data = vo.getData();
+//        String s = JSON.toJSONString(data);
+//        SiteModel siteModel = JSONObject.parseObject(s, SiteModel.class);
+//        return siteModel;
+//    }
+//
+//    @Override
+//    public SiteModel findById(Long id, String code) {
+//
+//        SiteModel siteModel = findBySceneCode(code);
+//        return siteModel;
+//    }
+//
+//    @Override
+//    public Result getData(JSONObject param, String code) {
+//        String type = param.getString("type");
+//        if (!"BUILDING".equals(type)) {
+//            throw new RuntimeException("非BUILDING类型");
+//        }
+//
+//
+//        SiteModel siteModel = findBySceneCode(code);
+//
+//        if (siteModel != null) {
+//            siteModel.setChildren(new ArrayList<>());
+//            return Result.success(siteModel);
+//        }
+//
+//        return Result.success();
+//    }
+//
+//    @Override
+//    public Result search(String sceneCode, SiteModelSearchDto searchDto) {
+//        SiteModel siteModel = findBySceneCode(sceneCode);
+//
+//        List<SiteModel> loopModel = getLoopModel(siteModel);
+//        String searchKey = searchDto.getQuery();
+//        Integer size = searchDto.getSize();
+//        size = size==null?10: size;
+//        List<SiteModel> collect = loopModel.stream().filter(p -> getContent(p, searchKey)).limit(size).collect(Collectors.toList());
+//        log.info("返回collect数量: {}", collect.size());
+//
+//        // 映射实体名称
+//        List<Object> result = ormSiteModel(collect);
+//
+//        return Result.success(result);
+//    }
+//
+//    @Override
+//    public Result latest(String sceneCode, Double[] location, Double radius) {
+//        SiteModel siteModel = findBySceneCode(sceneCode);
+//
+//        // 递归为对象
+//        List<SiteModel> loopModel = getLoopModel(siteModel);
+//
+//        // 获取点在多边形的集合
+//        List<SiteModel> result = loopModel.stream().filter(p -> pointIsArea(location, p)).collect(Collectors.toList());
+//
+//        log.info("没有父级的数量:{}", result.size());
+//        // 将父级有parenId的对象添加到result
+//        addSiteMode(loopModel, result);
+//        log.info("添加父级后的数量:{}", result.size());
+//
+//
+//        return Result.success(loopModel);
+//    }
+//
+//    @Override
+//    public Result testData(String sceneCode) {
+//        SiteModel SiteModel = findBySceneCode(sceneCode);
+//        return Result.success(SiteModel);
+//    }
+//
+//
+//    /**
+//     * 将父节点添加到结果集
+//     * @param loopModel
+//     * @param result
+//     */
+//    private void addSiteMode(List<SiteModel> loopModel, List<SiteModel> result) {
+//        Set<SiteModel> parentSiteModel = getParentSiteModel(loopModel, result);
+//        for (SiteModel siteModel : parentSiteModel) {
+//            result.add(siteModel);
+//        }
+//    }
+//
+//    /**
+//     * 获取父节点
+//     * @param loopModel
+//     * @param result
+//     * @return
+//     */
+//    private Set<SiteModel> getParentSiteModel(List<SiteModel> loopModel, List<SiteModel> result){
+//        Set<SiteModel>  parent = new HashSet<>();
+//        for (SiteModel siteModel : loopModel) {
+//            for (SiteModel model : result) {
+//                if (model.getParentId() == siteModel.getId()) {
+//                    parent.add(siteModel);
+//                }
+//            }
+//        }
+//        return parent;
+//    }
+//
+//
+//    /**
+//     * 输入点是否在多边形内
+//     * @param point
+//     * @param param
+//     * @return
+//     */
+//    private boolean pointIsArea(Double[] point, SiteModel param){
+//        // 获取多边行点
+//        Polygon polygon = param.getPolygon();
+//        if (polygon == null) {
+//            return false;
+//        }
+//        List<List<List<Double>>> coordinates = polygon.getCoordinates();
+//        if (CollectionUtils.isEmpty(coordinates)){
+//            return false;
+//        }
+//        List<List<Double>> lists = coordinates.get(0);
+//        if (CollectionUtils.isEmpty(lists)){
+//            return false;
+//        }
+//
+//        Point2D.Double pointDouble = new Point2D.Double();
+//        pointDouble.setLocation(point[0], point[1]);
+//
+//
+//        List<Point2D.Double> allPoints = lists.stream()
+//                .map(points -> new Point2D.Double(points.get(0), points.get(1))).collect(Collectors.toList());
+//
+//        Boolean inArea = GisUtils.rayCasting(allPoints, pointDouble);
+//        log.info("是否在多边型内: {}",  inArea);
+//
+//        return inArea;
+//    }
+//
+//
+//
+//
+//
+//    // 前端需要, 映射实体
+//    private List<Object> ormSiteModel(List<SiteModel> collect){
+//        List<Object> list = new ArrayList<>();
+//        for (SiteModel siteModel : collect) {
+//            JSONObject jsonObject = new JSONObject();
+//            jsonObject.put("id", siteModel.getId());
+//            jsonObject.put("title", siteModel.getName());
+//            jsonObject.put("matching_title", siteModel.getName());
+//            jsonObject.put("matching_description", null);
+//            list.add(jsonObject);
+//        }
+//        return list;
+//
+//    }
+//
+//    // 模糊匹配
+//    private Boolean getContent(SiteModel p, String searchKey){
+//        String name = p.getName();
+//        log.info("name: {}, 配备结果:{}", name, name.contains(searchKey));
+//        return name.contains(searchKey);
+//    }
+//
+//
+//
+//    // 判断的坐标在那个空间位置
+//    private boolean getSm(SiteModel model, Point2D.Double pointParam) {
+//        if (CollectionUtils.isEmpty(model.getPolygon().getCoordinates())
+//                || CollectionUtils.isEmpty(model.getPolygon().getCoordinates().get(0))
+//                || CollectionUtils.isEmpty(model.getPolygon().getCoordinates().get(0).get(0))) {
+//            return false;
+//        }
+//
+//        List<Point2D.Double> allPoints = model.getPolygon().getCoordinates().get(0).stream()
+//                .map(points -> new Point2D.Double(points.get(0), points.get(1))).collect(Collectors.toList());
+//        if (JsonUtil.IsPtInPoly(pointParam, allPoints)) {
+//            return true;
+//        }
+//        return false;
+//    }
+//
+//    /**
+//     * type=FLOOR 时,polygon=null
+//     * @param model
+//     * @param pointParam
+//     * @return
+//     */
+//    private boolean getSmByFloor(SiteModel model, Point2D.Double pointParam) {
+//        Polygon polygon = model.getPolygon();
+//        if (polygon == null) {
+//            return true;
+//        }
+//
+//        List<Point2D.Double> allPoints = model.getPolygon().getCoordinates().get(0).stream()
+//                .map(points -> new Point2D.Double(points.get(0), points.get(1))).collect(Collectors.toList());
+//        if (JsonUtil.IsPtInPoly(pointParam, allPoints)) {
+//            return true;
+//        }
+//        return false;
+//    }
+//
+//
+//    // 把当前节点的children 设为空数组
+//    private SiteModel copyModelNotContainChildren(SiteModel siteModel) {
+//        SiteModel newSiteModel = new SiteModel();
+//        BeanUtils.copyProperties(siteModel, newSiteModel);
+//        // 设置空数组
+//        newSiteModel.setChildren(new ArrayList<>());
+//        return newSiteModel;
+//    }
+//
+//
+//
+//
+//
+//
+//
+//
+//    /**
+//     * 2021-07-14
+//     * 获取原来的对象test1 一共是17条
+//     * @param siteModel
+//     * @param models 数量回保存到原来的数据
+//     */
+//    private void organizeModels2(SiteModel siteModel, List<SiteModel> models) {
+//        for (SiteModel child : siteModel.getChildren()) {
+//            models.add(copyModelNotContainChildren(child));
+//            if (!CollectionUtils.isEmpty(child.getChildren())) {
+//                organizeModels2(child, models);
+//            }
+//        }
+////        log.info("models.size: {}", models.size());
+//    }
+//
+//
+//    private void organizeModels3(SiteModel siteModel, List<SiteModel> models) {
+//        for (SiteModel child : siteModel.getChildren()) {
+//            Integer id = siteModel.getId();
+//            child.setParentId(id);
+//            models.add(copyModelNotContainChildren(child));
+//            if (!CollectionUtils.isEmpty(child.getChildren())) {
+//                organizeModels3(child, models);
+//            }
+//        }
+////        log.info("models.size: {}", models.size());
+//    }
+//
+//
+//    /**
+//     * 2021-07-16
+//     * 递归出每一个对象
+//     * @param siteModel
+//     * @return
+//     */
+//    private List<SiteModel> getLoopModel(SiteModel siteModel){
+//        List<SiteModel> models = new ArrayList<>();
+//        // copy实体对象
+//        SiteModel newSiteModel = copyModelNotContainChildren(siteModel);
+//        // 做为父节点的低一条
+//        models.add(newSiteModel);
+//        if (!CollectionUtils.isEmpty(siteModel.getChildren())) {
+////            organizeModels2(siteModel, models);
+//            organizeModels3(siteModel, models);
+//        }
+//        log.info("models.size: {}", models.size());
+//        return models;
+//
+//    }
+//}

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

@@ -4,10 +4,12 @@ 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.Result;
+import com.fdkankan.indoor.core.entity.SiteModelEntity;
 import com.fdkankan.indoor.core.entity.dto.SiteDto;
 import com.fdkankan.indoor.core.entity.dto.SiteModelSearchDto;
 import com.fdkankan.indoor.core.entity.dto.SitePolygon;
 import com.fdkankan.indoor.core.entity.SiteEntity;
+import com.fdkankan.indoor.core.mapper.SiteModelMapper;
 import com.fdkankan.indoor.core.service.SiteService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -35,6 +37,9 @@ public class SiteServiceImpl implements SiteService {
     @Autowired
     MongoTemplate mongoTemplate;
 
+    @Autowired
+    SiteModelMapper entityMapper;
+
     @Override
     public Result findBySceneCodeAndId(String sceneCode, Long id) {
         List list = getDataBySceneCode(sceneCode);
@@ -154,6 +159,11 @@ public class SiteServiceImpl implements SiteService {
         return null;
     }
 
+    @Override
+    public void save(SiteModelEntity entity) {
+        entityMapper.insert(entity);
+    }
+
 
     // 判断的坐标在那个空间位置
     private boolean getSm(SiteDto model, Point2D.Double pointParam) {

+ 0 - 15
laser/src/main/java/com/fdkankan/indoor/core/service/impl/SysUserServiceImpl.java

@@ -28,19 +28,4 @@ public class SysUserServiceImpl implements SysUserService {
     }
 
 
-//    @Override
-//    public SysUserEntity findByUserName(String username) {
-//        log.info("param: {}", username);
-//        SysUserEntity entity = new SysUserEntity();
-//        entity.setUsername(username);
-//        Example<SysUserEntity> example = Example.of(entity);
-//        Optional<SysUserEntity> one = sysUserMapper.findOne(example);
-//        log.info("返回结果: {}", one);
-//        boolean present = one.isPresent();
-//        if (present) {
-//            return one.get();
-//        }
-//
-//        return null;
-//    }
 }

+ 1 - 1
laser/src/main/resources/application.properties

@@ -10,4 +10,4 @@ logging.level.com.fdkankan=info
 
 # \uFFFD\uFFFD\u013F\uFFFD\uFFFD\uFFFD\uFFFD
 project.en=age_camera_germany
-project.sc=\u5FB7\u56FD\u8F6C\u53F0\u76F8\u673A
+project.sc=\u5FB7\u56FD\u6FC0\u5149\u76F8\u673A

+ 0 - 42
laser/src/test/java/com/fdkankan/indoor/core/MongoTest.java

@@ -1,42 +0,0 @@
-package com.fdkankan.indoor.core;
-
-import com.fdkankan.indoor.core.entity.jsonData.JsonData;
-import com.fdkankan.indoor.core.entity.siteModel.SiteModel;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.data.mongodb.core.MongoTemplate;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import java.util.List;
-
-@SpringBootTest
-@RunWith(SpringRunner.class)
-public class MongoTest {
-
-    @Autowired
-    private MongoTemplate mongoTemplate;
-
-    @Test
-    public void queryJsonData() {
-        JsonData s = mongoTemplate.findAll(JsonData.class).get(0);
-        System.out.println(s);
-//        if (userList != null && userList.size() > 0) {
-//            userList.forEach(user -> {
-//                System.out.println(user.toString());
-//            });
-//        }
-    }
-
-    @Test
-    public void querySiteModel() {
-        List<SiteModel> userList = mongoTemplate.findAll(SiteModel.class);
-        if (userList != null && userList.size() > 0) {
-            userList.forEach(user -> {
-                System.out.println(user.toString());
-            });
-        }
-    }
-
-}

+ 0 - 14
laser/src/test/java/com/fdkankan/indoor/core/service/impl/InitServiceImplTest.java

@@ -1,14 +0,0 @@
-package com.fdkankan.indoor.core.service.impl;
-
-import org.junit.Test;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-/**
- * Created by owen on 2021/7/28 0028 15:54
- */
-class InitServiceImplTest {
-
-
-
-}