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,24 +21,24 @@ @Autowired private MdkApi mdkApi; @Autowired private RabbitTemplate rabbitTemplate; @Override public void run(String params) { logger.info("runPredictModuleTask定时任务正在执行,参数为:{}",params ); logger.info("runPredictModuleTask定时任务正在执行,参数为:{}", params); try { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); MdkPredictReqDTO dto = new MdkPredictReqDTO(); dto.setPredictTime(calendar.getTime()); 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
文件已删除