沙钢智慧能源系统后端代码
潘志宝
2024-12-11 c9ff6a7f2e89f751e2eec68ec02fa93919d05296
监听报警信息
已修改6个文件
已删除7个文件
已添加1个文件
371 ■■■■ 文件已修改
shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunPredictModuleTask.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/common/RoutingConstant.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/config/QueueModelAlarmConfig.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/config/QueuePredictFinishConfig.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/AlarmConsumer.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/AlarmMessage.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelAlarmConsumer.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinishConsumer.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/PredictFinishConsumer.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/PredictFinishMessage.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ScheduleConsumer.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ScheduleMessage.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/resources/application.yaml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/test/java/com/iailab/module/data/controller/RabbitMQTest.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunPredictModuleTask.java
@@ -3,7 +3,7 @@
import com.iailab.module.model.api.mdk.MdkApi;
import com.iailab.module.model.api.mdk.dto.MdkPredictModuleRespDTO;
import com.iailab.module.model.api.mdk.dto.MdkPredictReqDTO;
import com.iailab.module.shasteel.mq.consumer.PredictFinishMessage;
import com.iailab.module.shasteel.mq.common.RoutingConstant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
@@ -14,7 +14,6 @@
/**
 * 执行模块预测定时任务
 *
 */
@Component("runPredictModuleTask")
public class RunPredictModuleTask implements ITask {
@@ -22,9 +21,9 @@
    @Autowired
    private MdkApi mdkApi;
    @Autowired
    private RabbitTemplate rabbitTemplate;
    @Override
    public void run(String params) {
@@ -39,7 +38,7 @@
            dto.setModuleType(params);
            MdkPredictModuleRespDTO mdkPredictModuleRespDTO = mdkApi.predictModule(dto);
            logger.info(params + "模块预测完成," + mdkPredictModuleRespDTO);
            rabbitTemplate.convertAndSend(PredictFinishMessage.EXCHANGE, PredictFinishMessage.PREDICTFINISH_ROUTING_KEY, mdkPredictModuleRespDTO);
            rabbitTemplate.convertAndSend(RoutingConstant.EXCHANGE, RoutingConstant.Iailab_Model_PredictFinish, mdkPredictModuleRespDTO);
        } catch (Exception ex) {
            logger.error("runPredictModuleTask运行异常");
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/common/RoutingConstant.java
@@ -2,10 +2,11 @@
public interface RoutingConstant {
    String EXCHANGE = "FastShasteel";
    // 预测模型完成路由
    String Iailab_Model_PredictFinish = "Iailab.Model.PredictFinish";
    //预警消息路由
    String Iailab_Model_Alarm = "Iailab.Model.Alarm";
}
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/config/QueueModelAlarmConfig.java
@@ -1,7 +1,6 @@
package com.iailab.module.shasteel.mq.config;
import com.iailab.module.shasteel.mq.common.RoutingConstant;
import com.iailab.module.shasteel.mq.consumer.AlarmMessage;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
@@ -28,7 +27,7 @@
    @Bean
    TopicExchange alarmExchange() {
        return new TopicExchange(AlarmMessage.EXCHANGE);
        return new TopicExchange(RoutingConstant.EXCHANGE);
    }
    // 注意通配符*和#的用法
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/config/QueuePredictFinishConfig.java
@@ -1,7 +1,6 @@
package com.iailab.module.shasteel.mq.config;
import com.iailab.module.shasteel.mq.common.RoutingConstant;
import com.iailab.module.shasteel.mq.consumer.PredictFinishMessage;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
@@ -26,7 +25,7 @@
    @Bean
    TopicExchange predictFinishExchange() {
        return new TopicExchange(PredictFinishMessage.EXCHANGE);
        return new TopicExchange(RoutingConstant.EXCHANGE);
    }
    // 注意通配符*和#的用法
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/AlarmConsumer.java
文件已删除
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/AlarmMessage.java
文件已删除
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelAlarmConsumer.java
对比新文件
@@ -0,0 +1,46 @@
package com.iailab.module.shasteel.mq.consumer;
import com.iailab.module.model.api.mcs.McsApi;
import com.iailab.module.shasteel.mq.config.QueueModelAlarmConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
 * 监听报警信息
 *
 * @author PanZhibao
 * @Description
 * @createTime 2024年12月11日
 */
@Slf4j
@Component
public class ModelAlarmConsumer {
    @Resource
    private McsApi mcsApi;
    /**
     * 事件标识
     */
    private final String EVENT_FLAG = "GasAlarm";
    /**
     * 监听报警信息,执行调度
     *
     * @param message
     */
    @RabbitListener(queues = QueueModelAlarmConfig.QUEUE_NAME)
    public void listen(Message message) {
        // 查找需要执行的调度方案
        // 开始执行调度方案
        // 根据模型返回结果,保存调度建议
    }
}
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinishConsumer.java
@@ -6,10 +6,12 @@
import com.iailab.module.model.api.mcs.dto.AlarmConfigRespDTO;
import com.iailab.module.model.api.mcs.dto.AlarmMessageRespDTO;
import com.iailab.module.model.api.mcs.dto.PreDataJsonReqVO;
import com.iailab.module.shasteel.mq.common.RoutingConstant;
import com.iailab.module.shasteel.mq.config.QueuePredictFinishConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
@@ -21,6 +23,8 @@
import java.util.Map;
/**
 * 监听预测完成
 *
 * @author PanZhibao
 * @Description
 * @createTime 2024年12月11日
@@ -33,8 +37,13 @@
    private McsApi mcsApi;
    @Resource
    private AlarmConsumer alarmConsumer;
    private RabbitTemplate rabbitTemplate;
    /**
     * 监听预测完成,产生预警消息
     *
     * @param message
     */
    @RabbitListener(queues = QueuePredictFinishConfig.QUEUE_NAME)
    public void listen(Message message) {
        String routingKey = message.getMessageProperties().getReceivedRoutingKey();
@@ -68,29 +77,23 @@
            for (Object[] data : predictList) {
                BigDecimal dataValue = new BigDecimal(Double.parseDouble(data[1].toString())).setScale(2, BigDecimal.ROUND_HALF_UP);
                if (!(dataValue.compareTo(item.getLowerLimit()) >= 0 && dataValue.compareTo(item.getUpperLimit()) <= 0)) {
                    AlarmMessage alarmMessage = new AlarmMessage();
                    AlarmMessageRespDTO alarmMessageRespDTO = new AlarmMessageRespDTO();
                    alarmMessageRespDTO.setConfigId(item.getId());
                    AlarmMessageRespDTO alarmMessage = new AlarmMessageRespDTO();
                    alarmMessage.setConfigId(item.getId());
                    if (dataValue.compareTo(item.getLowerLimit()) < 0) {
                        alarmMessageRespDTO.setAlarmType("1");//超下限
                        alarmMessage.setAlarmType("1");//超下限
                    } else if (dataValue.compareTo(item.getUpperLimit()) > 0) {
                        alarmMessageRespDTO.setAlarmType("2");//超上限
                        alarmMessage.setAlarmType("2");//超上限
                    }
                    alarmMessageRespDTO.setAlarmTime(DateUtils.parse(data[0].toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
                    alarmMessage.setAlarmTime(DateUtils.parse(data[0].toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
                    JSONObject content = new JSONObject();
                    content.put("alarmObj", item.getAlarmObj());
                    content.put("alarmType", alarmMessageRespDTO.getAlarmType());
                    content.put("alarmType", alarmMessage.getAlarmType());
                    content.put("unit", item.getUnit());
                    content.put("overLimitTime", data[0]);
                    content.put("overLimitValue", dataValue);
                    alarmMessageRespDTO.setContent(JSONObject.toJSONString(content));
                    System.out.println("预警消息=" + alarmMessageRespDTO);
                    alarmMessage.setAlarmMessageRespDTO(alarmMessageRespDTO);
                    try {
                        alarmConsumer.process(alarmMessage);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                    alarmMessage.setContent(JSONObject.toJSONString(content));
                    System.out.println("预警消息=" + alarmMessage);
                    rabbitTemplate.convertAndSend(RoutingConstant.EXCHANGE, RoutingConstant.Iailab_Model_Alarm, alarmMessage);
                    break;
                }
            }
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/PredictFinishConsumer.java
文件已删除
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/PredictFinishMessage.java
文件已删除
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ScheduleConsumer.java
文件已删除
shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ScheduleMessage.java
文件已删除
shasteel-biz/src/main/resources/application.yaml
@@ -4,7 +4,7 @@
    name: shasteel-server
  profiles:
    active: dev
    active: prod
  cloud:
    nacos:
shasteel-biz/src/test/java/com/iailab/module/data/controller/RabbitMQTest.java
文件已删除