Browse Source

场景重算,清空三维模型 多楼层平面图

dsx 2 years ago
parent
commit
500c2132fc

+ 59 - 0
src/main/java/com/fdkankan/scene/factory/UserEditData/FloorplanHandler.java

@@ -0,0 +1,59 @@
+package com.fdkankan.scene.factory.UserEditData;
+
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.constant.CommonStatus;
+import com.fdkankan.model.constants.UploadFilePath;
+import com.fdkankan.redis.util.RedisUtil;
+import com.fdkankan.scene.entity.SceneEditInfo;
+import com.fdkankan.scene.entity.ScenePlus;
+import com.fdkankan.scene.entity.ScenePlusExt;
+import com.fdkankan.scene.oss.OssUtil;
+import com.fdkankan.scene.service.ISceneEditInfoService;
+import com.fdkankan.scene.service.IScenePlusExtService;
+import com.fdkankan.scene.service.IScenePlusService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 初始化空间模型
+ */
+@Component("floorplanHandler")
+public class FloorplanHandler implements UserEditDataHandler {
+
+    @Autowired
+    private IScenePlusService scenePlusService;
+    @Autowired
+    private IScenePlusExtService scenePlusExtService;
+    @Autowired
+    private ISceneEditInfoService sceneEditInfoService;
+    @Autowired
+    private OssUtil ossUtil;
+    @Autowired
+    private RedisUtil redisUtil;
+
+    @Override
+    public void init(String num, Map<String, Object> params) {
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+        ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
+        SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
+        String bucket = scenePlusExt.getYunFileBucket();
+        String floorplanCadJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH, num).concat("floorplan_cad.json");
+        String fileContent = ossUtil.getFileContent(bucket, floorplanCadJsonPath);
+        if(StrUtil.isEmpty(fileContent)){
+            return;
+        }
+        JSONObject jsonObject = JSON.parseObject(fileContent);
+        JSONArray floors = jsonObject.getJSONArray("floors");
+        if(floors.size() < 2){
+            return;
+        }
+
+        sceneEditInfo.setFloorPlanUser(CommonStatus.NO.code());
+        sceneEditInfoService.updateById(sceneEditInfo);
+    }
+}

+ 8 - 5
src/main/java/com/fdkankan/scene/service/impl/ScenePlusServiceImpl.java

@@ -365,6 +365,14 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         sceneEditControlsService.saveOrUpdate(sceneEditControls);
         sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
 
+        //清除用户编辑业务数据
+        Set<String> bizs = new HashSet<>();
+        bizs.add(UserEditDataType.BOX_MODEL.message());
+        bizs.add(UserEditDataType.FLOORPLAN.message());
+        commonService.initUserEditData(num, bizs, null);
+        sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
+        sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfo.getId());
+
         //生成sceneJson
         SceneJsonBean sceneJson = new SceneJsonBean();
         BeanUtil.copyProperties(sceneEditInfoExt, sceneJson);
@@ -395,11 +403,6 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
             }
         }
 
-        //清除用户编辑业务数据
-        Set<String> bizs = new HashSet<>();
-        bizs.add(UserEditDataType.BOX_MODEL.message());
-        commonService.initUserEditData(num, bizs, null);
-
         redisUtil.del(String.format(RedisKey.SCENE_JSON, num));
 
         return ResultData.ok();