shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunPredictModuleTask.java
@@ -3,6 +3,7 @@ import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.model.api.mdk.MdkApi; import com.iailab.module.model.api.mdk.dto.MdkPredictReqDTO; import com.iailab.module.shasteel.mq.common.constant.CommonConstant; import com.iailab.module.shasteel.mq.common.constant.RoutingConstant; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -55,6 +56,10 @@ msg.put("moduleType", type); msg.put("predictTime", DateUtils.format(predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); rabbitTemplate.convertAndSend(RoutingConstant.EXCHANGE, RoutingConstant.Iailab_Model_PredictFinish, msg); if (type.equals(CommonConstant.TRIGGER_CONDITION_ELEC)) { //电力管网预测完成发送单独消息,执行电力调度 rabbitTemplate.convertAndSend(RoutingConstant.EXCHANGE, RoutingConstant.Iailab_Model_PredictFinish_Elec, msg); } }); } catch (Exception ex) { logger.error("runPredictModuleTask运行异常"); shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/common/constant/RoutingConstant.java
@@ -6,6 +6,8 @@ // 预测模型完成路由 String Iailab_Model_PredictFinish = "Iailab.Model.PredictFinish"; // 电力预测模型完成路由 String Iailab_Model_PredictFinish_Elec = "Iailab.Model.PredictFinish.Elec"; //预警消息路由 String Iailab_Model_Alarm = "Iailab.Model.Alarm"; shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/config/QueueElecPredictFinishConfig.java
对比新文件 @@ -0,0 +1,36 @@ package com.iailab.module.shasteel.mq.config; import com.iailab.module.shasteel.mq.common.constant.RoutingConstant; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.TopicExchange; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @description: 电力预测完成消息队列 * @author: dzd * @date: 2025/1/17 17:38 **/ @Configuration public class QueueElecPredictFinishConfig { // 队列名称 public final static String QUEUE_NAME = "IaiabFastShateel.Model.PredictFinish.Elec"; @Bean public Queue predictFinishQueue() { return new Queue(QueueElecPredictFinishConfig.QUEUE_NAME); } @Bean TopicExchange predictFinishExchange() { return new TopicExchange(RoutingConstant.EXCHANGE); } // 注意通配符*和#的用法 @Bean Binding bindingExchangeMessagePF() { return BindingBuilder.bind(predictFinishQueue()).to(predictFinishExchange()).with(RoutingConstant.Iailab_Model_PredictFinish_Elec); } } shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelElecPredictFinishConsumer.java
对比新文件 @@ -0,0 +1,62 @@ package com.iailab.module.shasteel.mq.consumer; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.StScheduleSchemeDTO; import com.iailab.module.model.api.mdk.MdkApi; import com.iailab.module.model.api.mdk.dto.MdkScheduleReqDTO; import com.iailab.module.model.enums.ScheduleTriggerMethodEnum; import com.iailab.module.shasteel.mq.common.constant.CommonConstant; import com.iailab.module.shasteel.mq.config.QueueElecPredictFinishConfig; 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; import java.util.Calendar; import java.util.Date; import java.util.List; /** * @description: * @author: dzd * @date: 2025/1/17 17:41 **/ @Slf4j @Component public class ModelElecPredictFinishConsumer { @Resource private McsApi mcsApi; @Resource private MdkApi mdkApi; /** * 监听电力预测完成,执行电力调度 * * @param message */ @RabbitListener(queues = QueueElecPredictFinishConfig.QUEUE_NAME) public void listen(Message message) { String messageBody = new String(message.getBody()); log.info("开始执行电力调度,messageBody:" + messageBody); // 查找需要执行的电力调度方案 List<StScheduleSchemeDTO> scheduleSchemeList = mcsApi.listScheduleScheme(ScheduleTriggerMethodEnum.EVENT.getCode(), CommonConstant.TRIGGER_CONDITION_ELEC); // 电力预测完成,执行电力调度模型 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.HOUR_OF_DAY, 0); Date scheduleTime = calendar.getTime(); for (StScheduleSchemeDTO stScheduleSchemeDTO : scheduleSchemeList) { MdkScheduleReqDTO mdkScheduleReqDTO = new MdkScheduleReqDTO(); mdkScheduleReqDTO.setScheduleCode(stScheduleSchemeDTO.getCode()); mdkScheduleReqDTO.setScheduleTime(scheduleTime); mdkApi.doSchedule(mdkScheduleReqDTO); } } } shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinish2Consumer.java
@@ -1,6 +1,5 @@ package com.iailab.module.shasteel.mq.consumer; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.model.api.mcs.McsApi; @@ -20,8 +19,9 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; import java.util.List; import java.util.Map; import java.util.UUID; /** * 监听报警信息 @@ -144,23 +144,6 @@ break; default: break; } } // 电力预测完成,执行电力调度模型 String moduleType = messageJson.get("moduleType").toString(); if (null != moduleType && moduleType.equals(CommonConstant.TRIGGER_CONDITION_ELEC)) { List<StScheduleSchemeDTO> elecSche = scheduleSchemeList.stream().filter(e -> e.getTriggerCondition().equals(CommonConstant.TRIGGER_CONDITION_ELEC)).collect(Collectors.toList()); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.HOUR_OF_DAY, 0); Date scheduleTime = calendar.getTime(); for (StScheduleSchemeDTO stScheduleSchemeDTO : elecSche) { MdkScheduleReqDTO mdkScheduleReqDTO = new MdkScheduleReqDTO(); mdkScheduleReqDTO.setScheduleCode(stScheduleSchemeDTO.getCode()); mdkScheduleReqDTO.setScheduleTime(scheduleTime); mdkApi.doSchedule(mdkScheduleReqDTO); } } }