Sfoglia il codice sorgente

Merge branch 'release-知象光电' into test

dengsixing 6 giorni fa
parent
commit
0a127973f0

+ 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();
 

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

@@ -20,6 +20,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;
@@ -1007,5 +1008,35 @@ public class CommonServiceImpl implements ICommonService {
         }
     }
 
+    @Override
+    public String getPluginPrefix(JSONObject dataFdage) {
+        //新版本app把插件写在plugins数组中
+        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 name; // 匹配到第一个,直接返回
+                    }
+                }
+            }
+        }else{//兼容修版本app
+            //判断是否有禾赛雷达
+            int hasHeSaiData = dataFdage.getIntValue("hasHeSaiData");
+            if(hasHeSaiData == CommonStatus.YES.code()){
+                return ScenePlugin.PRO.code() + "1";
+            }
+            //判断是否有知象光电
+            int zxState = dataFdage.getIntValue("zxState");
+            if(zxState == CommonStatus.YES.code()){
+                return ScenePlugin.OB.code() + "1";
+            }
+        }
 
+        return null;
+    }
 }

+ 26 - 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;
@@ -13,6 +14,7 @@ import com.fdkankan.contro.entity.Scene3dNum;
 import com.fdkankan.contro.enums.CameraTypeEnum;
 import com.fdkankan.contro.mapper.IScene3dNumMapper;
 import com.fdkankan.contro.service.ICameraTypeService;
+import com.fdkankan.contro.service.ICommonService;
 import com.fdkankan.contro.service.IScene3dNumService;
 import com.fdkankan.dingtalk.DingTalkSendUtils;
 import com.fdkankan.redis.constant.RedisKey;
@@ -71,13 +73,17 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
     private DingTalkSendUtils dingTalkSendUtils;
     @Autowired
     private ICameraTypeService cameraTypeService;
+    @Autowired
+    private ICommonService commonService;
 
     @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);
+        //获取插件前缀
+        String pluginPrefix = commonService.getPluginPrefix(dataFdage);
         if(Objects.nonNull(sceneNum)){
-            return addPrefix(sceneNum,cameraType);
+            return addPrefix(sceneNum,cameraType, pluginPrefix);
         }
         //为了防止场景量暴增导致定时任务来还不急处理,如果上面redis获取不到,需要调用一下生成场景码方法
         log.warn("定时任务没有生成足够的场景码,此处实时调用批量生成场景码程序");
@@ -90,7 +96,7 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
             dingTalkSendUtils.sendActioncardMsgToDingRobot(content, "场景码穷尽告警");
             throw new Exception("场景计算获取场景码失败");
         }
-        return addPrefix(sceneNum,cameraType);
+        return addPrefix(sceneNum,cameraType,pluginPrefix);
     }
 
     @Override
@@ -127,17 +133,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 - 19
src/main/java/com/fdkankan/contro/service/impl/SceneFileBuildServiceImpl.java

@@ -396,7 +396,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 {
@@ -871,10 +871,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";
@@ -942,7 +942,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();
@@ -1728,7 +1728,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();
@@ -2078,17 +2078,6 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         return scene;
     }
 
-    private ResultData rebuildV3SceneToMini(ScenePro scenePro) {
-        log.info("v3场景重算,请求v3服务器,url:{}", v3controlUrl + "api/scene/rebuildScene?num=" + scenePro.getNum());
-        ResponseEntity<Result> responseEntity = restTemplate.getForEntity(v3controlUrl + "api/scene/rebuildScene?num=" + scenePro.getNum(), Result.class);
-        if (responseEntity.getStatusCode().value() != HttpStatus.OK.value() || responseEntity.getBody().getCode() != ServerCode.SUCCESS.code()) {
-            log.error("请求V3服务器重算场景失败, num:{}, result:{}", scenePro.getNum(), JSON.toJSONString(responseEntity));
-            throw new BusinessException(ErrorCode.SYSTEM_BUSY);
-        }
-        log.info("v3场景重算,请求v3服务器,url:{}, result", v3controlUrl + "api/scene/rebuildScene?num=" + scenePro.getNum(), JSON.toJSONString(responseEntity));
-        return ResultData.ok();
-    }
-
     @Override
     public ResultData uploadLiguang(String num, String snCode, String ossPath) throws Exception {
 
@@ -2123,7 +2112,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);