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")
     @TableField("yun_file_bucket")
     private String yunFileBucket;
     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写入缓存
         //scenejson写入缓存
         redisUtil.set(String.format(RedisKey.SCENE_JSON, num), sceneJsonStr);
         redisUtil.set(String.format(RedisKey.SCENE_JSON, num), sceneJsonStr);
 
 
+        Integer status = 1;
+        if(scenePlus.getSceneSource() == 4 || scenePlus.getSceneSource() == 5){//如果是激光场景,需要激光系统那边完全处理好之后再发mq通知更新状态
+            status = 0;
+        }
+
         // 上传status JSON.
         // 上传status JSON.
         JSONObject statusJson = new JSONObject();
         JSONObject statusJson = new JSONObject();
         //临时将-2改成1,app还没完全更新
         //临时将-2改成1,app还没完全更新
-        statusJson.put("status", 1);
+        statusJson.put("status", status);
         statusJson.put("webSite", scenePlusExt.getWebSite());
         statusJson.put("webSite", scenePlusExt.getWebSite());
         statusJson.put("sceneNum", num);
         statusJson.put("sceneNum", num);
         statusJson.put("thumb", scenePlusExt.getThumb());
         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"),
         ScenePlusVO scenePlusVO = this.createScenePlus(sceneNum, cameraDetail.getCameraId(), jsonObject.getString("creator"),
                 jsonObject.getString("pwd"),cameraType, jsonObject.getJSONObject("cam").getIntValue("type"),
                 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.getJSONArray("points").size(), jsonObject.getString("name"), jsonObject.getString("info"),
                 jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), rebuild,
                 jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), rebuild,
                 jsonObject.getInteger("resolution"), firmwareVersion.toString(), sceneUrl, buildType, cameraDetail.getCooperationUser());
                 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,
     public ScenePlusVO createScenePlus(String projectNum, Long cameraId, String phoneId, String sceneKey,
                                      Long cameraType, int camType, String dataSource, String pic, Long userId, String userName,
                                      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,
                                      String sceneDec, Integer sceneType, String gps,Integer type,
                                      Integer resolution, String firmwareVersion, String url, String buildType,
                                      Integer resolution, String firmwareVersion, String url, String buildType,
                                      Long cooperationUser)throws Exception{
                                      Long cooperationUser)throws Exception{
@@ -821,6 +821,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         scenePlus.setNum(projectNum);
         scenePlus.setNum(projectNum);
         scenePlus.setSceneSource(SceneSource.BM.code());
         scenePlus.setSceneSource(SceneSource.BM.code());
         scenePlusExt.setDataSource(dataSource);
         scenePlusExt.setDataSource(dataSource);
+        scenePlusExt.setLocation(location);
 
 
         if(resolution == null || resolution.intValue() == 0){
         if(resolution == null || resolution.intValue() == 0){
             scenePlusExt.setSceneScheme(cameraType.intValue());
             scenePlusExt.setSceneScheme(cameraType.intValue());