Browse Source

同步 V3 场景码添加前缀

lyhzzz 3 năm trước cách đây
mục cha
commit
7f40877133

+ 0 - 1
4dkankan-center-api/4dkankan-center-platform-api/src/main/java/com/fdkankan/platform/api/dto/Camera.java

@@ -62,7 +62,6 @@ public class Camera implements Serializable {
      */
     private Integer tbStatus;
 
-    
 
 }
 

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IScene3dNumService.java

@@ -25,7 +25,7 @@ public interface IScene3dNumService extends IService<Scene3dNum> {
      * 从码池中取出一个场景码
      * @return
      */
-    String generateSceneNum();
+    String generateSceneNum(Integer cameraType);
 
     /**
      * 批量生成场景码并放入码池

+ 19 - 15
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/Scene3dNumServiceImpl.java

@@ -3,10 +3,12 @@ package com.fdkankan.scene.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.CameraTypeEnum;
 import com.fdkankan.common.constant.CommonStatus;
-import com.fdkankan.common.constant.RecStatus;
+import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.TbStatus;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.RandomUtil;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.constant.RedisLockKey;
@@ -15,22 +17,17 @@ import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.scene.entity.Scene3dNum;
 import com.fdkankan.scene.mapper.IScene3dNumMapper;
 import com.fdkankan.scene.service.IScene3dNumService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.exception.BusinessException;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.stream.Collectors;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -59,11 +56,11 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
     private int batchSize;
 
     @Override
-    public String generateSceneNum(){
+    public String generateSceneNum(Integer cameraType){
         // 从缓存中获取
-        String sceneNum = (String)redisUtil.lLeftPop(RedisKey.FDKANKAN_SCENE_NUMS);
+        String sceneNum = redisUtil.lLeftPop(RedisKey.FDKANKAN_SCENE_NUMS);
         if(Objects.nonNull(sceneNum)){
-            return sceneNum;
+            return addPrefix(sceneNum,cameraType);
         }
         // 分布式加锁
         Long loading =  redisUtil.incr(RedisLockKey.LOCK_FDKANKAN_SCENE_NUMS, 1);
@@ -87,12 +84,19 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
                 e.printStackTrace();
             }
         }
-        sceneNum = (String)redisUtil.lLeftPop(RedisKey.FDKANKAN_SCENE_NUMS);
+        sceneNum = redisUtil.lLeftPop(RedisKey.FDKANKAN_SCENE_NUMS);
         if(StrUtil.isEmpty(sceneNum)){
             log.error("场景码加载失败");
             throw new BusinessException(ErrorCode.FAILURE_CODE_5053);
         }
-        return sceneNum;
+        return addPrefix(sceneNum,cameraType);
+    }
+
+    private  static  String addPrefix( String num,Integer cameraType){
+        if(cameraType == null){
+            return num;
+        }
+        return CameraTypeEnum.getSceneNumPrefixByType(cameraType) + num;
     }
 
     @Override

+ 69 - 50
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneFileBuildServiceImpl.java

@@ -751,7 +751,10 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         if(!password.equals(camera.getChildPassword())){
             throw new BusinessException(ErrorCode.FAILURE_CODE_3014);
         }
-
+        CameraDetail cameraDetail = platformGoodsClient.getCameraDetailByCameraId(camera.getId()).getData();
+        if(cameraDetail == null){
+            throw new BusinessException(CameraConstant.FAILURE_6003);
+        }
         String unicode = prefix.substring(prefix.lastIndexOf("/") + 1);
         String path = ConstantFilePath.BUILD_MODEL_PATH + unicode;
 
@@ -777,7 +780,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                 //重算的场景,先移除该场景对应的容量
                 sceneProService.rebuildReduceSpaceBySceneNum(sceneNum);
             }else {
-                sceneNum = scene3dNumService.generateSceneNum();
+                sceneNum = scene3dNumService.generateSceneNum(cameraDetail.getCameraType());
                 rebuild = 0;
             }
         }
@@ -802,13 +805,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             }
         }
 
-        ResultData<CameraDetail> detailResult = platformGoodsClient.getCameraDetailByCameraId(camera.getId());
-        CameraDetail cameraDetail = detailResult.getData();
 
-        if(cameraDetail ==  null){
-            log.error("该相机详情不存在:" + cameraName);
-            throw new BusinessException(CameraConstant.FAILURE_6003);
-        }
 
         String icon = null;
         if(jsonObject.containsKey("icon") && StrUtil.isNotEmpty(jsonObject.getString("icon"))){
@@ -897,8 +894,28 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         String data = FileUtils.readFile(ConstantFilePath.BUILD_MODEL_PATH + unicode + "/data.fdage");
         JSONObject jsonObject = JSONObject.parseObject(data);
+        String cameraName = jsonObject.getJSONObject("cam").getString("uuid");
 
-        String sceneNum = scene3dNumService.generateSceneNum();
+        log.info("查询相机:" + cameraName);
+        Camera cameraEntity = platformGoodsClient.getCameraByChildName(cameraName).getData();
+        if(cameraEntity ==  null){
+            log.error("该相机不存在:" + cameraName);
+            //偶现data.fdage给的相机码多了或少了4DKKPRO_
+            if(cameraName.contains("4DKKPRO_")){
+                cameraEntity = platformGoodsClient.getCameraByChildName(cameraName.replace("4DKKPRO_", "")).getData();
+            }else {
+                cameraEntity = platformGoodsClient.getCameraByChildName("4DKKPRO_" + cameraName).getData();
+            }
+            if(cameraEntity == null){
+                throw new BusinessException(CameraConstant.FAILURE_6003);
+            }
+        }
+        CameraDetail detailEntity = platformGoodsClient.getCameraDetailByCameraId(cameraEntity.getId()).getData();
+        if(detailEntity ==  null){
+            log.error("该相机详情不存在:" + cameraName);
+            throw new BusinessException(CameraConstant.FAILURE_6003);
+        }
+        String sceneNum = scene3dNumService.generateSceneNum(detailEntity.getCameraType());
 
         return ResultData.ok(mainUrl + sceneProNewUrl + sceneNum);
     }
@@ -931,26 +948,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         // TODO: 2022/3/19 plus 版本稳定后删除-------------------------------end
 
         int rebuild = 1;
-        if(scene1 != null){
-            sceneNum = scene1.getNum();
-            if(scene1.getSceneStatus() == SceneStatus.wait.code()){
-                log.info(sceneNum + ":场景处于计算中,不能再计算");
-                return;
-            }
-        }else {
-            sceneNum = scene3dNumService.generateSceneNum();
-            rebuild = 0;
-        }
         log.info("是否是重算,rebuild:{}",rebuild);
 
-        if(sceneNum == null){
-            log.error("大场景序号为空:" + sceneNum);
-            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-        }
-
-        String imageViewPath = String.format(UploadFilePath.IMG_VIEW_PATH, sceneNum);
-        String dataViewPath = String.format(UploadFilePath.DATA_VIEW_PATH, sceneNum);
-
         log.info("查询相机:" + snCode);
         ResultData<Camera> cameraResult = platformGoodsClient.getCameraByChildName(snCode);
         Camera camera = cameraResult.getData();
@@ -970,6 +969,23 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             log.error("该相机详情不存在:" + snCode);
             throw new BusinessException(CameraConstant.FAILURE_6003);
         }
+        if(scene1 != null){
+            sceneNum = scene1.getNum();
+            if(scene1.getSceneStatus() == SceneStatus.wait.code()){
+                log.info(sceneNum + ":场景处于计算中,不能再计算");
+                return;
+            }
+        }else {
+            sceneNum = scene3dNumService.generateSceneNum(cameraDetail.getCameraType());
+            rebuild = 0;
+        }
+        if(sceneNum == null){
+            log.error("大场景序号为空:" + sceneNum);
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+
+        String imageViewPath = String.format(UploadFilePath.IMG_VIEW_PATH, sceneNum);
+        String dataViewPath = String.format(UploadFilePath.DATA_VIEW_PATH, sceneNum);
 
         String userName = null;
         if(cameraDetail.getUserId() != null){
@@ -1198,11 +1214,6 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         }
         String sceneNum = null;
         try{
-            sceneNum = scene3dNumService.generateSceneNum();
-            if(sceneNum == null){
-                log.error("大场景序号为空:" + sceneNum);
-                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-            }
 
             log.info("查询相机:" + buildScene.getCameraName());
             ResultData<Camera> cameraResult= platformGoodsClient.getCameraByChildName(buildScene.getCameraName());
@@ -1216,6 +1227,11 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             ResultData<CameraDetail> cameraDetailResult = platformGoodsClient.getCameraDetailByCameraId(camera.getId());
             CameraDetail cameraDetail = cameraDetailResult.getData();
 
+            sceneNum = scene3dNumService.generateSceneNum(cameraDetail.getCameraType());
+            if(sceneNum == null){
+                log.error("大场景序号为空:" + sceneNum);
+                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+            }
             int balance = Integer.valueOf(cameraDetail.getBalance());
             if(balance - Constant.MONEY_SCENE <0){
                 log.error("相机点数不足:" + buildScene.getCameraName());
@@ -1278,24 +1294,6 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
                 String cameraName = jsonObject.getJSONObject("cam").getString("uuid");
                 String unicode = jsonObject.getString("creator") + "_" + jsonObject.getString("uuidtime");
-                //查看场景中的文件目录是否有改文件id,有则重新计算改场景,无则新建场景
-                SceneProPO proEntity = sceneProService.findByFileId("/" + fileId + "/");
-                int rebuild = 1;
-                if(proEntity != null){
-                    sceneNum = proEntity.getNum();
-                    if(proEntity.getSceneStatus() == SceneStatus.wait.code()){
-                        log.info(sceneNum + ":场景处于计算中,不能再计算");
-                        return;
-                    }
-                }else {
-                    sceneNum = scene3dNumService.generateSceneNum();
-                    rebuild = 0;
-                }
-
-                if(sceneNum == null){
-                    log.error("大场景序号为空:" + sceneNum);
-                    throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-                }
 
                 log.info("查询相机:" + cameraName);
                 ResultData<Camera> cameraResult = platformGoodsClient.getCameraByChildName(cameraName);
@@ -1323,6 +1321,27 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                     throw new BusinessException(CameraConstant.FAILURE_6003);
                 }
 
+                //查看场景中的文件目录是否有改文件id,有则重新计算改场景,无则新建场景
+                SceneProPO proEntity = sceneProService.findByFileId("/" + fileId + "/");
+                int rebuild = 1;
+                if(proEntity != null){
+                    sceneNum = proEntity.getNum();
+                    if(proEntity.getSceneStatus() == SceneStatus.wait.code()){
+                        log.info(sceneNum + ":场景处于计算中,不能再计算");
+                        return;
+                    }
+                }else {
+                    sceneNum = scene3dNumService.generateSceneNum(cameraDetail.getCameraType());
+                    rebuild = 0;
+                }
+
+                if(sceneNum == null){
+                    log.error("大场景序号为空:" + sceneNum);
+                    throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+                }
+
+
+
                 String userName = null;
                 if(cameraDetail.getUserId() != null){
                     ResultData<SSOUser> ssoResult = platformUserClient.getSSOUserByUserId(cameraDetail.getUserId());

+ 50 - 0
4dkankan-common/src/main/java/com/fdkankan/common/constant/CameraTypeEnum.java

@@ -0,0 +1,50 @@
+package com.fdkankan.common.constant;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public enum CameraTypeEnum {
+    DOUBLE_EYE(0,"KK-","4DKKLITE_","旧双目相机"),
+    FDKK_PRO(1,"KK-","4DKKPRO_","四维看看pro八目相机"),
+    FDKK_LITE(2,"KK-","4DKKLITE_","四维看看lite"),
+    ZHIHOUSE_REDHOUSE(5,"KK-","4DKKLITE_","指房宝小红屋相机"),
+    DOUBLE_EYE_TURN(9,"KJ-","4DKKLITE_","双目转台"),
+    LASER_TURN(10,"SS-","4DKKLA_","激光转台");
+
+
+    private int type;
+    private String sceneNumPrefix;
+    private String wifiNamePrefix;
+    private String desc;
+
+    public int getType() {
+        return type;
+    }
+
+    public String getSceneNumPrefix() {
+        return sceneNumPrefix;
+    }
+
+    static Map<Integer,CameraTypeEnum> typeMaps = new HashMap<>(5);
+
+    static{
+        for (CameraTypeEnum typeEnum : CameraTypeEnum.values()) {
+            typeMaps.put(typeEnum.getType(),typeEnum);
+        }
+    }
+
+    CameraTypeEnum(Integer type, String sceneNumPrefix, String wifiNamePrefix, String desc) {
+        this.type = type;
+        this.sceneNumPrefix = sceneNumPrefix;
+        this.wifiNamePrefix = wifiNamePrefix;
+        this.desc = desc;
+    }
+
+    public static String getSceneNumPrefixByType(Integer type){
+        if(typeMaps.containsKey(type)){
+            return typeMaps.get(type).getSceneNumPrefix();
+        }
+        return "";
+    }
+
+}