Pārlūkot izejas kodu

Merge branch 'feature-sg-20230615-dsx' into test

dsx 2 gadi atpakaļ
vecāks
revīzija
988f0604df

+ 3 - 0
src/main/java/com/fdkankan/contro/entity/ScenePlusExt.java

@@ -145,6 +145,9 @@ public class ScenePlusExt implements Serializable {
     @TableField("yun_file_bucket")
     private String yunFileBucket;
 
+    @TableField("location")
+    private Integer location;
+
     /**
      * 创建时间
      */

+ 55 - 0
src/main/java/com/fdkankan/contro/mq/listener/UpdateSceneStatusListener.java

@@ -0,0 +1,55 @@
+package com.fdkankan.contro.mq.listener;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.fyun.face.FYunFileServiceInterface;
+import com.fdkankan.model.constants.UploadFilePath;
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.Queue;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+
+@Slf4j
+@Component
+public class UpdateSceneStatusListener {
+
+    @Autowired
+    private FYunFileServiceInterface fYunFileService;
+
+    /**
+     * 更新场景status.json状态
+     * @param channel
+     * @param message
+     * @throws Exception
+     */
+    @RabbitListener(
+            queuesToDeclare = @Queue("${queue.scene.update-scene-status}")
+    )
+    public void buildScenePreHandler(Channel channel, Message message) throws Exception {
+        String msg = new String(message.getBody(), StandardCharsets.UTF_8);
+        log.info("开始更新场景的的status.json状态,content:{}", msg);
+        HashMap<String, Object> map = JSON.parseObject(msg, HashMap.class);
+        String num = (String) map.get("num");
+        Integer status = (Integer)map.get("status");
+        String statusJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH, num).concat("status.json");
+        try {
+
+            String fileContent = fYunFileService.getFileContent(statusJsonPath);
+            JSONObject jsonObject = JSON.parseObject(fileContent);
+            jsonObject.put("status", status);
+            fYunFileService.uploadFile(jsonObject.toJSONString().getBytes(), statusJsonPath);
+        }catch (Exception e){
+            log.error("更新场景的的status.json状态, content:{}", msg, e);
+        }finally {
+            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+        }
+        log.info("结束更新场景的的status.json状态,content:{}", msg);
+    }
+
+}

+ 6 - 1
src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java

@@ -606,10 +606,15 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
         //scenejson写入缓存
         redisUtil.set(String.format(RedisKey.SCENE_JSON, num), sceneJsonStr);
 
+        Integer status = 1;
+        if(scenePlus.getSceneSource() == 4 || scenePlus.getSceneSource() == 5){//如果是激光场景,需要激光系统那边完全处理好之后再发mq通知更新状态
+            status = 0;
+        }
+
         // 上传status JSON.
         JSONObject statusJson = new JSONObject();
         //临时将-2改成1,app还没完全更新
-        statusJson.put("status", 1);
+        statusJson.put("status", status);
         statusJson.put("webSite", scenePlusExt.getWebSite());
         statusJson.put("sceneNum", num);
         statusJson.put("thumb", scenePlusExt.getThumb());

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

@@ -422,7 +422,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         ScenePlusVO scenePlusVO = this.createScenePlus(sceneNum, cameraDetail.getCameraId(), jsonObject.getString("creator"),
                 jsonObject.getString("pwd"),cameraType, jsonObject.getJSONObject("cam").getIntValue("type"),
-                dataSource, icon,  cameraDetail.getUserId(), userName,algorithm,
+                dataSource, icon,  cameraDetail.getUserId(), userName,algorithm,jsonObject.getInteger("location"),
                 jsonObject.getJSONArray("points").size(), jsonObject.getString("name"), jsonObject.getString("info"),
                 jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), rebuild,
                 jsonObject.getInteger("resolution"), firmwareVersion.toString(), sceneUrl, buildType, cameraDetail.getCooperationUser());
@@ -807,7 +807,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
     public ScenePlusVO createScenePlus(String projectNum, Long cameraId, String phoneId, String sceneKey,
                                      Long cameraType, int camType, String dataSource, String pic, Long userId, String userName,
-                                     String algorithm, Integer sceneShootCount, String sceneName,
+                                     String algorithm, Integer location, Integer sceneShootCount, String sceneName,
                                      String sceneDec, Integer sceneType, String gps,Integer type,
                                      Integer resolution, String firmwareVersion, String url, String buildType,
                                      Long cooperationUser)throws Exception{
@@ -821,6 +821,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         scenePlus.setNum(projectNum);
         scenePlus.setSceneSource(SceneSource.BM.code());
         scenePlusExt.setDataSource(dataSource);
+        scenePlusExt.setLocation(location);
 
         if(resolution == null || resolution.intValue() == 0){
             scenePlusExt.setSceneScheme(cameraType.intValue());