Преглед на файлове

Merge branch 'feature-slimming-nas-20220130-dsx' into test

# Conflicts:
#	src/main/java/com/fdkankan/contro/mq/service/ICommonService.java
#	src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java
#	src/main/java/com/fdkankan/contro/mq/service/impl/CommonServiceImpl.java
dsx преди 2 години
родител
ревизия
4b8a33f71f

+ 39 - 0
src/main/java/com/fdkankan/contro/constant/UserEditDataType.java

@@ -0,0 +1,39 @@
+package com.fdkankan.contro.constant;
+
+/**
+ * 文件业务类型
+ */
+public enum UserEditDataType {
+
+    BOX_MODEL("boxModel", "boxModelHandler"),
+    ;
+
+    private String code;
+    private String message;
+
+    private UserEditDataType(String code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public String code() {
+        return code;
+    }
+
+    public String message() {
+        return message;
+    }
+
+    public static UserEditDataType get(Integer code){
+        UserEditDataType[] values = UserEditDataType.values();
+        String enumValue = null;
+        for(UserEditDataType eachValue : values){
+            enumValue = eachValue.code();
+            if(enumValue.equals(code)){
+                return eachValue;
+            }
+        }
+        return null;
+    }
+
+}

+ 4 - 0
src/main/java/com/fdkankan/contro/factory/DemoFactory.java

@@ -0,0 +1,4 @@
+package com.fdkankan.contro.factory;
+
+public interface DemoFactory {
+}

+ 65 - 0
src/main/java/com/fdkankan/contro/factory/UserEditData/BoxModelHandler.java

@@ -0,0 +1,65 @@
+package com.fdkankan.contro.factory.UserEditData;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.contro.entity.SceneEditInfo;
+import com.fdkankan.contro.entity.ScenePlus;
+import com.fdkankan.contro.service.ISceneEditInfoService;
+import com.fdkankan.contro.service.IScenePlusService;
+import com.fdkankan.fyun.face.FYunFileServiceInterface;
+import com.fdkankan.model.constants.UploadFilePath;
+import com.fdkankan.redis.constant.RedisKey;
+import com.fdkankan.redis.util.RedisUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+
+/**
+ * 初始化空间模型
+ */
+@Component("boxModelHandler")
+public class BoxModelHandler implements UserEditDataHandler {
+
+    @Autowired
+    private IScenePlusService scenePlusService;
+    @Autowired
+    private ISceneEditInfoService sceneEditInfoService;
+    @Autowired
+    private FYunFileServiceInterface fYunFileService;
+    @Autowired
+    private RedisUtil redisUtil;
+
+    @Override
+    public void init(String num, Map<String, Object> params) {
+        String modelEditPath = String.format(UploadFilePath.USER_EDIT_PATH, num) + "boxModels";
+        String modelViewPath = String.format(UploadFilePath.USER_VIEW_PATH, num) + "boxModels";
+        String sceneJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH, num) + "scene.json";
+
+        //修改数据库,将boxModels字段置为空
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+        SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
+        sceneEditInfoService.update(new LambdaUpdateWrapper<SceneEditInfo>().set(SceneEditInfo::getBoxModels, null).eq(SceneEditInfo::getId, sceneEditInfo.getId()));
+
+        //更新scene.json
+        if(fYunFileService.fileExist(sceneJsonPath)){
+            String sceneJsonStr = fYunFileService.getFileContent(sceneJsonPath);
+            JSONObject sceneJson = JSON.parseObject(sceneJsonStr);
+            sceneJson.remove("boxModels");
+            sceneJsonStr = sceneJson.toJSONString();
+            fYunFileService.uploadFile(sceneJsonStr.getBytes(StandardCharsets.UTF_8), sceneJsonPath);
+            //scenejson写入缓存
+            redisUtil.set(String.format(RedisKey.SCENE_JSON, num), sceneJsonStr);
+        }
+
+        //删除oss资源
+        if(fYunFileService.fileExist(modelEditPath)){
+            fYunFileService.deleteFolder(modelEditPath);
+        }
+        if(fYunFileService.fileExist(modelViewPath)){
+            fYunFileService.deleteFolder(modelViewPath);
+        }
+    }
+}

+ 9 - 0
src/main/java/com/fdkankan/contro/factory/UserEditData/UserEditDataHandler.java

@@ -0,0 +1,9 @@
+package com.fdkankan.contro.factory.UserEditData;
+
+import java.util.Map;
+
+public interface UserEditDataHandler {
+
+    void init(String num, Map<String, Object> params);
+
+}

+ 9 - 0
src/main/java/com/fdkankan/contro/factory/UserEditData/UserEditDataHandlerFactory.java

@@ -0,0 +1,9 @@
+package com.fdkankan.contro.factory.UserEditData;
+
+import cn.hutool.extra.spring.SpringUtil;
+
+public class UserEditDataHandlerFactory {
+    public static UserEditDataHandler getHandler(String name){
+        return SpringUtil.getBean(name);
+    }
+}

+ 13 - 0
src/main/java/com/fdkankan/contro/mq/service/ICommonService.java

@@ -1,5 +1,8 @@
 package com.fdkankan.contro.mq.service;
 
