فهرست منبع

增加场景状态变更通知多系统mq推送

dengsixing 1 سال پیش
والد
کامیت
5c544990e9

+ 60 - 0
src/main/java/com/fdkankan/contro/entity/SceneInfoSyncMqConfig.java

@@ -0,0 +1,60 @@
+package com.fdkankan.contro.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 场景信息变更需要发送mq信息队列配置表
+ * </p>
+ *
+ * @author
+ * @since 2024-04-16
+ */
+@Getter
+@Setter
+@TableName("t_scene_info_sync_mq_config")
+public class SceneInfoSyncMqConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 需要同步的消息类型
+     */
+    @TableField("info_type")
+    private String infoType;
+
+    /**
+     * 队列名
+     */
+    @TableField("queue_name")
+    private String queueName;
+
+    /**
+     * 需要同步信息的应用名
+     */
+    @TableField("app_name")
+    private String appName;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * A正常,I删除
+     */
+    @TableField("rec_status")
+    @TableLogic("A")
+    private String recStatus;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/contro/generate/AutoGenerate.java

@@ -17,7 +17,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"contro", getTables(new String[]{
-                "mq_send_log"
+                "t_scene_info_sync_mq_config"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 18 - 0
src/main/java/com/fdkankan/contro/mapper/ISceneInfoSyncMqConfigMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.contro.mapper;
+
+import com.fdkankan.contro.entity.SceneInfoSyncMqConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 场景信息变更需要发送mq信息队列配置表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2024-04-16
+ */
+@Mapper
+public interface ISceneInfoSyncMqConfigMapper extends BaseMapper<SceneInfoSyncMqConfig> {
+
+}

+ 9 - 0
src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java

@@ -146,6 +146,10 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
     public void buildScenePre(BuildSceneCallMessage message) throws Exception{
         String num = message.getSceneNum();
         try {
+            Map<String, Object> sceneStatusParam = new HashMap<>();
+            sceneStatusParam.put("num", num);
+            sceneStatusParam.put("status", 0);
+            commonService.sendUpdateSceneStatusMqToQueues(sceneStatusParam);
             //重新计算时需要删除文件夹,否知使用缓存
             if(new File(message.getPath() + File.separator + "results").exists()){
                 FileUtils.deleteDirectory(message.getPath() + File.separator + "results");
@@ -381,6 +385,11 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
             log.error("场景计算结果处理出错,num"+sceneCode, e);
             buildSceneDTService.handBaseFail("场景计算结果处理出错!", message.getPath(), sceneCode, "计算控制服务器");
             throw e;
+        } finally {
+            Map<String, Object> sceneStatusParam = new HashMap<>();
+            sceneStatusParam.put("num", sceneCode);
+            sceneStatusParam.put("status", message.getBuildSuccess() ? 1 : -1);
+            commonService.sendUpdateSceneStatusMqToQueues(sceneStatusParam);
         }
     }
 

+ 2 - 0
src/main/java/com/fdkankan/contro/service/ICommonService.java

@@ -48,4 +48,6 @@ public interface ICommonService {
                         SceneEditControls sceneEditControls, ScenePlus scenePlus, ScenePlusExt scenePlusExt, Company company);
 
     void saveMqSendLog(String num, BuildSceneCallMessage message);
+
+    void sendUpdateSceneStatusMqToQueues(Map<String, Object> content);
 }

+ 21 - 0
src/main/java/com/fdkankan/contro/service/ISceneInfoSyncMqConfigService.java

@@ -0,0 +1,21 @@
+package com.fdkankan.contro.service;
+
+import com.fdkankan.contro.entity.SceneInfoSyncMqConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 场景信息变更需要发送mq信息队列配置表 服务类
+ * </p>
+ *
+ * @author
+ * @since 2024-04-16
+ */
+public interface ISceneInfoSyncMqConfigService extends IService<SceneInfoSyncMqConfig> {
+
+    List<SceneInfoSyncMqConfig> listByInfoType(String infoType);
+
+
+}

+ 16 - 0
src/main/java/com/fdkankan/contro/service/impl/CommonServiceImpl.java

@@ -29,6 +29,7 @@ import com.fdkankan.model.constants.ConstantFilePath;
 import com.fdkankan.model.constants.UploadFilePath;
 import com.fdkankan.model.utils.FloorPlanUserUtil;
 import com.fdkankan.rabbitmq.bean.BuildSceneCallMessage;
+import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.sms.SendMailAcceUtils;
@@ -102,6 +103,10 @@ public class CommonServiceImpl implements ICommonService {
     private RedisUtil redisUtil;
     @Autowired
     private IMqSendLogService mqSendLogService;
+    @Autowired
+    private RabbitMqProducer rabbitMqProducer;
+    @Autowired
+    private ISceneInfoSyncMqConfigService sceneInfoSyncMqConfigService;
 
     @Override
     public void uploadBuildResultData(String num, String dataSource, String version) {
@@ -502,4 +507,15 @@ public class CommonServiceImpl implements ICommonService {
         mqSendLog.setContent(JSON.toJSONString(message));
         mqSendLogService.save(mqSendLog);
     }
+
+    @Override
+    public void sendUpdateSceneStatusMqToQueues(Map<String, Object> content) {
+        List<SceneInfoSyncMqConfig> configs = sceneInfoSyncMqConfigService.listByInfoType("update_scene_status");
+        if(CollUtil.isEmpty(configs)){
+            return;
+        }
+        for (SceneInfoSyncMqConfig config : configs) {
+            rabbitMqProducer.sendByWorkQueue(config.getQueueName(), content);
+        }
+    }
 }

+ 27 - 0
src/main/java/com/fdkankan/contro/service/impl/SceneInfoSyncMqConfigServiceImpl.java

@@ -0,0 +1,27 @@
+package com.fdkankan.contro.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.contro.entity.SceneInfoSyncMqConfig;
+import com.fdkankan.contro.mapper.ISceneInfoSyncMqConfigMapper;
+import com.fdkankan.contro.service.ISceneInfoSyncMqConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 场景信息变更需要发送mq信息队列配置表 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2024-04-16
+ */
+@Service
+public class SceneInfoSyncMqConfigServiceImpl extends ServiceImpl<ISceneInfoSyncMqConfigMapper, SceneInfoSyncMqConfig> implements ISceneInfoSyncMqConfigService {
+
+    @Override
+    public List<SceneInfoSyncMqConfig> listByInfoType(String infoType) {
+        return this.list(new LambdaQueryWrapper<SceneInfoSyncMqConfig>().eq(SceneInfoSyncMqConfig::getInfoType, infoType));
+    }
+}

+ 5 - 0
src/main/resources/mapper/contro/SceneInfoSyncMqConfigMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.contro.mapper.ISceneInfoSyncMqConfigMapper">
+
+</mapper>