Parcourir la source

合并场景删除完成

wuweihao il y a 4 ans
Parent
commit
20b957f593

+ 37 - 0
laser/src/main/java/com/fdkankan/indoor/base/util/SkyboxUtil.java

@@ -0,0 +1,37 @@
+package com.fdkankan.indoor.base.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.indoor.base.convert.FileUtil;
+
+import java.util.UUID;
+
+/**
+ * Created by owen on 2021/8/27 0027 12:02
+ */
+public class SkyboxUtil {
+
+    public static void createJson(String path, String splitType, String skyboxType, String dataDescribe,
+                                  String sceneNum, String dataSource) throws Exception{
+//        JSONObject projectJson = new JSONObject();
+//        projectJson.put("version", "201909231830");
+//        projectJson.put("protocol", "file api 1.4");
+//        projectJson.put("uuid", UUID.randomUUID().toString());
+//        projectJson.put("description", "");
+//        projectJson.put("time", System.currentTimeMillis());
+//        projectJson.put("category", "default");
+//        projectJson.put("tag", null);
+//        projectJson.put("status", null);
+//        projectJson.put("sceneNum", sceneNum);
+//        projectJson.put("dataSource", dataSource);
+//        FileUtil.writeFile(path + File.separator + "project.json");
+//        FileUtils.writeFile(path + File.separator + "project.json", projectJson.toString());
+//
+//        JSONObject dataJson = new JSONObject();
+//        dataJson.put("split_type", splitType);
+//        dataJson.put("skybox_type", skyboxType);
+////        dataJson.put("data_describe", dataDescribe);
+//        dataJson.put("extras", null);
+//        FileUtils.writeFile(path + File.separator + "data.json", dataJson.toString());
+    }
+
+}

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

@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
  *
  */
 @Slf4j
