dengsixing недель назад: 2
Родитель
Сommit
2b4d61cbc2

+ 41 - 0
src/main/java/com/fdkankan/contro/constant/ScenePlugin.java

@@ -0,0 +1,41 @@
+package com.fdkankan.contro.constant;
+
+/**
+ * 文件业务类型
+ */
+public enum ScenePlugin {
+
+    PRO("PRO", "禾赛雷达"),
+    OB("OB", "知象光电"),
+    GS("GS", "高斯"),
+    ;
+
+    private String code;
+    private String message;
+
+    private ScenePlugin(String code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public String code() {
+        return code;
+    }
+
+    public String message() {
+        return message;
+    }
+
+    public static ScenePlugin get(String code){
+        ScenePlugin[] values = ScenePlugin.values();
+        String enumValue = null;
+        for(ScenePlugin eachValue : values){
+            enumValue = eachValue.code();
+            if(enumValue.equals(code)){
+                return eachValue;
+            }
+        }
+        return null;
+    }
+
+}

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

@@ -27,7 +27,7 @@ public enum UserEditDataType {
         return message;
     }
 
-    public static UserEditDataType get(Integer code){
+    public static UserEditDataType get(String code){
         UserEditDataType[] values = UserEditDataType.values();
         String enumValue = null;
         for(UserEditDataType eachValue : values){

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

@@ -74,4 +74,6 @@ public interface ICommonService {
 
     boolean detFloorPlanAi(String num, String path, LinkedHashMap<Integer, Boolean> detFloorplan) throws IOException;
 
+    String getPluginPrefix(JSONObject dataFdage);
+
 }

+ 3 - 1
src/main/java/com/fdkankan/contro/service/IScene3dNumService.java

@@ -1,5 +1,6 @@
 package com.fdkankan.contro.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.contro.entity.Scene3dNum;
 
@@ -21,9 +22,10 @@ public interface IScene3dNumService extends IService<Scene3dNum> {
 
     /**
      * 从码池中取出一个场景码
+     * pluginPrefix 插件前缀
      * @return
      */
-    String generateSceneNum(Integer cameraType) throws Exception;
+    String generateSceneNum(Integer cameraType, JSONObject dataFdage) throws Exception;
 
     void generateSceneNumHandler();
 

+ 20 - 0
src/main/java/com/fdkankan/contro/service/impl/CommonServiceImpl.java

@@ -17,6 +17,7 @@ import com.fdkankan.common.constant.*;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.contro.bean.SceneJsonBean;
 import com.fdkankan.contro.constant.DetectType;
+import com.fdkankan.contro.constant.ScenePlugin;
 import com.fdkankan.contro.entity.*;
 import com.fdkankan.contro.factory.UserEditData.UserEditDataHandler;
 import com.fdkankan.contro.factory.UserEditData.UserEditDataHandlerFactory;
@@ -990,5 +991,24 @@ public class CommonServiceImpl implements ICommonService {
         }
     }
 
+    @Override
+    public String getPluginPrefix(JSONObject dataFdage) {
+        JSONArray plugins = dataFdage.getJSONArray("plugins");
+        //datafdage中的插件不为空,就从插件列表中去匹配,按照插件枚举定义顺序,只要匹配上即终止匹配
+        if(CollUtil.isNotEmpty(plugins)){
+            for (ScenePlugin plugin : ScenePlugin.values()) {
+                String code = plugin.code();
+                for (int i = 0; i < plugins.size(); i++) {
+                    JSONObject obj = plugins.getJSONObject(i);
+                    String name = obj.getString("name");
+                    if (StrUtil.isNotBlank(name) && name.startsWith(code)) {
+                        return plugin; // 匹配到第一个,直接返回
+                    }
+                }
+            }
+        }
+
 
+        return "";
+    }
 }

+ 21 - 10
src/main/java/com/fdkankan/contro/service/impl/Scene3dNumServiceImpl.java

@@ -2,6 +2,7 @@ package com.fdkankan.contro.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.CommonStatus;
@@ -73,11 +74,11 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
     private ICameraTypeService cameraTypeService;
 
     @Override
-    public String generateSceneNum(Integer cameraType) throws Exception {
+    public String generateSceneNum(Integer cameraType, JSONObject dataFdage) throws Exception {
         // 从缓存中获取
         String sceneNum = redisUtil.lLeftPop(RedisKey.FDKANKAN_SCENE_NUMS);
         if(Objects.nonNull(sceneNum)){
-            return addPrefix(sceneNum,cameraType);
+            return addPrefix(sceneNum,cameraType, null);
         }
         //为了防止场景量暴增导致定时任务来还不急处理,如果上面redis获取不到,需要调用一下生成场景码方法
         log.warn("定时任务没有生成足够的场景码,此处实时调用批量生成场景码程序");
@@ -90,7 +91,7 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
             dingTalkSendUtils.sendActioncardMsgToDingRobot(content, "场景码穷尽告警");
             throw new Exception("场景计算获取场景码失败");
         }
-        return addPrefix(sceneNum,cameraType);
+        return addPrefix(sceneNum,cameraType,null);
     }
 
     @Override
@@ -127,17 +128,27 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
         }
     }
 
-    private  String addPrefix(String num,Integer camType){
-        if(camType == null){
-            return num;
+    private String addPrefix(String num, Integer camType, String pluginPrefix) {
+        StringBuilder sb = new StringBuilder();
+
+        // 相机前缀
+        if (camType != null) {
+            CameraType cameraType = cameraTypeService.getByCamType(camType);
+            if (cameraType != null && StrUtil.isNotBlank(cameraType.getScenePrefix())) {
+                sb.append(cameraType.getScenePrefix());
+            }
         }
-        CameraType cameraType = cameraTypeService.getByCamType(camType);
-        if(Objects.isNull(cameraType)){
-            return num;
+
+        // 插件前缀
+        if (StrUtil.isNotBlank(pluginPrefix)) {
+            sb.append(pluginPrefix).append("-");
         }
-        return cameraType.getScenePrefix() + num;
+
+        sb.append(num);
+        return sb.toString();
     }
 
+
     @Override
     public void batchCreateSceneNum(boolean force) {
         if (!force) {

+ 8 - 8
src/main/java/com/fdkankan/contro/service/impl/SceneFileBuildServiceImpl.java

@@ -394,7 +394,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             //清除超容量场景记录
             exceedSpaceSceneService.repeal(camera.getId(), fileId, unicode);
 
-            sceneNum = scene3dNumService.generateSceneNum(cameraDetail.getType());
+            sceneNum = scene3dNumService.generateSceneNum(cameraDetail.getType(), jsonObject);
 
             rebuild = CommonStatus.NO.code();
         } else {
@@ -848,10 +848,10 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             log.info("data.fdage文件为空");
             throw new BusinessException(CameraConstant.FAILURE_6009);
         }
-        if(fdageJson.getIntValue("zxState") == 1){
-            sceneZxgdService.upload(fileId, fdageJson);
-            return ResultData.ok();
-        }
+//        if(fdageJson.getIntValue("zxState") == 1){
+//            sceneZxgdService.upload(fileId, fdageJson);
+//            return ResultData.ok();
+//        }
 
         this.removeUpdateV4(ConstantFilePath.OSS_PREFIX + prefixBuffer + "data.fdage", fdageJson);
         String buildType = "V3";
@@ -919,7 +919,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         Integer isObj = params.getIntValue("isObj");
         String buildType = "V3";
 
-        String num = scene3dNumService.generateSceneNum(null);
+        String num = scene3dNumService.generateSceneNum(null, null);
         ScenePlus scenePlus = new ScenePlus();
         ScenePlusExt scenePlusExt = new ScenePlusExt();
         SceneEditInfo sceneEditInfo = new SceneEditInfo();
@@ -1703,7 +1703,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             return ResultData.error(ErrorCode.PARAM_ERROR.code(), newFYunPath + "已存在,请勿重复添加!");
         }
 
-        String sceneNum = scene3dNumService.generateSceneNum(detailEntity.getType());
+        String sceneNum = scene3dNumService.generateSceneNum(detailEntity.getType(), fdageData);
 
         //写入日志表
         SceneCopyDistinctEnv sceneCopyDistinctEnv = new SceneCopyDistinctEnv();
@@ -2098,7 +2098,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             snCode = arr[0];
         } else {
             //生成场景码
-            num = scene3dNumService.generateSceneNum(CameraTypeEnum.DOUBLE_EYE_TURN.getType());
+            num = scene3dNumService.generateSceneNum(CameraTypeEnum.DOUBLE_EYE_TURN.getType(), null);
         }
 
         Camera camera = cameraService.getBySnCode(snCode);