xiewj 1 vuosi sitten
vanhempi
commit
8deb4dc9c8

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

@@ -0,0 +1,54 @@
+package com.gis.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+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;
+
+}

+ 26 - 5
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/SceneListener.java

@@ -10,10 +10,12 @@ 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;
@@ -29,6 +31,7 @@ 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;
 
@@ -65,8 +68,10 @@ public class SceneListener {
     QrCodeUtils qrCodeUtils;
     @Autowired
     ScenePanoService scenePanoService;
-
-
+    @Autowired
+    RabbitMqProducerUtil rabbitMqProducerUtil;
+    @Value("${queue.relics-init-queue}")
+    String relicsInitQueue;
     /**
      * 全景场景初始化方法
      *
@@ -100,9 +105,9 @@ public class SceneListener {
                 //初始化创建work表数据
                 workService.entityAdd(param);
                 channel.basicAck(deliveryTag, false);
-            }if (ObjectUtil.isNotEmpty(workEntity)&&param.getStatus()==0){
+            }if (ObjectUtil.isNotEmpty(workEntity)&&param.getStatus()!=1){
                 //修改状态
-                workEntity.setCalcStatus(0);
+                workEntity.setCalcStatus(param.getStatus());
                 if (ObjectUtil.isNotEmpty(param.getPwd())&&ObjectUtil.isEmpty(workEntity.getPassword())){
                     workEntity.setPassword(param.getPwd());
                     workEntity.setIsPassword(1);
@@ -182,7 +187,7 @@ public class SceneListener {
 
                 workEntity.setCalcStatus(1);
                 workService.update(workEntity);
-
+                sendMq(param);
                 channel.basicAck(deliveryTag, false);
             }
 
@@ -193,6 +198,22 @@ public class SceneListener {
             log.error("场景sceneQueue报错{}",e.getMessage());
         }
     }
+
+    private void sendMq(SceneQueueDTO param) {
+        RelicsSceneInitQueueDTO relicsSceneInitQueueDTO=new RelicsSceneInitQueueDTO();
+        relicsSceneInitQueueDTO.setSceneCode(param.getSceneCode());
+        relicsSceneInitQueueDTO.setLocation(param.getLocation());
+        relicsSceneInitQueueDTO.setAlgorithmTime(param.getAlgorithmTime());
+        relicsSceneInitQueueDTO.setCreateTime(param.getCreateTime());
+        relicsSceneInitQueueDTO.setPhoneNum(param.getPhoneNum());
+        relicsSceneInitQueueDTO.setUserId(param.getUserId());
+        relicsSceneInitQueueDTO.setSnCode(param.getSnCode());
+        relicsSceneInitQueueDTO.setStatus(param.getStatus());
+        relicsSceneInitQueueDTO.setSceneName(param.getSceneName());
+        relicsSceneInitQueueDTO.setShootCount(param.getShootCount());
+        rabbitMqProducerUtil.sendByWorkQueue(relicsInitQueue,relicsSceneInitQueueDTO);
+    }
+
     private static final String CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
 
     public static String generateRandomId() {

+ 81 - 0
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/mq/RabbitMqProducerUtil.java

@@ -0,0 +1,81 @@
+package com.gis.mq;
+
+import com.alibaba.fastjson.JSONObject;
+import com.rabbitmq.client.AMQP.Queue.DeclareOk;
+import com.rabbitmq.client.Channel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.amqp.rabbit.connection.CorrelationData;
+import org.springframework.amqp.rabbit.core.ChannelCallback;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.UUID;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/4/19
+ **/
+@Component
+public class RabbitMqProducerUtil {
+
+    private Logger log = LoggerFactory.getLogger(this.getClass().getName());
+
+
+    @Autowired
+    private RabbitTemplate rabbitTemplate;
+
+    /**
+     * 工作队列模式发送消息
+     * @param queue 队列名
+     * @param content 载荷
+     */
+    public void sendByWorkQueue(String queue, Object content){
+        String messageId = UUID.randomUUID().toString();
+        String jsonObject = JSONObject.toJSONString(content);
+        log.info("开始发送Mq消息,messageId:{},消息队列:{},消息内容:{}",messageId, queue,jsonObject);
+        rabbitTemplate.convertAndSend(queue, jsonObject, message -> {
+            message.getMessageProperties().setMessageId(messageId);
+            return message;
+        }, new CorrelationData(messageId));
+    }
+
+    /**
+     * 工作队列模式发送带优先级消息
+     * @param queue 队列名
+     * @param content 载荷
+     * @param priority 优先级,正整数,值越大优先级越高,当值大于队列设置的最大优先级时,效果等同于最大优先级
+     */
+    public void sendByWorkQueue(String queue, Object content, Integer priority){
+        String messageId = UUID.randomUUID().toString();
+        String jsonObject = JSONObject.toJSONString(content);
+        log.info("开始发送Mq消息,messageId:{},消息队列:{},消息内容:{}",messageId, queue, jsonObject);
+        rabbitTemplate.convertAndSend(queue, content, message -> {
+            message.getMessageProperties().setMessageId(messageId);
+            message.getMessageProperties().setPriority(priority);
+            return message;
+        }, new CorrelationData(messageId));
+    }
+
+    /**
+     * 获取队列未被消费的消息数量
+     * @return
+     */
+    public int getMessageCount(String queueName) {
+        DeclareOk declareOk = rabbitTemplate.execute(new ChannelCallback<DeclareOk>() {
+            public DeclareOk doInRabbit(Channel channel) throws Exception {
+                return channel.queueDeclarePassive(queueName);
+            }
+        });
+
+        return declareOk.getMessageCount();
+    }
+
+
+
+}

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

@@ -66,3 +66,7 @@ spring:
         timeout: 3000ms
 tlog:
     enable-invoke-time-print: true
+queue:
+    scene-queue: queue-pano-scene
+    do-slice-queue: queue-do-slice
+    relics-init-queue: relics-init-queue

+ 2 - 1
720yun_fd_consumer/gis_consumer/src/main/resources/application-sit.yml

@@ -62,4 +62,5 @@ 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

+ 1 - 1
720yun_fd_consumer/gis_consumer/src/main/resources/data/someDataSceneData.json

@@ -5,7 +5,7 @@
                                 "icon": "",
                                 "scale": 1,
                                 "antidistorted": true,
-                                "isShow": false
+                                "isShow": true
                             },
                             "earth": {
                                 "fodderId": "",