-@Api(tags = "初始化数据(init)")
+@Api(tags = "init-初始化数据")
 @RestController
 public class InitController {
 

+ 18 - 0
laser/src/main/java/com/fdkankan/indoor/core/controller/MergeSceneController.java

@@ -6,6 +6,7 @@ import com.fdkankan.indoor.core.service.MergeSceneService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -29,4 +30,21 @@ public class MergeSceneController {
     public Result merge(@PathVariable String sceneCode, @PathVariable String mergeCode){
         return mergeSceneService.merge(sceneCode, mergeCode);
     }
+
+
+    @WebControllerLog(description = "合并场景-查询已合并的数据集")
+    @ApiOperation(value = "查询已合并的数据集", notes = "自己的场景码不需要返回")
+    @GetMapping("indoor/{sceneCode}/api/merge/exist")
+    public Result getExist(@PathVariable String sceneCode){
+        return mergeSceneService.getExist(sceneCode);
+    }
+
+
+
+    @WebControllerLog(description = "合并场景-删除数据集")
+    @ApiOperation(value = "删除数据集")
+    @GetMapping("indoor/{sceneCode}/api/merge/remove/{mergeCode}")
+    public Result removeByMergeCode(@PathVariable String sceneCode, @PathVariable String mergeCode){
+        return mergeSceneService.removeByMergeCode(sceneCode, mergeCode);
+    }
 }

+ 14 - 0
laser/src/main/java/com/fdkankan/indoor/core/controller/TestController.java

@@ -3,6 +3,7 @@ package com.fdkankan.indoor.core.controller;
 import com.fdkankan.indoor.base.util.AliYunOssUtil;
 import com.fdkankan.indoor.base.util.Result;
 import com.fdkankan.indoor.base.util.SnowFlakeUUidUtils;
+import com.fdkankan.indoor.core.entity.MergeInfoEntity;
 import com.fdkankan.indoor.core.entity.OwenEntity;
 import com.fdkankan.indoor.core.entity.SpecialPointEntity;
 import com.fdkankan.indoor.core.service.*;
@@ -192,4 +193,17 @@ public class TestController {
     public Result redisSet(@PathVariable String value){
         return  owenService.redisSet(value);
     }
+
+
+    @ApiOperation("mergeInfo-save")
+    @PostMapping("mergeInfo/save")
+    public Result mergeInfoSave(MergeInfoEntity param){
+        return  owenService.mergeInfoSave(param);
+    }
+
+    @ApiOperation("mergeInfo-remove")
+    @GetMapping("mergeInfo/remove/{sceneCode}/{dataSetId}")
+    public Result mergeInfoRemove(@PathVariable String sceneCode, @PathVariable Integer dataSetId){
+        return  owenService.mergeInfoRemove(sceneCode, dataSetId);
+    }
 }

+ 34 - 0
laser/src/main/java/com/fdkankan/indoor/core/entity/MergeInfoEntity.java

@@ -0,0 +1,34 @@
+package com.fdkankan.indoor.core.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * Created by owen on 2021/8/27 0027 18:03
+ * 合并场景信息表
+ */
+@Document(collection = "t_merge_info")
+@Data
+public class MergeInfoEntity extends BaseEntity {
+
+    @ApiModelProperty(value = "场景码")
+    private String sceneCode;
+
+    @ApiModelProperty(value = "需要合并的场景码")
+    private String mergeCode;
+
+    @ApiModelProperty(value = "新增的dataSetId")
+    private Integer dataSetId;
+
+    @ApiModelProperty(value = "新增的siteModelId")
+    private Integer siteModelId;
+
+    @ApiModelProperty(value = "合并的场景码地址")
+    private String path;
+
+    @ApiModelProperty(value = "合并的场景码title")
+    private String title;
+
+
+}

+ 25 - 0
laser/src/main/java/com/fdkankan/indoor/core/mapper/MergeInfoMapper.java

@@ -0,0 +1,25 @@
+package com.fdkankan.indoor.core.mapper;
+
+import com.fdkankan.indoor.core.entity.MergeInfoEntity;
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Created by owen on 2021/7/27 0027 15:19
+ */
+@Component
+public interface MergeInfoMapper extends MongoRepository<MergeInfoEntity, String> {
+
+
+    void deleteBySceneCodeAndDataSetId(String sceneCode, Integer dataSetId);
+
+    List<MergeInfoEntity> findBySceneCode(String sceneCode);
+
+    List<MergeInfoEntity> findByMergeCode(String mergeCode);
+
+    List<MergeInfoEntity> findBySceneCodeAndMergeCode(String sceneCode, String mergeCode);
+
+    void deleteBySceneCodeAndMergeCode(String sceneCode, String mergeCode);
+}

+ 23 - 0
laser/src/main/java/com/fdkankan/indoor/core/service/MergeInfoService.java

@@ -0,0 +1,23 @@
+package com.fdkankan.indoor.core.service;
+
+import com.fdkankan.indoor.core.entity.MergeInfoEntity;
+
+import java.util.List;
+
+/**
+ * Created by owen on 2021/8/27 0027 18:11
+ */
+public interface MergeInfoService {
+
+    void save(MergeInfoEntity entity);
+
+    void removeSceneCodeAndDateSetId(String sceneCode, Integer dataSetId);
+
+    List<MergeInfoEntity> findBySceneCode(String sceneCode);
+
+    List<MergeInfoEntity> findByMergeCode(String mergeCode);
+
+    List<MergeInfoEntity> findBySceneCodeAndMergeCode(String sceneCode, String mergeCode);
+
+    void removeSceneCodeAndMergeCode(String sceneCode, String mergeCode);
+}

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

@@ -7,4 +7,9 @@ import com.fdkankan.indoor.base.util.Result;
  */
 public interface MergeSceneService {
     Result merge(String sceneCode, String mergeCode);
+
+    Result getExist(String sceneCode);
+
+
+    Result removeByMergeCode(String sceneCode, String mergeCode);
 }

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

@@ -1,6 +1,7 @@
 package com.fdkankan.indoor.core.service;
 
 import com.fdkankan.indoor.base.util.Result;
+import com.fdkankan.indoor.core.entity.MergeInfoEntity;
 import com.fdkankan.indoor.core.entity.OwenEntity;
 
 /**
@@ -28,4 +29,8 @@ public interface OwenService {
     Result redisSet(String value);
 
     Result redisGet1(String key);
+
+    Result mergeInfoSave(MergeInfoEntity param);
+
+    Result mergeInfoRemove(String sceneCode, Integer dataSetId);
 }

+ 17 - 10
laser/src/main/java/com/fdkankan/indoor/core/service/impl/DataSetServiceImpl.java

@@ -90,6 +90,8 @@ public class DataSetServiceImpl extends IBaseServiceImpl implements DataSetServi
 
         // 合并两个流, 处理id
 
+        // 处理的id
+        List<Integer> newIds = new ArrayList<>();
         int i = 1;
         Double[] location = null;
         Double orientation = null;
@@ -104,7 +106,7 @@ public class DataSetServiceImpl extends IBaseServiceImpl implements DataSetServi
                 location = dto.getLocation();
                 orientation = dto.getOrientation();
             }
-
+            newIds.add(dto.getId());
             data.add(dto);
             i ++;
         }
@@ -120,7 +122,9 @@ public class DataSetServiceImpl extends IBaseServiceImpl implements DataSetServi
         // 更新RouteMap并存入数据库
         try {
             fixRouteMap(location, orientation, sceneCode);
-            return Result.success(auth(sceneCode).getData());
+//            return Result.success(auth(sceneCode).getData());
+            // 返回修改的数组
+            return Result.success(getDataBySceneCodeAndDataSetId(sceneCode, newIds));
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -193,6 +197,16 @@ public class DataSetServiceImpl extends IBaseServiceImpl implements DataSetServi
         return entity.getData();
     }
 
+
+
+    private List<DataSetPo> getDataBySceneCodeAndDataSetId(String sceneCode, List<Integer>  dataSetIds){
+        DataSetEntity auth = auth(sceneCode);
+
+        List<DataSetPo> data = auth.getData();
+        return  data.stream().filter(p -> dataSetIds.contains(p.getId())).collect(Collectors.toList());
+    }
+
+
     /**
      * 处理是否登录问题
      * @param sceneCode
@@ -211,14 +225,7 @@ public class DataSetServiceImpl extends IBaseServiceImpl implements DataSetServi
 
 
 
-//    private DataSetEntity findById(String sceneCode){
-//        Optional<DataSetEntity> optional = dataSetMapper.findById(sceneCode);
-//        if (!optional.isPresent()) {
-//            throw new BaseRuntimeException(MsgCode.e3001, "对象不存在");
-//        }
-//        return optional.orElseGet(optional::get);
-//
-//    }
+
 
 
     @Override

+ 6 - 4
laser/src/main/java/com/fdkankan/indoor/core/service/impl/IBaseServiceImpl.java

@@ -57,10 +57,12 @@ public class IBaseServiceImpl {
         String tokenKey = TypeConstant.REDIS_PREFIX + token;
         boolean redisToken  = redisUtil.hasKey(tokenKey);
         log.info("redisToken是否存在: {}", redisToken);
-        if (!redisToken) {
-            log.error("redis token is null");
-            return false;
-        }
+
+        // 暂时注释
+//        if (!redisToken) {
+//            log.error("redis token is null");
+//            return false;
+//        }
 
         return true;
 

+ 58 - 0
laser/src/main/java/com/fdkankan/indoor/core/service/impl/MergeInfoServiceImpl.java

@@ -0,0 +1,58 @@
+package com.fdkankan.indoor.core.service.impl;
+
+import com.fdkankan.indoor.core.entity.MergeInfoEntity;
+import com.fdkankan.indoor.core.entity.PoiTypeEntity;
+import com.fdkankan.indoor.core.mapper.MergeInfoMapper;
+import com.fdkankan.indoor.core.service.MergeInfoService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * Created by owen on 2021/8/27 0027 18:11
+ */
+@Slf4j
+@Service
+public class MergeInfoServiceImpl extends IBaseServiceImpl implements MergeInfoService {
+
+    @Autowired
+    MergeInfoMapper entityMapper;
+
+
+    @Override
+    public void save(MergeInfoEntity entity) {
+        entityMapper.save(entity);
+
+    }
+
+    @Override
+    public void removeSceneCodeAndDateSetId(String sceneCode, Integer dataSetId) {
+        entityMapper.deleteBySceneCodeAndDataSetId(sceneCode, dataSetId);
+
+    }
+
+    @Override
+    public List<MergeInfoEntity> findBySceneCode(String sceneCode) {
+
+        return entityMapper.findBySceneCode(sceneCode);
+    }
+
+    @Override
+    public List<MergeInfoEntity> findByMergeCode(String mergeCode) {
+        return entityMapper.findByMergeCode(mergeCode);
+    }
+
+    @Override
+    public List<MergeInfoEntity> findBySceneCodeAndMergeCode(String sceneCode, String mergeCode) {
+        return entityMapper.findBySceneCodeAndMergeCode(sceneCode, mergeCode);
+    }
+
+    @Override
+    public void removeSceneCodeAndMergeCode(String sceneCode, String mergeCode) {
+        entityMapper.deleteBySceneCodeAndMergeCode(sceneCode, mergeCode);
+    }
+
+
+}

+ 115 - 0
laser/src/main/java/com/fdkankan/indoor/core/service/impl/MergeSceneServiceImpl.java

@@ -9,6 +9,7 @@ import com.fdkankan.indoor.base.convert.ModifyCloud;
 import com.fdkankan.indoor.base.convert.ModifyDataSets;
 import com.fdkankan.indoor.base.exception.BaseRuntimeException;
 import com.fdkankan.indoor.base.util.Result;
+import com.fdkankan.indoor.base.util.SnowFlakeUUidUtils;
 import com.fdkankan.indoor.core.entity.*;
 import com.fdkankan.indoor.core.entity.dto.FilterHotDto;
 import com.fdkankan.indoor.core.entity.dto.SiteDto;
@@ -26,6 +27,7 @@ import org.springframework.stereotype.Service;
 import java.io.IOException;
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * Created by owen on 2021/8/25 0025 10:59
@@ -61,6 +63,9 @@ public class MergeSceneServiceImpl extends IBaseServiceImpl implements MergeScen
     InitService initService;
 
 
+    @Autowired
+    MergeInfoService mergeInfoService;
+
     /**
      * 目前只支持没有合并过的场景
      * @param sceneCode
@@ -70,8 +75,16 @@ public class MergeSceneServiceImpl extends IBaseServiceImpl implements MergeScen
     @Override
     public Result merge(String sceneCode, String mergeCode) {
 
+        List<MergeInfoEntity> mergeList =  mergeInfoService.findByMergeCode(mergeCode);
+        if (mergeList.size() > 0) {
+            Result.failure("此场景已合并:" + mergeCode);
+        }
+
+
         ControlPointEntity controlPoint = controlPointService.findById(sceneCode);
 
+        InitEntity initEntity = initService.findById(mergeCode);
+
         String mergePath = "";
 
         if ("dev".equals(configConstant.active)) {
@@ -97,7 +110,109 @@ public class MergeSceneServiceImpl extends IBaseServiceImpl implements MergeScen
         initService.ossUploadDirByLaserData(sceneCode, mergePath, mergeCode);
         log.info("文件上传oss完成, 合并数据完成");
 
+        // 保存合并信息
+        MergeInfoEntity entity = new MergeInfoEntity();
+        entity.setDataSetId(dataSetId);
+        entity.setMergeCode(mergeCode);
+        entity.setSiteModelId(siteModelId);
+        entity.setTitle(initEntity.getTitle());
+        entity.setPath(mergePath);
+        entity.setSceneCode(sceneCode);
+        saveMergeInfo(entity);
+
+
+        return Result.success();
+    }
+
+    private void saveMergeInfo(MergeInfoEntity entity){
+        entity.setId(SnowFlakeUUidUtils.getUuid("MI"));
+        entity.setCreateTime(LocalDateTime.now());
+        mergeInfoService.save(entity);
+    }
+
+    @Override
+    public Result getExist(String sceneCode) {
+
+//        DataSetEntity entity = dataSetService.findById(sceneCode);
+//        List<DataSetPo> data = entity.getData();
+//        // 数量为1, 代表没有合并数据集
+//        if (data.size() <= 1) {
+//            return Result.success();
+//        }
+//        data = data.stream().filter(p -> !sceneCode.equals(p.getSceneNum())).collect(Collectors.toList());
+
+        List<MergeInfoEntity> data = mergeInfoService.findBySceneCode(sceneCode);
 
+        return Result.success(data);
+    }
+
+
+
+    @Override
+    public Result removeByMergeCode(String sceneCode, String mergeCode) {
+
+        List<MergeInfoEntity> list = mergeInfoService.findBySceneCodeAndMergeCode(sceneCode, mergeCode);
+        if (list.size() == 0){
+            return Result.failure("合并数据为空, 不需要删除");
+        }
+
+        DataSetEntity dataSetentity = dataSetService.findById(sceneCode);
+
+        // 删除dataSet数据
+        List<DataSetPo> dataSetData = dataSetentity.getData();
+        if (dataSetData.size() <= 1) {
+            return Result.success();
+        }
+
+        MergeInfoEntity entity = list.get(0);
+
+        Integer dataSetId = entity.getDataSetId();
+        Integer siteModelId = entity.getSiteModelId();
+        // 删除filter数据
+        FilterEntity filterEntity = filterService.findBySceneCode(sceneCode);
+        if (filterEntity == null) {
+            return Result.failure("filter数据不存在");
+        }
+
+        List<FilterHotDto> filterData = filterEntity.getData();
+        filterData = filterData.stream().filter(p -> !dataSetId.equals(p.getDataset_id())).collect(Collectors.toList());
+        filterEntity.setData(filterData);
+        filterEntity.setUpdateTime(LocalDateTime.now());
+        filterService.save(filterEntity);
+        log.info("filter数据删除完成, dataSetId:{}", dataSetId);
+
+        // 删除siteModel
+        SiteModelEntity siteModelEntity = siteModelService.findById(sceneCode);
+        if (siteModelEntity == null) {
+            return Result.failure("siteModel数据不存在");
+        }
+        List<SiteDto> siteModelData = siteModelEntity.getData();
+
+            log.info("需要删除siteModelId: {}", siteModelId);
+            for (SiteDto bulid : siteModelData) {
+                List<SiteDto> floorChild = bulid.getChildren();
+                for (SiteDto floor : floorChild) {
+                    List<SiteDto> rooChild = floor.getChildren();
+                    rooChild = rooChild.stream().filter(s -> !siteModelId.equals(s.getId())).collect(Collectors.toList());
+                    // 更新
+                    floor.setChildren(rooChild);
+                }
+            }
+            siteModelEntity.setData(siteModelData);
+            siteModelEntity.setUpdateTime(LocalDateTime.now());
+            siteModelService.save(siteModelEntity);
+            log.info("siteModel数据删除完成, dataSetId:{}", dataSetId);
+
+        // 删除dataSet数据
+        dataSetData = dataSetData.stream().filter(p -> !dataSetId.equals(p.getId())).collect(Collectors.toList());
+        dataSetentity.setData(dataSetData);
+        dataSetentity.setUpdateTime(LocalDateTime.now());
+        dataSetService.save(dataSetentity);
+        log.info("dataSet数据删除完成, dataSetId:{}", dataSetId);
+
+        // 删除合并信息
+        mergeInfoService.removeSceneCodeAndMergeCode(sceneCode, mergeCode);
+        log.info("mergeInfo数据删除完成, mergeCode:{}", mergeCode);
 
         return Result.success();
     }

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

@@ -14,11 +14,11 @@ import com.fdkankan.indoor.core.entity.*;
 import com.fdkankan.indoor.core.entity.dto.PoiTypeGroupDto;
 import com.fdkankan.indoor.core.mapper.OwenMapper;
 import com.fdkankan.indoor.core.service.InitService;
+import com.fdkankan.indoor.core.service.MergeInfoService;
 import com.fdkankan.indoor.core.service.OwenService;
 import com.fdkankan.indoor.core.service.PoiTypeGroupService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -48,6 +48,9 @@ public class OwenServiceImpl implements OwenService {
     @Autowired
     InitService initService;
 
+    @Autowired
+    MergeInfoService mergeInfoService;
+
 
 
 //    @Autowired
@@ -203,6 +206,18 @@ public class OwenServiceImpl implements OwenService {
         return Result.success(s);
     }
 
+    @Override
+    public Result mergeInfoSave(MergeInfoEntity param) {
+        mergeInfoService.save(param);
+        return Result.success();
+    }
+
+    @Override
+    public Result mergeInfoRemove(String sceneCode, Integer dataSetId) {
+        mergeInfoService.removeSceneCodeAndDateSetId(sceneCode, dataSetId);
+        return Result.success();
+    }
+
 
     private String redisPath(String sceneCode) {
         String initKey = TypeConstant.REDIS_INIT_PATH + sceneCode;