ソースを参照

v4.9.0 复制场景不支持重算、补拍

dsx 2 年 前
コミット
d885fa29f1

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

@@ -17,4 +17,6 @@ public interface ISceneCopyLogService extends IService<SceneCopyLog> {
 
     List<SceneCopyLog> listByNewNum(String newNum);
 
+    void checkCanBuild(String num);
+
 }

+ 11 - 0
src/main/java/com/fdkankan/contro/service/impl/SceneCopyLogServiceImpl.java

@@ -1,6 +1,9 @@
 package com.fdkankan.contro.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.contro.entity.SceneCopyLog;
 import com.fdkankan.contro.mapper.ISceneCopyLogMapper;
 import com.fdkankan.contro.service.ISceneCopyLogService;
@@ -23,4 +26,12 @@ public class SceneCopyLogServiceImpl extends ServiceImpl<ISceneCopyLogMapper, Sc
     public List<SceneCopyLog> listByNewNum(String newNum) {
         return this.list(new LambdaQueryWrapper<SceneCopyLog>().eq(SceneCopyLog::getNewNum, newNum));
     }
+
+    @Override
+    public void checkCanBuild(String num) {
+        List<SceneCopyLog> sceneCopyLogs = this.listByNewNum(num);
+        if(CollUtil.isNotEmpty(sceneCopyLogs)){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5071);
+        }
+    }
 }

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

@@ -262,7 +262,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             dataSource = scenePlusService.getDataSourceLikeUnicode("/" + folderName);
         }
 
-        if (!ObjectUtils.isEmpty(dataSource)) {
+        if (StrUtil.isNotEmpty(dataSource)) {
             log.info("从数据库中查到与 fileId:{} 匹配的路径为:{}", fileId, dataSource);
             int n = dataSource.split("/").length;
             if (n > 1) {
@@ -270,7 +270,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             }
         }
 
-        if (ObjectUtils.isEmpty(fileId)) {
+        if (StrUtil.isEmpty(fileId)) {
             fileId = new SnowflakeIdGenerator(0, 0).nextId() + "";
             log.info("新生成build数据,{}", fileId);
         }
@@ -328,6 +328,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             rebuild = 0;
         } else {
             sceneNum = scenePlus.getNum();
+            sceneCopyLogService.checkCanBuild(sceneNum);
             if (scenePlus.getSceneStatus().equals(SceneStatus.wait.code())) {
                 log.info(scenePlus.getNum() + ":场景处于计算中,不能再计算");
                 return null;
@@ -427,8 +428,10 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     }
 
     public ScenePlusVO buildV3Scene(ScenePro scenePro,String fileId, String prefix,JSONObject jsonObject,String buildType,long cameraType) throws Exception{
-        //调用createScene方法生成scene数据和加入算法队列
 
+        sceneCopyLogService.checkCanBuild(scenePro.getNum());
+
+        //调用createScene方法生成scene数据和加入算法队列
         String cameraName = jsonObject.getJSONObject("cam").getString("uuid");
         String unicode = jsonObject.getString("creator") + "_" + jsonObject.getString("uuidtime");
 
@@ -630,6 +633,12 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     }
 
     private boolean callV3(ScenePro scenePro, String preParams, JSONObject fdageJson,String api) throws Exception {
+
+        //复制出来的场景不支持补拍上传
+        if(Objects.nonNull(scenePro)){
+            sceneCopyLogService.checkCanBuild(scenePro.getNum());
+        }
+
         String cameraName = fdageJson.getJSONObject("cam").getString("uuid");
 
         Camera camera = cameraService.getByChildName(cameraName);
@@ -1119,7 +1128,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
 
         //复制出来的场景不支持重算
-        List<SceneCopyLog> sceneCopyLogs = sceneCopyLogService.listByNewNum(num);
+        List<SceneCopyLog> sceneCopyLogs = sceneCopyLogService. listByNewNum(num);
         if(CollUtil.isNotEmpty(sceneCopyLogs)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5071);
         }

+ 9 - 12
src/main/java/com/fdkankan/contro/service/impl/ScenePlusServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fdkankan.contro.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.ErrorCode;
@@ -65,23 +66,19 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     @Override
     public String getDataSourceLikeUnicode(String unicode) {
         // 防止plus表删除,ext表未删除
-        List<ScenePlusExt> scenePlusExts = scenePlusExtService.list(
-            new LambdaQueryWrapper<ScenePlusExt>().like(ScenePlusExt::getDataSource, unicode)
-                    .eq(ScenePlusExt::getRecStatus,"A"));
+        ScenePlusExt scenePlusExt = scenePlusExtService.getOne(
+            new LambdaQueryWrapper<ScenePlusExt>().select(ScenePlusExt::getPlusId, ScenePlusExt::getDataSource).like(ScenePlusExt::getDataSource, unicode));
 
-        if (ObjectUtils.isEmpty(scenePlusExts)) {
+        if (Objects.isNull(scenePlusExt)) {
             return null;
         }
 
-        if (scenePlusExts.size() > 1) {
-            for (ScenePlusExt scenePlusExt : scenePlusExts) {
-                ScenePlus plus = getById(scenePlusExt.getPlusId());
-                if (!ObjectUtils.isEmpty(plus) && plus.getRecStatus().equals("A")) {
-                    return scenePlusExt.getDataSource();
-                }
-            }
+        ScenePlus plus = getById(scenePlusExt.getPlusId());
+        if (Objects.nonNull(plus)) {
+            return scenePlusExt.getDataSource();
         }
-        return scenePlusExts.get(0).getDataSource();
+        scenePlusExtService.removeById(scenePlusExt);
+        return null;
     }
 
     @Override