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

优化激光场景构建逻辑

tianboguang преди 2 години
родител
ревизия
87e86e3f26

+ 3 - 4
src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java

@@ -189,7 +189,9 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
             boolean arrearCap = this.updateSpace(scenePlus.getCameraId(), space);
 
             //如果相机容量不足,需要把场景的paystatus改为容量不足状态
-            this.sealScene(arrearCap, scenePlus.getId(), scenePlus.getId());
+            if (arrearCap && cameraType != 14) {
+                this.sealScene(arrearCap, scenePlus.getId(), scenePlus.getId());
+            }
 
             Object[] editInfoArr = this.updateEditInfo(scenePlus);
             SceneEditInfo sceneEditInfo = (SceneEditInfo)editInfoArr[0];
@@ -595,9 +597,6 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
     }
 
     private void sealScene(boolean arrearCap, Long scenePlusId, Long sceneProId){
-        if(!arrearCap){
-            return;
-        }
         scenePlusService.update(
             new LambdaUpdateWrapper<ScenePlus>()
                 .set(ScenePlus::getPayStatus, PayStatus.NO_CAPACITY.code())

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

@@ -105,22 +105,23 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
         }
     }
 
-    public void saveScene(ScenePlus sceneProEntity, String scenePassword, Camera cameraEntity, String phone, boolean rebuild) {
-        String url = laserHost + String.format(SAVE_SCENE_URL_TEMPLATE, sceneProEntity.getNum());
+
+    public void saveScene(ScenePlus scenePlus, String scenePassword, Camera cameraEntity, String phone, boolean rebuild) {
+        String url = laserHost + String.format(SAVE_SCENE_URL_TEMPLATE, scenePlus.getNum());
         Map<String, Object> params = new HashMap<>();
         params.put("childName", cameraEntity.getChildName());
-        params.put("createTime", DateUtil.date2String(sceneProEntity.getCreateTime(), null));
+        params.put("createTime", DateUtil.date2String(scenePlus.getCreateTime(), null));
         params.put("phone", phone);
-        params.put("sceneCode", sceneProEntity.getNum());
+        params.put("sceneCode", scenePlus.getNum());
         params.put("snCode", cameraEntity.getSnCode());
-        params.put("status", sceneProEntity.getSceneStatus());
+        params.put("status", scenePlus.getSceneStatus());
         if (!rebuild) {
             params.put("password", scenePassword);
         } else {
             params.put("status", 4);
         }
-        params.put("title", sceneProEntity.getTitle());
-        params.put("userId", sceneProEntity.getUserId());
+        params.put("title", scenePlus.getTitle());
+        params.put("userId", scenePlus.getUserId());
         log.info("自研激光转台相机同步,url:{},params:{}", url, JSONObject.toJSONString(params));
         ResponseEntity<Result> responseEntity = restTemplate.postForEntity(url, params, Result.class);
         log.info("自研激光转台相机同步,url:{},params:{},结果,{}", url, JSONObject.toJSONString(params), JSONObject.toJSONString(responseEntity.getBody()));

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

@@ -226,7 +226,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         return list.get(0);
     }
 
-    public void buildScene(String fileId, String prefix,JSONObject jsonObject,String buildType,long cameraType) throws Exception{
+    public ScenePlusVO buildScene(String fileId, String prefix,JSONObject jsonObject,String buildType,long cameraType) throws Exception{
         //调用createScene方法生成scene数据和加入算法队列
         String sceneNum = "";
 
@@ -253,7 +253,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             rebuild = 0;
         } else if (scenePlus.getSceneStatus().equals(SceneStatus.wait.code())) {
             log.info(scenePlus.getNum() + ":场景处于计算中,不能再计算");
-            return;
+            return null;
         }
 
         if (sceneNum == null) {
@@ -348,6 +348,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         BuildSceneCallMessage mqMessage = getBuildSceneMqMessage(sceneNum, cameraType, algorithm, jsonObject.getInteger("resolution"), buildType,
                 scenePlusVO.getDataSource());
         rabbitMqProducer.sendByWorkQueue(queueModelingPre, mqMessage);
+
+        return scenePlusVO;
     }
 
     @Override
@@ -490,7 +492,20 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             //激光转台
             cameraType = 14L;
         }
-        buildScene(fileId, prefixBuffer.toString(),fdageJson,buildType,cameraType);
+        ScenePlusVO scenePlusVO = buildScene(fileId, prefixBuffer.toString(), fdageJson, buildType, cameraType);
+        if(ObjectUtils.isEmpty(scenePlusVO)){
+            return ResultData.ok();
+        }
+        // 通知激光场景系统开始构建场景
+        if(cameraType.longValue() == 14){
+            ScenePlus scenePlus = scenePlusService.getScenePlusByNum(scenePlusVO.getNum());
+            Long sceneUserId = scenePlus.getUserId();
+            String userName = null;
+            if(!ObjectUtils.isEmpty(sceneUserId)){
+                userName = userService.getSSOUserByUserId(sceneUserId).getUserName();
+            }
+            fdkkLaserService.saveScene(scenePlus,fdageJson.getString("pwd"),camera,userName,false);
+        }
         return ResultData.ok();
     }