|
@@ -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();
|
|
|
}
|