wuweihao 4 лет назад
Родитель
Сommit
71284b651a

+ 1 - 1
laser/src/main/java/com/fdkankan/indoor/core/controller/ControlPointController.java

@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.*;
  */
 @Api(tags = "控制点管理")
 @RestController
-@RequestMapping("indoor/api/controlPoint")
+//@RequestMapping("indoor/api/controlPoint")
 public class ControlPointController {
 
     @Autowired

+ 1 - 1
laser/src/main/java/com/fdkankan/indoor/core/entity/RouteEntity.java

@@ -16,7 +16,7 @@ import java.util.List;
 public class RouteEntity extends BaseEntity {
 
 
-    private String sceneCode;
+//    private String sceneCode;
 
     private List<String> data;
 

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

@@ -10,5 +10,5 @@ import org.springframework.stereotype.Component;
 @Component
 public interface RouteMapper extends MongoRepository<RouteEntity, String> {
 
-    RouteEntity findBySceneCode(String sceneCode);
+//    RouteEntity findBySceneCode(String sceneCode);
 }

+ 5 - 0
laser/src/main/java/com/fdkankan/indoor/core/service/impl/ControlPointServiceImpl.java

@@ -1,6 +1,8 @@
 package com.fdkankan.indoor.core.service.impl;
 
 import cn.hutool.core.util.StrUtil;
+import com.fdkankan.indoor.base.constant.MsgCode;
+import com.fdkankan.indoor.base.exception.BaseRuntimeException;
 import com.fdkankan.indoor.base.util.Result;
 import com.fdkankan.indoor.core.entity.ConfigEntity;
 import com.fdkankan.indoor.core.entity.ControlPointEntity;
@@ -58,6 +60,9 @@ public class ControlPointServiceImpl implements ControlPointService {
     @Override
     public ControlPointEntity findById(String id) {
         Optional<ControlPointEntity> optional = entityMapper.findById(id);
+        if (!optional.isPresent()) {
+            throw new BaseRuntimeException(MsgCode.e3001, "控制点对象不存在");
+        }
         return optional.get();
     }
 

+ 27 - 8
laser/src/main/java/com/fdkankan/indoor/core/service/impl/DataSetServiceImpl.java

@@ -16,6 +16,7 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
@@ -46,18 +47,36 @@ public class DataSetServiceImpl extends IBaseServiceImpl implements DataSetServi
 
         DataSetEntity entity = findById(sceneCode);
         List<DataSetPo> data = entity.getData();
-
         log.info("db数据量: {}", data.size());
 
-        // 将热点id提取出来做过滤条件
-        List<Integer> argIds = param.stream().map(DataSetPo::getId).collect(Collectors.toList());
-        log.info("参数id数量: {}", argIds.size());
 
-        data = data.stream().filter(p -> !argIds.contains(p.getId())).collect(Collectors.toList());
-        log.info("不需要更新的数据量: {}", data.size());
+        Integer maxId;
+        if (data.size() == 0){
+            maxId = 0;
+        } else {
+            // 将热点id提取出来做过滤条件
+            List<Integer> argIds = param.stream().map(DataSetPo::getId).collect(Collectors.toList());
+            log.info("参数id数量: {}", argIds.size());
+
+            data = data.stream().filter(p -> !argIds.contains(p.getId())).collect(Collectors.toList());
+            log.info("不需要更新的数据量: {}", data.size());
+
+            // 获取最大id
+            Optional<DataSetPo> max = data.stream().max(Comparator.comparingInt(DataSetPo::getId));
+            maxId = max.get().getId();
+        }
+
+        // 合并两个流, 处理id
+        for (DataSetPo dto : param) {
+            if (dto.getId() == null) {
+                maxId ++;
+                log.info("处理后maxId: {}", maxId);
+                dto.setId(maxId);
+            }
+
+            data.add(dto);
+        }
 
-        // 添加更新参数
-        data.addAll(param);
         log.info("需要更新db数据量: {}", data.size());
 
         // 更新db

+ 26 - 7
laser/src/main/java/com/fdkankan/indoor/core/service/impl/FilterServiceImpl.java

@@ -4,6 +4,7 @@ import com.fdkankan.indoor.base.convert.DistanceUtil;
 import com.fdkankan.indoor.base.util.*;
 import com.fdkankan.indoor.core.entity.dto.*;
 import com.fdkankan.indoor.core.entity.FilterEntity;
+import com.fdkankan.indoor.core.entity.po.DataSetPo;
 import com.fdkankan.indoor.core.mapper.FilterMapper;
 import com.fdkankan.indoor.core.service.FilterService;
 import lombok.extern.slf4j.Slf4j;
@@ -163,15 +164,33 @@ public class FilterServiceImpl implements FilterService {
         List<FilterHotDto> data = entity.getData();
         log.info("db数据量: {}", data.size());
 
-        // 将热点id提取出来做过滤条件
-        List<Integer> argIds = param.stream().map(FilterHotDto::getId).collect(Collectors.toList());
-        log.info("参数id数量: {}", argIds.size());
+        Integer maxId;
+        if (data.size() == 0){
+            maxId = 0;
+        } else {
+            // 将热点id提取出来做过滤条件
+            List<Integer> argIds = param.stream().map(FilterHotDto::getId).collect(Collectors.toList());
+            log.info("参数id数量: {}", argIds.size());
 
-        data = data.stream().filter(p -> !argIds.contains(p.getId())).collect(Collectors.toList());
-        log.info("不需要更新的数据量: {}", data.size());
+            data = data.stream().filter(p -> !argIds.contains(p.getId())).collect(Collectors.toList());
+            log.info("不需要更新的数据量: {}", data.size());
+
+            // 获取最大id
+            Optional<FilterHotDto> max = data.stream().max(Comparator.comparingInt(FilterHotDto::getId));
+            maxId = max.get().getId();
+        }
+
+        // 合并两个流, 处理id
+        for (FilterHotDto dto : param) {
+            if (dto.getId() == null) {
+                maxId ++;
+                log.info("处理后maxId: {}", maxId);
+                dto.setId(maxId);
+            }
+
+            data.add(dto);
+        }
 
-        // 添加更新参数
-        data.addAll(param);
         log.info("需要更新db数据量: {}", data.size());
 
         // 更新db

+ 27 - 14
laser/src/main/java/com/fdkankan/indoor/core/service/impl/InitServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.fdkankan.indoor.base.constant.CmdConstant;
 import com.fdkankan.indoor.base.constant.ConfigConstant;
+import com.fdkankan.indoor.base.constant.MsgCode;
 import com.fdkankan.indoor.base.constant.TypeConstant;
 import com.fdkankan.indoor.base.convert.*;
 import com.fdkankan.indoor.base.exception.BaseRuntimeException;
@@ -93,6 +94,11 @@ public class InitServiceImpl implements InitService {
             return Result.failure("场景码或路径不能为空");
         }
 
+        path = "/laserData";
+
+        // step1 创建t_route表
+        createRoute(sceneCode, path);
+
         // step3 创建poi表, 热点,默认没有
         createPoi(sceneCode);
 
@@ -102,8 +108,7 @@ public class InitServiceImpl implements InitService {
         // step5 创建poi_type_group表
         createPoiTypeGroup(sceneCode);
 
-        // step6 创建t_route表
-        createRoute(sceneCode, path);
+
 
 
         // step7 复制静态资源
@@ -221,6 +226,9 @@ public class InitServiceImpl implements InitService {
     @Override
     public InitEntity findById(String id) {
         Optional<InitEntity> optional = initMapper.findById(id);
+        if (!optional.isPresent()){
+            throw new BaseRuntimeException(MsgCode.e3001, "初始化数据不存在");
+        }
         return optional.get();
     }
 
@@ -228,10 +236,8 @@ public class InitServiceImpl implements InitService {
         path = path +"/vision.txt";
         JSONArray jsonArray = convertToPanoInfoFor4dkk.createFilter(sceneCode, path, dto);
         FilterEntity entity = new FilterEntity();
-//        entity.setId(SnowFlakeUUidUtils.getUuid("FR"));
         entity.setId(sceneCode);
         entity.setCreateTime(LocalDateTime.now());
-//        entity.setSceneCode(sceneCode);
         //将array数组转换成字符串
         List<FilterHotDto> list = JSONArray.toList(jsonArray, FilterHotDto.class);
         entity.setData(list);
@@ -388,7 +394,7 @@ public class InitServiceImpl implements InitService {
     private void createPoi(String sceneCode){
         PoiEntity entity = new PoiEntity();
         entity.setId(SnowFlakeUUidUtils.getUuid("PO"));
-        entity.setSceneCode(sceneCode);
+//        entity.setId(sceneCode);
         entity.setUpdateTime(LocalDateTime.now());
         // 默认热点为空
         entity.setData(new ArrayList<>());
@@ -481,19 +487,26 @@ public class InitServiceImpl implements InitService {
     private void createRoute(String sceneCode, String path){
         List<String> list = new ArrayList<>();
         try {
-//            list = FileUtil.readFileByLines2(path + "/routeMap.txt");
-            list = FileUtil.readFileByLines2(path + "/final_freespace.csv");
+            String routePath = path + "/final_freespace.csv";
+            if (!cn.hutool.core.io.FileUtil.exist(routePath)){
+                log.info("输入路径有误, path: {}", routePath);
+                throw new BaseRuntimeException(MsgCode.e3001, "final_freespace.csv路径有误,文件不存在");
+            }
+            list = FileUtil.readFileByLines2(routePath);
+
+            RouteEntity entity = new RouteEntity();
+//            entity.setId(SnowFlakeUUidUtils.getUuid("RT"));
+            entity.setId(sceneCode);
+//            entity.setSceneCode(sceneCode);
+            entity.setUpdateTime(LocalDateTime.now());
+            entity.setData(list);
+            routeService.save(entity);
+            log.info(" Route数据初始化创建完成");
 
         } catch (Exception e) {
             e.printStackTrace();
         }
-        RouteEntity entity = new RouteEntity();
-        entity.setId(SnowFlakeUUidUtils.getUuid("RT"));
-        entity.setSceneCode(sceneCode);
-        entity.setUpdateTime(LocalDateTime.now());
-        entity.setData(list);
-        routeService.save(entity);
-        log.info(" Route数据初始化创建完成");
+
 
     }
 

+ 8 - 4
laser/src/main/java/com/fdkankan/indoor/core/service/impl/RouteServiceImpl.java

@@ -1,6 +1,8 @@
 package com.fdkankan.indoor.core.service.impl;
 
+import com.fdkankan.indoor.base.constant.MsgCode;
 import com.fdkankan.indoor.base.convert.GetRoute_1;
+import com.fdkankan.indoor.base.exception.BaseRuntimeException;
 import com.fdkankan.indoor.base.util.Result;
 import com.fdkankan.indoor.core.entity.ControlPointEntity;
 import com.fdkankan.indoor.core.entity.dto.RouteInputDto;
@@ -15,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Optional;
 
 /**
  * Created by owen on 2021/7/28 0028 20:05
@@ -38,17 +41,18 @@ public class RouteServiceImpl implements RouteService {
     public Result getRoute(String sceneCode, RouteInputDto param) {
         List<String> data = getDataBySceneCode(sceneCode);
 
+        // 查询控制点
         ControlPointEntity controlPointEntity = controlPointService.findById(sceneCode);
         JSONArray route = GetRoute_1.getRoute(data, param, controlPointEntity);
         return Result.success(route);
     }
 
     private RouteEntity findBySceneCode(String sceneCode){
-        RouteEntity entity = entityMapper.findBySceneCode(sceneCode);
-        if (entity == null) {
-            throw new RuntimeException("对象不存在");
+        Optional<RouteEntity> optional = entityMapper.findById(sceneCode);
+        if (!optional.isPresent()) {
+            throw new BaseRuntimeException(MsgCode.e3001, "Route对象不存在");
         }
-        return entity;
+        return optional.get();
     }