+import java.util.Map;
+import java.util.Set;
+
 public interface ICommonService {
 
     /**
@@ -10,5 +13,15 @@ public interface ICommonService {
      */
     public void uploadBuildResultData(String num, String dataSource, String version);
 
+    /**
+     * 删除用户编辑数据业务方法
+     * @param num 场景码
+     * @param bizs 业务集合
+     * @param params 业务处理所需参数
+     *               key : bizType
+     *               value: Map<String ,Object> 参数map
+     */
+    public void initUserEditData(String num, Set<String> bizs, Map<String, Map<String ,Object>> params);
+
     public void uploadFloorplanJson(String num, String dataSource) throws Exception;
 }

+ 3 - 0
src/main/java/com/fdkankan/contro/mq/service/impl/BuildObjServiceImpl.java

@@ -274,6 +274,9 @@ public class BuildObjServiceImpl implements IBuildSceneService {
             if("v3".equals(version)){
                 fdkkV4Service.upgradeToV4(projectNum);
             }
+
+            success = true;
+
         }catch (Exception e){
             log.error("生成OBJ场景计算结果处理异常,num=" + projectNum, e);
             throw e;

+ 9 - 0
src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java

@@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.common.constant.*;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.contro.bean.SceneJsonBean;
+import com.fdkankan.contro.constant.UserEditDataType;
 import com.fdkankan.contro.entity.*;
 import com.fdkankan.contro.mq.service.IBuildSceneService;
 import com.fdkankan.contro.mq.service.ICommonService;
@@ -128,6 +129,9 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
     @Autowired
     private ICommonService commonService;
 
+    private ICommonService commonService;
+    @Autowired
+    private ISceneBuildProcessLogService sceneBuildProcessLogService;
 
     @Override
     public void buildScenePre(BuildSceneCallMessage message) throws Exception{
@@ -342,6 +346,11 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
             //更新场景主表
             scenePlusService.updateById(scenePlus);
 
+            //清除用户编辑业务数据
+            Set<String> bizs = new HashSet<>();
+            bizs.add(UserEditDataType.BOX_MODEL.message());
+            commonService.initUserEditData(sceneCode, bizs, null);
+
             CreateObjUtil.deleteFile(path.replace(ConstantFilePath.BUILD_MODEL_PATH, "/"));
 
             log.info("场景计算结果处理结束,场景码:{}", sceneCode);

+ 16 - 15
src/main/java/com/fdkankan/contro/mq/service/impl/CommonServiceImpl.java

@@ -4,6 +4,9 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.FileUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.util.FileUtils;
+import cn.hutool.core.util.StrUtil;
+import com.fdkankan.contro.factory.UserEditData.UserEditDataHandler;
+import com.fdkankan.contro.factory.UserEditData.UserEditDataHandlerFactory;
 import com.fdkankan.contro.mq.service.ICommonService;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.model.constants.ConstantFilePath;
@@ -19,6 +22,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Set;
 
 @Slf4j
 @Service
@@ -39,23 +43,8 @@ public class CommonServiceImpl implements ICommonService {
         String localCachesImagePath = dataSource + "/caches/images/";
         String ossCachesImagePath = ossResultPath + "caches/images/";
         //先清除旧的全景图
-//        fYunFileServiceInterface.deleteFolder(ossCachesImagePath);
         if(FileUtil.exist(localCachesImagePath)){
             fYunFileServiceInterface.uploadFileByCommand(localCachesImagePath, ossCachesImagePath);
-//            List<String> imagesList = FileUtil.listFileNames(localCachesImagePath);
-//            if(CollUtil.isNotEmpty(imagesList)){
-//                String ossVisionPath = String.format(UploadFilePath.IMG_VIEW_PATH, num) + "vision.txt";
-//                String visionPath = String.format(ConstantFilePath.SCENE_DATA_PATH_V4, num) + "vision.txt";
-//                fYunFileServiceInterface.downloadFile(ossVisionPath, visionPath);
-//                List<String> panoramaImageList = SceneUtil.getPanoramaImageList(visionPath);
-//                imagesList.stream().forEach(fileName -> {
-//                    if (panoramaImageList.contains(fileName)) {
-//                        String srcPath = localCachesImagePath + fileName;
-//                        String ossPath = ossCachesImagePath + fileName;
-//                        uploadMap.put(srcPath, ossPath);
-//                    }
-//                });
-//            }
         }
 
         //上传project.json
@@ -146,4 +135,16 @@ public class CommonServiceImpl implements ICommonService {
         String hourseTypeJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH, num) + "floorplan.json";
         fYunFileServiceInterface.uploadFile(json.toJSONString().getBytes(), hourseTypeJsonPath);
     }
+
+    @Override
+    public void initUserEditData(String num, Set<String> bizs, Map<String, Map<String ,Object>> params) {
+        if(StrUtil.isEmpty(num) || CollUtil.isEmpty(bizs)){
+            return;
+        }
+        for (String biz : bizs) {
+            UserEditDataHandler handler = UserEditDataHandlerFactory.getHandler(biz);
+            handler.init(num, CollUtil.isEmpty(params) ? null : params.get(biz));
+        }
+    }
+}
 }