Bläddra i källkod

Merge remote-tracking branch 'refs/remotes/origin/test-1.7.0-20240403' into dev-1.8.0-20241128

# Conflicts:
#	720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/WorkServiceImpl.java
xiewj 8 månader sedan
förälder
incheckning
602c3774ee
29 ändrade filer med 670 tillägg och 53 borttagningar
  1. 30 0
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/entity/OpenSceneMigrateDto.java
  2. 2 0
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/entity/RelicsSceneInitQueueDTO.java
  3. 6 0
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/entity/SceneQueueDTO.java
  4. 10 0
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/entity/WorkEntity.java
  5. 95 6
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/SceneListener.java
  6. 110 0
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/SceneMigrateListener.java
  7. 105 0
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/ScenePayStatusListener.java
  8. 11 1
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/service/impl/FodderServiceImpl.java
  9. 4 0
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/service/impl/WorkServiceImpl.java
  10. 5 1
      720yun_fd_consumer/gis_consumer/src/main/resources/application-dev.yml
  11. 3 0
      720yun_fd_consumer/gis_consumer/src/main/resources/application-loc-site.yml
  12. 5 1
      720yun_fd_consumer/gis_consumer/src/main/resources/application-loc.yml
  13. 4 1
      720yun_fd_consumer/gis_consumer/src/main/resources/application-pro.yml
  14. 4 0
      720yun_fd_consumer/gis_consumer/src/main/resources/application-sit.yml
  15. 1 0
      720yun_fd_consumer/gis_consumer/src/main/resources/application-sitAws.yml
  16. 55 2
      720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/AliYunOssUtil.java
  17. 17 0
      720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/AwsOssUtil.java
  18. 18 1
      720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/FileAndOssUtil.java
  19. 1 1
      720yun_fd_manage/gis_application/src/main/resources/application-pro.yml
  20. 9 0
      720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/dto/AgePageDto.java
  21. 53 0
      720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/dto/RelicsSceneInitQueueDTO.java
  22. 3 0
      720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/entity/WorkEntity.java
  23. 4 0
      720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/vo/WorkIdVO.java
  24. 5 1
      720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/WorkMapper.java
  25. 28 6
      720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/provider/WorkProvider.java
  26. 2 0
      720yun_fd_manage/gis_service/src/main/java/com/gis/service/WorkService.java
  27. 43 32
      720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/WorkServiceImpl.java
  28. 1 0
      720yun_fd_manage/gis_web/src/main/java/com/gis/web/aop/WebLogAspect.java
  29. 36 0
      720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/InnerController.java

+ 30 - 0
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/entity/OpenSceneMigrateDto.java

@@ -0,0 +1,30 @@
+package com.gis.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author Xiewj
+ * @date 2021/11/23
+ */
+@Data
+public class OpenSceneMigrateDto {
+
+
+    @ApiModelProperty(value = "相机码")
+    private String snCode;
+    @ApiModelProperty(value = "迁移相机码")
+    private String toSnCode;
+    @ApiModelProperty(value = "用户Id")
+    private Integer userId;
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+    @ApiModelProperty(value = "场景码")
+    private String sceneCode;
+    @ApiModelProperty(value = "来源")
+    private String dataSource;
+    @ApiModelProperty(value = "场景码")
+    private List<String> sceneCodes;
+}

+ 2 - 0
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/entity/RelicsSceneInitQueueDTO.java

@@ -51,4 +51,6 @@ public class RelicsSceneInitQueueDTO {
     @ApiModelProperty(value = "点位数量")
     private Integer shootCount;
 
+    private int payStatus;
+
 }

+ 6 - 0
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/entity/SceneQueueDTO.java

@@ -6,6 +6,7 @@ import com.google.gson.JsonObject;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
+import java.util.List;
 
 import lombok.Data;
 
@@ -54,4 +55,9 @@ public class SceneQueueDTO {
 
     private JsonObject gps;
 
+    @ApiModelProperty(value = "0表示未付款,1表示付款了,-1表示欠费(八目场景指锁住),-2表示临时空间(八目场景)", name = "payStatus")
+    private int payStatus;
+
+    private List<String> sceneCodes;
+
 }

+ 10 - 0
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/entity/WorkEntity.java

@@ -6,6 +6,8 @@ import lombok.Data;
 
 import javax.persistence.Entity;
 import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -76,4 +78,12 @@ public class WorkEntity extends BaseStrEntity implements Serializable {
 
     @ApiModelProperty(value = "计算完成时间")
     private Date algorithmTime;
+
+    @ApiModelProperty(value = "拍摄时间")
+    @Temporal(TemporalType.TIMESTAMP)
+    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+    private Date shootTime;
+
+    @ApiModelProperty(value = "0表示未付款,1表示付款了,-1表示欠费(八目场景指锁住),-2表示临时空间(八目场景)", name = "payStatus")
+    private Integer payStatus;
 }

+ 95 - 6
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/SceneListener.java

@@ -8,6 +8,7 @@ import cn.hutool.http.HttpResponse;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.amazonaws.services.dynamodbv2.xspec.S;
 import com.gis.constant.CmdConstant;
 import com.gis.constant.ConfigConstant;
 import com.gis.entity.RelicsSceneInitQueueDTO;
@@ -72,6 +73,11 @@ public class SceneListener {
     RabbitMqProducerUtil rabbitMqProducerUtil;
     @Value("${queue.relics-init-queue}")
     String relicsInitQueue;
+
+    @Value("${queue.scene-queue-work}")
+    String sceneQueueWork;
+
+
     /**
      * 全景场景初始化方法
      *
@@ -80,7 +86,7 @@ public class SceneListener {
      * @throws Exception the io exception  这里异常需要处理
      */
     @RabbitListener(
-            queuesToDeclare = @Queue("${queue.scene-queue}"),concurrency = "1"
+            queuesToDeclare = @Queue("${queue.scene-queue}"),concurrency = "2"
     )
     public void sceneQueue(Channel channel, Message message) throws IOException {
             if (ObjectUtils.isEmpty(message.getBody())) {
@@ -89,7 +95,7 @@ public class SceneListener {
             }
         String traceId = System.currentTimeMillis()+"";
         MDC.put("TRACE_ID", traceId);
-
+        String sceneCode="";
         long deliveryTag = message.getMessageProperties().getDeliveryTag();
         try {
             String msg = new String(message.getBody(), StandardCharsets.UTF_8);
@@ -100,6 +106,7 @@ public class SceneListener {
                 log.error("参数列表错误(缺少),格式不匹配,{}",param);
                 channel.basicAck(deliveryTag, false);
             }
+            sceneCode=param.getSceneCode();
             WorkEntity workEntity=workService.findByNum(param.getSceneCode());
             if (ObjectUtil.isEmpty(workEntity)&&param.getStatus()==0){
                 //初始化创建work表数据
@@ -113,14 +120,72 @@ public class SceneListener {
                     workEntity.setPassword(param.getPwd());
                     workEntity.setIsPassword(1);
                 }
+                if (ObjectUtil.isNotEmpty(param.getPayStatus())){
+                    workEntity.setPayStatus(param.getPayStatus());
+                }
                 workService.update(workEntity);
                 sendStartMq(param);
                 channel.basicAck(deliveryTag, false);
-            }else if (ObjectUtil.isNotEmpty(param.getSceneCode())&&param.getStatus()==1){
+            }else if (ObjectUtil.isNotEmpty(param.getSceneCode())&&param.getStatus()==1) {
+                //发送到处理队列
+                rabbitMqProducerUtil.sendByWorkQueue(sceneQueueWork, msg);
+                channel.basicAck(deliveryTag, false);
+
+            }
+
+
+        }catch (Exception e){
+            if (StrUtil.isNotEmpty(sceneCode)){
+                updateOssStatusJson(sceneCode,0);
+            }
+            channel.basicAck(deliveryTag, false);
+            log.error("场景sceneQueue报错{}",e.getMessage());
+            e.printStackTrace();
+
+        }
+    }
+
+
+    /**
+     * 全景场景初始化方法
+     *
+     * @param channel
+     * @param message
+     * @throws Exception the io exception  这里异常需要处理
+     */
+    @RabbitListener(
+            queuesToDeclare = @Queue("${queue.scene-queue-work}"),concurrency = "1"
+    )
+    public void sceneQueueWork(Channel channel, Message message) throws IOException {
+        if (ObjectUtils.isEmpty(message.getBody())) {
+            log.error("消息内容为空,退出构建,当前服务器id:{}" );
+            return;
+        }
+        String traceId = System.currentTimeMillis()+"";
+        MDC.put("TRACE_ID", traceId);
+        String sceneCode="";
+        long deliveryTag = message.getMessageProperties().getDeliveryTag();
+        try {
+            String msg = new String(message.getBody(), StandardCharsets.UTF_8);
+            String messageId = message.getMessageProperties().getMessageId();
+            log.info("场景sceneQueueWork开始,id:{},deliveryTag:{},消息体:{}", messageId,deliveryTag,msg);
+            SceneQueueDTO param = JSONObject.parseObject(JSON.parse(msg).toString(), SceneQueueDTO.class);
+            if (ObjectUtil.isEmpty(param.getSceneCode())) {
+                log.error("参数列表错误(缺少),格式不匹配,{}",param);
+                channel.basicAck(deliveryTag, false);
+            }
+            sceneCode=param.getSceneCode();
+            WorkEntity workEntity=workService.findByNum(param.getSceneCode());
+            if (ObjectUtil.isNotEmpty(param.getSceneCode())&&param.getStatus()==1){
+                updateOssStatusJson(param.getSceneCode(),0);
+
                 //计算完成处理
                 //1,下载场景的全景图 默认 。scene_view_data/panorama/目录下的全景图图片
                 workEntity.setAlgorithmTime(param.getAlgorithmTime());
                 workEntity.setCalcStatus(0);
+                if (ObjectUtil.isNotEmpty(param.getPayStatus())){
+                    workEntity.setPayStatus(param.getPayStatus());
+                }
                 if (ObjectUtil.isNotEmpty(param.getSceneSource())){
                     workEntity.setSceneSource(param.getSceneSource());
                 }
@@ -144,7 +209,7 @@ public class SceneListener {
                     log.info("vision.txt存在: {}");
                     JSONObject visJson = JSONObject.parseObject(execute.body());
                     if(visJson.containsKey("sweepLocations")){
-                          sweepLocations = visJson.getJSONArray("sweepLocations");
+                        sweepLocations = visJson.getJSONArray("sweepLocations");
                     }
                 }
 
@@ -190,16 +255,38 @@ public class SceneListener {
                 workEntity.setCalcStatus(1);
                 workService.update(workEntity);
                 sendEndMq(param);
+                updateOssStatusJson(param.getSceneCode(),1);
                 channel.basicAck(deliveryTag, false);
             }
 
 
         }catch (Exception e){
-            e.printStackTrace();
+            if (StrUtil.isNotEmpty(sceneCode)){
+                updateOssStatusJson(sceneCode,0);
+            }
             channel.basicAck(deliveryTag, false);
             log.error("场景sceneQueue报错{}",e.getMessage());
+            e.printStackTrace();
         }
     }
+
+
+    private void updateOssStatusJson(String sceneCode, int status) throws IOException {
+        //修改OSS,status状态 scene_view_data/场景码/data/status.json
+        String statusJson = "scene_view_data/"+sceneCode+"/data/status.json";
+        Boolean exist=aliyunOssUtil.existKey("4dkankan",statusJson);
+        if (exist){
+            String statusJsonUrl = "http://4dkk.4dage.com/"+statusJson;
+            HttpResponse execute = HttpRequest.get(statusJsonUrl+"?m="+System.currentTimeMillis()).execute();
+            if (execute.getStatus()==200){
+                log.info("statusJson存在: {}");
+                JSONObject statusJsonObj = JSONObject.parseObject(execute.body());
+                statusJsonObj.put("status",status);
+                fileAndOssUtil.upload("4dkankan",statusJsonObj.toJSONString().getBytes(StandardCharsets.UTF_8), statusJson);
+            }
+        }
+    }
+
     private void sendStartMq(SceneQueueDTO param) {
             RelicsSceneInitQueueDTO relicsSceneInitQueueDTO = new RelicsSceneInitQueueDTO();
             relicsSceneInitQueueDTO.setSceneCode(param.getSceneCode());
@@ -212,6 +299,7 @@ public class SceneListener {
             relicsSceneInitQueueDTO.setSceneName(param.getSceneName());
             relicsSceneInitQueueDTO.setShootCount(param.getShootCount());
             relicsSceneInitQueueDTO.setSceneSource(param.getSceneSource());
+            relicsSceneInitQueueDTO.setPayStatus(param.getPayStatus());
             rabbitMqProducerUtil.sendByWorkQueue(relicsInitQueue, relicsSceneInitQueueDTO);
     }
     private void sendEndMq(SceneQueueDTO param) {
@@ -227,7 +315,8 @@ public class SceneListener {
             relicsSceneInitQueueDTO.setSceneName(param.getSceneName());
             relicsSceneInitQueueDTO.setShootCount(param.getShootCount());
             relicsSceneInitQueueDTO.setSceneSource(param.getSceneSource());
-            rabbitMqProducerUtil.sendByWorkQueue(relicsInitQueue, relicsSceneInitQueueDTO);
+            relicsSceneInitQueueDTO.setPayStatus(param.getPayStatus());
+        rabbitMqProducerUtil.sendByWorkQueue(relicsInitQueue, relicsSceneInitQueueDTO);
     }
 
     private static final String CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

+ 110 - 0
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/SceneMigrateListener.java

@@ -0,0 +1,110 @@
+package com.gis.listener;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.gis.constant.CmdConstant;
+import com.gis.constant.ConfigConstant;
+import com.gis.entity.OpenSceneMigrateDto;
+import com.gis.entity.WorkEntity;
+import com.gis.exception.BaseRuntimeException;
+import com.gis.mq.RabbitMqProducerUtil;
+import com.gis.oss.util.AliYunOssUtil;
+import com.gis.oss.util.FileAndOssUtil;
+import com.gis.service.ScenePanoService;
+import com.gis.service.WorkService;
+import com.gis.util.CmdUtils;
+import com.gis.util.FileUtils;
+import com.gis.util.QrCodeUtils;
+import com.gis.util.RandomUtils;
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.MDC;
+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.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 消息监听器
+ *
+ * @author Xiewj
+ * @version 1.0
+ * @since 2023/08/07
+ */
+@Component
+@Slf4j
+public class SceneMigrateListener {
+
+    @Autowired
+    AliYunOssUtil aliyunOssUtil;
+    @Autowired
+    ConfigConstant configConstant;
+    @Autowired
+    FileAndOssUtil fileAndOssUtil;
+    @Autowired
+    WorkService workService;
+    @Autowired
+    QrCodeUtils qrCodeUtils;
+    @Autowired
+    ScenePanoService scenePanoService;
+    @Autowired
+    RabbitMqProducerUtil rabbitMqProducerUtil;
+    /**
+     * 全景场景初始化方法
+     *
+     * @param channel
+     * @param message
+     * @throws Exception the io exception  这里异常需要处理
+     */
+    @RabbitListener(
+            queuesToDeclare = @Queue("${queue.pano-migrate-scene-queue}"),concurrency = "1"
+    )
+    public void migrateSceneQueue(Channel channel, Message message) throws IOException {
+            if (ObjectUtils.isEmpty(message.getBody())) {
+                log.error("消息内容为空,退出构建,当前服务器id:{}" );
+                return;
+            }
+        String traceId = System.currentTimeMillis()+"";
+        MDC.put("TRACE_ID", traceId);
+        long deliveryTag = message.getMessageProperties().getDeliveryTag();
+        try {
+            String msg = new String(message.getBody(), StandardCharsets.UTF_8);
+            String messageId = message.getMessageProperties().getMessageId();
+            log.info("场景migrateSceneQueue开始,id:{},deliveryTag:{},消息体:{}", messageId,deliveryTag,msg);
+            OpenSceneMigrateDto param = JSONObject.parseObject(JSON.parse(msg).toString(), OpenSceneMigrateDto.class);
+            if (StrUtil.isNotEmpty(param.getSceneCode())&&StrUtil.isEmpty(param.getSnCode())) {
+                WorkEntity workEntity=workService.findByNum(param.getSceneCode());
+                if (ObjectUtil.isNotNull(workEntity)) {
+                    workEntity.setSnCode(param.getToSnCode());
+                    workEntity.setUserId(param.getPhone());
+                    workService.update(workEntity);
+                }
+            }
+        }catch (Exception e){
+            channel.basicAck(deliveryTag, false);
+            log.error("场景migrateSceneQueue报错{}",e.getMessage());
+            e.printStackTrace();
+        }
+        channel.basicAck(deliveryTag, false);
+    }
+
+}

+ 105 - 0
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/ScenePayStatusListener.java

@@ -0,0 +1,105 @@
+package com.gis.listener;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.gis.constant.CmdConstant;
+import com.gis.constant.ConfigConstant;
+import com.gis.entity.RelicsSceneInitQueueDTO;
+import com.gis.entity.ScenePanoEntity;
+import com.gis.entity.SceneQueueDTO;
+import com.gis.entity.WorkEntity;
+import com.gis.exception.BaseRuntimeException;
+import com.gis.mq.RabbitMqProducerUtil;
+import com.gis.oss.util.AliYunOssUtil;
+import com.gis.oss.util.FileAndOssUtil;
+import com.gis.service.ScenePanoService;
+import com.gis.service.WorkService;
+import com.gis.util.CmdUtils;
+import com.gis.util.FileUtils;
+import com.gis.util.QrCodeUtils;
+import com.gis.util.RandomUtils;
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.MDC;
+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.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 消息监听器
+ *
+ * @author Xiewj
+ * @version 1.0
+ * @since 2023/08/07
+ */
+@Component
+@Slf4j
+public class ScenePayStatusListener {
+
+    @Autowired
+    WorkService workService;
+    /**
+     * 全景场景初始化方法
+     *
+     * @param channel
+     * @param message
+     * @throws Exception the io exception  这里异常需要处理
+     */
+    @RabbitListener(
+            queuesToDeclare = @Queue("${queue.pano-paystatus-scene-queue}"),concurrency = "1"
+    )
+    public void scenePayStatusQueue(Channel channel, Message message) throws IOException {
+            if (ObjectUtils.isEmpty(message.getBody())) {
+                log.error("消息内容为空,退出构建,当前服务器id:{}" );
+                return;
+            }
+        String traceId = System.currentTimeMillis()+"";
+        MDC.put("TRACE_ID", traceId);
+        long deliveryTag = message.getMessageProperties().getDeliveryTag();
+        try {
+            String msg = new String(message.getBody(), StandardCharsets.UTF_8);
+            String messageId = message.getMessageProperties().getMessageId();
+            log.info("场景scenePayStatusQueue开始,id:{},deliveryTag:{},消息体:{}", messageId,deliveryTag,msg);
+            SceneQueueDTO param = JSONObject.parseObject(msg, SceneQueueDTO.class);
+            if (ObjectUtil.isEmpty(param.getSceneCodes())&& ArrayUtil.isNotEmpty(param.getSceneCodes())) {
+                log.error("参数列表错误(缺少),格式不匹配,{}",param);
+                channel.basicAck(deliveryTag, false);
+            }
+            for (String sceneCode : param.getSceneCodes()) {
+                WorkEntity workEntity=workService.findByNum(sceneCode);
+                if (ObjectUtil.isNotNull(workEntity)){
+                    //修改状态
+                    workEntity.setPayStatus(param.getPayStatus());
+                    workService.update(workEntity);
+                }
+            }
+            channel.basicAck(deliveryTag, false);
+        }catch (Exception e){
+            channel.basicAck(deliveryTag, false);
+            log.error("场景sceneQueue报错{}",e.getMessage());
+            e.printStackTrace();
+
+        }
+    }
+}

+ 11 - 1
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/service/impl/FodderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.gis.service.impl;
 
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.XmlUtil;
 import com.gis.constant.CmdConstant;
@@ -100,7 +101,16 @@ public class FodderServiceImpl implements FodderService {
 
         log.info("切图流程开始 : " + id);
         long start = System.currentTimeMillis();
-        FodderEntity entity = fodderMapper.findById(id);
+        FodderEntity entity = null;
+        int maxAttempts = 3; // 定义尝试次数
+        int attempts = 0; // 尝试次数计数器
+        while (entity == null && attempts < maxAttempts) {
+            entity = fodderMapper.findById(id);
+            if (entity == null) {
+                ThreadUtil.safeSleep(1000); // 暂停1000毫秒(1秒)
+                attempts++;
+            }
+        }
         if (entity == null) {
             log.error("场景不存在: " + id);
             // 直接结束,抛异常的话,会造成死循环,产生大量日志,而且队列也跑不下去

+ 4 - 0
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/service/impl/WorkServiceImpl.java

@@ -61,6 +61,10 @@ public class WorkServiceImpl extends IBaseStrServiceImpl<WorkEntity, String> imp
             entity.setPassword(sceneQueueDTO.getPwd());
             entity.setIsPassword(1);
         }
+        if (ObjectUtil.isNotEmpty(sceneQueueDTO.getPayStatus())){
+            entity.setPayStatus(sceneQueueDTO.getPayStatus());
+        }
+        entity.setShootTime(sceneQueueDTO.getCreateTime());
         entity.setCreateTime(sceneQueueDTO.getCreateTime());
         entity.setUpdateTime(sceneQueueDTO.getCreateTime());
         this.save2(entity);

+ 5 - 1
720yun_fd_consumer/gis_consumer/src/main/resources/application-dev.yml

@@ -56,4 +56,8 @@ tlog:
     enable-invoke-time-print: true
 queue:
     scene-queue: queue-pano-scene
-    do-slice-queue: queue-do-slice
+    do-slice-queue: queue-do-slice
+    relics-init-queue: relics-init-queue
+    relics-update-name-queue: relics-update-name-queue
+    pano-migrate-scene-queue: pano-migrate-scene-queue
+    pano-paystatus-scene-queue: pano-paystatus-scene-queue

+ 3 - 0
720yun_fd_consumer/gis_consumer/src/main/resources/application-loc-site.yml

@@ -67,5 +67,8 @@ tlog:
 queue:
     scene-queue: queue-pano-scene
     do-slice-queue: queue-do-slice
+    pano-migrate-scene-queue: pano-migrate-scene-queue
+    pano-paystatus-scene-queue: pano-paystatus-scene-queue
+
 domain:
     4dkk: https://test.4dkankan.com

+ 5 - 1
720yun_fd_consumer/gis_consumer/src/main/resources/application-loc.yml

@@ -56,4 +56,8 @@ tlog:
     enable-invoke-time-print: true
 queue:
     scene-queue: queue-pano-scene
-    do-slice-queue: queue-do-slice
+    do-slice-queue: queue-do-slice
+    relics-init-queue: relics-init-queue
+    relics-update-name-queue: relics-update-name-queue
+    pano-migrate-scene-queue: pano-migrate-scene-queue
+    pano-paystatus-scene-queue: pano-paystatus-scene-queue

+ 4 - 1
720yun_fd_consumer/gis_consumer/src/main/resources/application-pro.yml

@@ -53,7 +53,7 @@ spring:
         connection-timeout: 0
         listener:
             simple:
-                prefetch: 5
+                prefetch: 1
                 max-concurrency: 10
                 acknowledge-mode: manual #开启消费者手动确认
             direct:
@@ -79,3 +79,6 @@ queue:
     do-slice-queue: queue-do-slice
     relics-init-queue: relics-init-queue
     relics-update-name-queue: relics-update-name-queue
+    pano-migrate-scene-queue: pano-migrate-scene-queue
+    pano-paystatus-scene-queue: pano-paystatus-scene-queue
+    scene-queue-work: queue-pano-scene-work

+ 4 - 0
720yun_fd_consumer/gis_consumer/src/main/resources/application-sit.yml

@@ -65,3 +65,7 @@ queue:
     do-slice-queue: queue-do-slice
     relics-init-queue: relics-init-queue
     relics-update-name-queue: relics-update-name-queue
+    pano-migrate-scene-queue: pano-migrate-scene-queue
+    pano-paystatus-scene-queue: pano-paystatus-scene-queue
+    scene-queue-work: queue-pano-scene-work
+

+ 1 - 0
720yun_fd_consumer/gis_consumer/src/main/resources/application-sitAws.yml

@@ -54,3 +54,4 @@ spring:
         virtual-host: /
 tlog:
     enable-invoke-time-print: true
+    pano-migrate-scene-queue: pano-migrate-scene-queue

+ 55 - 2
720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/AliYunOssUtil.java

@@ -72,7 +72,27 @@ public class AliYunOssUtil {
             log.error(e.toString() + key);
         }
     }
-
+    /**
+     * 获取文件内容-阿里云
+     * @param objectName
+     * @return
+     */
+    public boolean existKey(String bucket,String objectName){
+        //创建oss客户端
+        OSSClient ossClient = init();
+        // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
+        try{
+            boolean exist = ossClient.doesObjectExist(bucket, objectName);
+            return exist;
+        }catch (Exception e){
+            log.error("s4判断是否存在key异常,key=" + objectName, e);
+        }finally {
+            if(ossClient != null){
+                ossClient.shutdown();
+            }
+        }
+        return false;
+    }
     /**
      *
      * @param data
@@ -95,6 +115,31 @@ public class AliYunOssUtil {
             log.error(e.toString() + key);
         }
     }
+    /**
+     *
+     * @param data
+     * @param key
+     * application/octet-stream 使用cdn后会自动下载
+     * @throws IOException
+     */
+    public void upload(String bucket,byte[] data, String key ) throws IOException {
+        OSSClient ossClient = init();
+        // 创建上传文件的元信息,可以通过文件元信息设置HTTP header。
+        try {
+            ObjectMetadata metadata = new ObjectMetadata();
+            if (key.contains(".jpg")) {
+                metadata.setContentType("image/jpeg");
+            } else if (key.contains(".png")) {
+                metadata.setContentType("image/png");
+            } else if (key.contains(".json")) {
+                metadata.setContentType("application/json");
+            }
+            // 2019-2-28 启动aliyun oss 空间
+            ossClient.putObject(bucket, key, new ByteArrayInputStream(data),metadata);
+        } catch (Exception e) {
+            log.error(e.toString() + key);
+        }
+    }
 
 
     public void upload(String filePath, String key) {
@@ -104,7 +149,15 @@ public class AliYunOssUtil {
             if (!file.exists()) {
                 log.error("要上传的文件不存在:" + filePath);
             }
-            ossClient.putObject(ossBucket, key, new File(filePath));
+            ObjectMetadata metadata = new ObjectMetadata();
+            if (filePath.contains(".jpg")) {
+                metadata.setContentType("image/jpeg");
+            } else if (filePath.contains(".png")) {
+                metadata.setContentType("image/png");
+            } else if (filePath.contains(".json")) {
+                metadata.setContentType("application/json");
+            }
+            ossClient.putObject(ossBucket, key, new File(filePath),metadata);
 
         } catch (Exception e) {
             log.error(e.toString() + filePath);

+ 17 - 0
720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/AwsOssUtil.java

@@ -62,6 +62,23 @@ public class AwsOssUtil {
             }
         }
     }
+    public void uploadAws(String bucket,byte[] data,String objectName){
+        BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrecy);
+        AmazonS3 s3 = AmazonS3ClientBuilder.standard()
+                .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
+                .withRegion(Regions.EU_WEST_2)
+                .build();
+        try {
+            com.amazonaws.services.s3.model.ObjectMetadata metadata = new com.amazonaws.services.s3.model.ObjectMetadata();
+            s3.putObject(bucket, objectName, new ByteArrayInputStream(data), metadata);
+        }catch (Exception e){
+            log.error("s3上传文件失败", e);
+        }finally {
+            if(s3 != null){
+                s3.shutdown();
+            }
+        }
+    }
 
     public void uploadAwsWithHeaders(String filePath, String key1,Map<String,String> headers){
         try{

+ 18 - 1
720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/FileAndOssUtil.java

@@ -101,7 +101,24 @@ public class FileAndOssUtil {
 	 * 第二个参数是本地文件路径
 	 */
 	private static final String UPLOAD_SH = "bash /opt/ossutil/upload.sh %s %s";
-
+	public void upload(String bucket,byte[] data,String key1) throws IOException{
+//		log.info("开始上传文件 源路径:{},目标路径:{}, type:{}" , new String(data, "UTF-8"), key1, type);
+		log.info("开始上传文件 , 目标路径:{}, type:{}" ,  key1, type);
+		StorageType storageType = StorageType.get(type);
+		switch (storageType){
+			case OSS:
+//				uploadOss(data,key1);
+				aliyunOssUtil.upload(bucket,data, key1);
+				break;
+			case AWS:
+//				uploadAws(data,key1);
+				awsOssUtil.uploadAws(bucket,data, key1);
+				break;
+			case LOCAL:
+//				uploadLocal(data,key1);
+				break;
+		}
+	}
 	//上传的数据是byte[],key是上传后的文件名
 	public void upload(byte[] data,String key1) throws IOException{
 //		log.info("开始上传文件 源路径:{},目标路径:{}, type:{}" , new String(data, "UTF-8"), key1, type);

+ 1 - 1
720yun_fd_manage/gis_application/src/main/resources/application-pro.yml

@@ -60,7 +60,7 @@ spring:
         connection-timeout: 0
         listener:
             simple:
-                prefetch: 5
+                prefetch: 1
                 max-concurrency: 10
                 acknowledge-mode: manual #开启消费者手动确认
             direct:

+ 9 - 0
720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/dto/AgePageDto.java

@@ -27,6 +27,15 @@ public class AgePageDto extends PageDateDto {
 
     private List<String> snCodes;
 
+    @ApiModelProperty(value = "1:查询全景作品,2:查询全景相机作品")
+    private Integer type;
 
+    @ApiModelProperty(value = "相机码")
+    private String snCode;
 
+    @ApiModelProperty(value = "场景码")
+    private String num;
+
+    @ApiModelProperty(value = "场景码集合")
+    private List<String> nums;
 }

+ 53 - 0
720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/dto/RelicsSceneInitQueueDTO.java

@@ -0,0 +1,53 @@
+package com.gis.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author Xiewj
+ * @date 2024/4/3
+ */
+@Data
+public class RelicsSceneInitQueueDTO {
+
+    private String sceneCode;
+
+    @ApiModelProperty(value = "判断是否为slam场景,深光和深时 以前的场景都是4" +
+            "typedef enum SceneLocation {\n" +
+            "    Scene_Location_Slam  = 0, //slam\n" +
+            "    Scene_Location_SFM 1 ,   //sfm\n" +
+            "    Scene_Location_SFMAI  2,     //SFM + AI\n" +
+            "    Scene_Location_MutiFloor 3 ,    //多楼层\n" +
+            "    Scene_Location_PointCloud 4,    //点云\n" +
+            "    Scene_Location_SLAMPoint 5,    //slam实时拍\n" +
+            "    Scene_Location_SLAMPointAndSFMAI  6   //slam实时拍+站点\n" +
+            "} SceneLocation;")
+    private Integer location;
+
+    @ApiModelProperty(value = "场景来源:相机拍摄10以内表示,1表示八目,2双目,3转台,4 激光 5深光  其他来源10以上,11:一键换装,12:123看房,13文通虚拟场景")
+    private Integer sceneSource;
+
+    @ApiModelProperty(value = "计算完成时间")
+    private Date algorithmTime;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    private String phoneNum;
+
+    private Integer userId;
+
+    private String snCode;
+
+    //0-计算中 1-计算成功  -1-计算失败
+    private int status;
+
+    private String sceneName;
+
+
+    @ApiModelProperty(value = "点位数量")
+    private Integer shootCount;
+
+}

+ 3 - 0
720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/entity/WorkEntity.java

@@ -86,4 +86,7 @@ public class WorkEntity extends BaseStrEntity implements Serializable {
 
     @ApiModelProperty(value = "计算完成时间")
     private Date algorithmTime;
+
+    @ApiModelProperty(value = "0表示未付款,1表示付款了,-1表示欠费(八目场景指锁住),-2表示临时空间(八目场景)", name = "payStatus")
+    private Integer payStatus;
 }

+ 4 - 0
720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/vo/WorkIdVO.java

@@ -19,4 +19,8 @@ public class WorkIdVO {
     //计算状态
     @ApiModelProperty(value = "计算状态:0-计算中 1-计算成功  -1-计算失败")
     private Integer calcStatus;
+
+    @ApiModelProperty(value = "1是正常 -2是封存 ", name = "payStatus")
+    private Integer payStatus;
+
 }

+ 5 - 1
720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/WorkMapper.java

@@ -21,7 +21,7 @@ public interface WorkMapper extends BaseMapper<WorkEntity> {
     Integer getCountStr(String sqlStr);
 
     @SelectProvider(type = WorkProvider.class, method = "search")
-    List<WorkEntity> search(AgePageDto param, String userId);
+    List<WorkEntity> search(AgePageDto param, String userId, boolean isAdmin);
 
     @Update("UPDATE tb_work SET visit= visit + 1 where id = #{id}")
     void addVisit(String id);
@@ -57,4 +57,8 @@ public interface WorkMapper extends BaseMapper<WorkEntity> {
 
     @Select("select * from tb_work where is_delete=0 and (id =#{id} or num =#{id})")
     WorkEntity findByIdOrNum(String id);
+
+
+    @Select("select * from tb_work where is_delete=0 and sn_code = #{snCode} ")
+    List<WorkEntity> getWorkSceneBySn(String snCode);
 }

+ 28 - 6
720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/provider/WorkProvider.java

@@ -17,7 +17,7 @@ import java.util.List;
 @Slf4j
 public class WorkProvider {
 
-    public String search(AgePageDto param, String userId){
+    public String search(AgePageDto param, String userId, boolean isAdmin){
         StringBuffer sql = new StringBuffer("select * from tb_work where is_delete = 0");
         if(StrUtil.isNotBlank(userId)){
             sql.append(" and ( user_id = '").append(RegexUtil.escapeChar(userId)).append("' )");
@@ -39,21 +39,43 @@ public class WorkProvider {
             sql.append(" and (  id like '%").append( RegexUtil.escapeChar(workId)).append("%' )");
         }
 
+        String num = param.getNum();
+        if (StrUtil.isNotBlank(num)){
+            sql.append(" and (  num like '%").append( RegexUtil.escapeChar(num)).append("%' )");
+        }
         String startTime = param.getStartTime();
         String endTime = param.getEndTime();
         if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)){
             sql.append(" and create_time between '").append(startTime).append("' and '").append(endTime).append("'");
         }
+        String snCode = param.getSnCode();
+        if (StrUtil.isNotBlank(snCode)){
+            sql.append(" and ( sn_code = '").append(RegexUtil.escapeChar(snCode)).append("' )");
 
-        List<String> snCodes = param.getSnCodes();
-        if (ArrayUtil.isNotEmpty(snCodes)){
-//            sql.append(" and (  sn_code in (").append(StringUtils.join(snCodes, ",")).append(") )");
-            sql.append(" and (  sn_code in ('").append(StringUtils.join(snCodes, "','")).append("') )");
+        }
+        if(isAdmin){
+            Integer type = param.getType();
+            if (type==1){
+                sql.append(" and status > 0 and location IS NULL");
+            }else if (type==2){
+                sql.append(" and location IS NOT NULL");
+            }
+            List<String> nums = param.getNums();
+            if (ArrayUtil.isNotEmpty(nums)) {
+                sql.append(" and (  num in ('").append(StringUtils.join(nums, "','")).append("') )");
+            }
         }else {
-            sql.append(" and status > 0 and location is null");
+            List<String> snCodes = param.getSnCodes();
+            if (ArrayUtil.isNotEmpty(snCodes)){
+//            sql.append(" and (  sn_code in (").append(StringUtils.join(snCodes, ",")).append(") )");
+                sql.append(" and (  sn_code in ('").append(StringUtils.join(snCodes, "','")).append("') )");
+            }else {
+                sql.append(" and status > 0 and location IS NULL");
+            }
         }
 
 
+
         String orderBy = param.getOrderBy();
         orderBy = "visit".equals(orderBy) ? "visit" : "create_time";
 

+ 2 - 0
720yun_fd_manage/gis_service/src/main/java/com/gis/service/WorkService.java

@@ -66,4 +66,6 @@ public interface WorkService extends IService<WorkEntity> {
     Result<WorkEntity> searchSceneWorkList(AgePageDto param);
 
     WorkEntity findByIdOrNum(String id);
+
+    Result getWorkSceneBySn(String snCode);
 }

+ 43 - 32
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/WorkServiceImpl.java

@@ -1,7 +1,5 @@
 package com.gis.service.impl;
 
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -10,33 +8,21 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.serializer.SerializerFeature;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.gis.common.constant.ConfigConstant;
-import com.gis.common.constant.ErrorEnum;
-import com.gis.common.constant.RedisConstant;
-import com.gis.common.constant.SomeDataConstant;
 import com.gis.common.constant.*;
 import com.gis.common.exception.BaseRuntimeException;
 import com.gis.common.httpclient.FdkkClient;
 import com.gis.common.mq.RabbitMqProducerUtil;
 import com.gis.common.util.*;
 import com.gis.domain.dto.*;
-import com.gis.domain.entity.*;
 import com.gis.domain.entity.FodderEntity;
 import com.gis.domain.entity.ScenePanoEntity;
 import com.gis.domain.entity.WorkEntity;
 import com.gis.domain.entity.WorkHotsFodderEntity;
 import com.gis.domain.vo.ReportWorkVo;
-import com.gis.domain.vo.WorkNavigationVo;
-import com.gis.domain.vo.WorkVo;
 import com.gis.mapper.*;
 import com.gis.oss.util.FileAndOssUtil;
 import com.gis.oss.util.FileUtils;
 import com.gis.oss.util.QrCodeUtils;
-import com.gis.service.*;
-import com.gis.util.UserRequest;
 import com.gis.service.FodderService;
 import com.gis.service.ScenePanoService;
 import com.gis.service.WorkHotsFodderService;
@@ -61,6 +47,7 @@ import java.time.LocalDate;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 
 /**
@@ -136,6 +123,11 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
     @Value("${queue.relics-update-name-queue:#{null}}")
     String relicsUpdateNameQueue;
 
+    @Override
+    public IBaseStrMapper<WorkEntity, String> getBaseMapper() {
+        return this.entityMapper;
+    }
+
 
     @Override
     public Result search(AgePageDto param, boolean isAdmin) {
@@ -144,10 +136,10 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
         if (isAdmin){
             userNameForToken = null;
         }
-        List<WorkEntity> search = entityMapper.search(param, userNameForToken);
+        List<WorkEntity> search = entityMapper.search(param, userNameForToken,isAdmin);
 
-         // 2023-01-30 记录登录用户-数据统计使用
-        if (StrUtil.isNotBlank(userNameForToken)){
+        // 2023-01-30 记录登录用户-数据统计使用
+        if (StrUtil.isNotBlank(userNameForToken)) {
             userRecord(userNameForToken);
         }
 
@@ -157,13 +149,14 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
 
     /**
      * 2022-12-20 记录用户登录-数据统计使用
+     *
      * @param userName
      */
     private void userRecord(String userName) {
         String baseKey = RedisConstant.REPORT_USER + LocalDate.now();
-        String key = baseKey +  "_" + userName;
+        String key = baseKey + "_" + userName;
         log.info("该用户:{} redis key:{}", userName, key);
-        if (redisUtil.hasKey(key)){
+        if (redisUtil.hasKey(key)) {
             log.info("该用户当天已登录,不需要统计");
             return;
         }
@@ -233,8 +226,6 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
         }
 
 
-
-
         JSONObject jsonObject = JSONObject.parseObject(content);
         jsonObject.put("id", id + "");
 
@@ -278,9 +269,8 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
     }
 
 
-
     @Test
-    public void test1(){
+    public void test1() {
         LocalDate now = LocalDate.now();
         log.info("now : {}", now);
         log.info("now-m : {}", now.minusMonths(3));
@@ -347,9 +337,9 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
     public boolean getUserWorkCountBySceneCodes(List<String> sceneCodes) {
         for (String sceneCode : sceneCodes) {
             String format = StrUtil.format("SELECT count(1) FROM tb_work WHERE is_delete=0 and status={} and   user_id = '{}'  and find_in_set('{}' , scene_codes ) ",
-                    1, userRequest.getUserNameForToken(),sceneCode);
+                    1, userRequest.getUserNameForToken(), sceneCode);
             Integer count = entityMapper.getCountStr(format);
-            if (count > 0){
+            if (count > 0) {
                 return true;
             }
         }
@@ -470,11 +460,11 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
-        String userNameForToken = null;//getUserNameForToken();
-        if (!userNameForToken.equals(entity.getUserId())&&ObjectUtil.isEmpty(entity.getNum())) {
+        String userNameForToken = getUserNameForToken();
+        if (!userNameForToken.equals(entity.getUserId()) && ObjectUtil.isEmpty(entity.getNum())) {
             return Result.failure(ErrorEnum.FAILURE_SYS_3011.code(), "当前无操作权限");
-        } else if (ObjectUtil.isNotEmpty(entity.getType())&&entity.getType().equalsIgnoreCase("pro")){
-            JSONObject cameraList =fdkkClient.getCameraListByToken(null,"3,4,5");
+        } else if (ObjectUtil.isNotEmpty(entity.getType()) && entity.getType().equalsIgnoreCase("pro")) {
+            JSONObject cameraList = fdkkClient.getCameraListByToken(getToken(), "3,4,5");
             List<String> snCodes = new ArrayList<>();
             if (cameraList.getInteger("code") == 0) {
                 JSONArray data = cameraList.getJSONObject("data").getJSONArray("snCodes");
@@ -556,6 +546,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
 
     /**
      * 更新 tour.xml
+     *
      * @param someDataToJson
      * @param id
      */
@@ -872,6 +863,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
         }
         return list;
     }
+
     /**
      * 场景码字符串转list
      * @param param
@@ -1365,8 +1357,8 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
 
     @Override
     public Result<WorkEntity> searchSceneWorkList(AgePageDto param) {
-        String token = null;//getToken();
-        JSONObject cameraList =fdkkClient.getCameraListByToken(token,"3,4,5");
+        String token = getToken();
+        JSONObject cameraList = fdkkClient.getCameraListByToken(token, "3,4,5");
         List<String> snCodes = new ArrayList<>();
         if (cameraList.getInteger("code") == 0) {
             JSONArray data = cameraList.getJSONObject("data").getJSONArray("snCodes");
@@ -1378,7 +1370,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
         }
         //startPage(param);
         param.setSnCodes(snCodes);
-        List<WorkEntity> search = entityMapper.search(param, "");
+        List<WorkEntity> search = entityMapper.search(param, "", false);
 
         return Result.success(new PageInfo<>(search));
     }
@@ -1387,4 +1379,23 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
     public WorkEntity findByIdOrNum(String id) {
         return entityMapper.findByIdOrNum(id);
     }
+
+    @Override
+    public Result getWorkSceneBySn(String snCode) {
+        List<WorkEntity> list = entityMapper.getWorkSceneBySn(snCode);
+        List<RelicsSceneInitQueueDTO> res = list.stream().map(workEntity -> {
+            RelicsSceneInitQueueDTO sceneInitQueueDTO = new RelicsSceneInitQueueDTO();
+            sceneInitQueueDTO.setSceneCode(workEntity.getNum());
+            sceneInitQueueDTO.setLocation(workEntity.getLocation());
+            sceneInitQueueDTO.setSceneSource(workEntity.getSceneSource());
+            sceneInitQueueDTO.setAlgorithmTime(workEntity.getAlgorithmTime());
+            sceneInitQueueDTO.setCreateTime(workEntity.getCreateTime());
+            sceneInitQueueDTO.setPhoneNum(workEntity.getUserId());
+            sceneInitQueueDTO.setStatus(workEntity.getCalcStatus());
+            sceneInitQueueDTO.setSceneName(workEntity.getName());
+            sceneInitQueueDTO.setSnCode(workEntity.getSnCode());
+            return sceneInitQueueDTO;
+        }).collect(Collectors.toList());
+        return Result.success(res);
+    }
 }

+ 1 - 0
720yun_fd_manage/gis_web/src/main/java/com/gis/web/aop/WebLogAspect.java

@@ -42,6 +42,7 @@ public class WebLogAspect {
         filterUrl = new ArrayList<>();
         filterUrl.add("/manage/work/edit");
         filterUrl.add("/web/common/checkWork");
+        filterUrl.add("/inner/getWorkSceneBySn");
     }
 
 

+ 36 - 0
720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/InnerController.java

@@ -0,0 +1,36 @@
+package com.gis.web.controller;
+
+import com.gis.common.util.Result;
+import com.gis.service.WorkService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author Xiewj
+ * @date 2024/4/23
+ */
+@Log4j2
+@Api(tags = "展示页")
+@RestController
+@RequestMapping("/inner")
+public class InnerController {
+
+    @Autowired
+    WorkService workService;
+    /**
+     * 根据相机码获取场景数据
+     * @param snCode 相机码
+     * @return
+     */
+    @ApiOperation(value = "v1.7.0", notes = "根据相机码获取场景数据")
+    @GetMapping("/getWorkSceneBySn")
+    public Result getWorkSceneBySn(String snCode) {
+        return workService.getWorkSceneBySn(snCode);
+    }
+
+}