From fc066dd816c1badcb9bd08b526770993df36ac3c Mon Sep 17 00:00:00 2001 From: dengzedong <dengzedong@email> Date: 星期六, 18 一月 2025 11:51:06 +0800 Subject: [PATCH] 电力预测完成执行电力调度 --- shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinish2Consumer.java | 23 +------ shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunPredictModuleTask.java | 5 + shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/common/constant/RoutingConstant.java | 2 shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/config/QueueElecPredictFinishConfig.java | 36 ++++++++++++ shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelElecPredictFinishConsumer.java | 62 ++++++++++++++++++++ 5 files changed, 108 insertions(+), 20 deletions(-) diff --git a/shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunPredictModuleTask.java b/shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunPredictModuleTask.java index 9365cfc..a99a554 100644 --- a/shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunPredictModuleTask.java +++ b/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运行异常"); diff --git a/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/common/constant/RoutingConstant.java b/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/common/constant/RoutingConstant.java index fa56dfe..c639c4b 100644 --- a/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/common/constant/RoutingConstant.java +++ b/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"; diff --git a/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/config/QueueElecPredictFinishConfig.java b/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/config/QueueElecPredictFinishConfig.java new file mode 100644 index 0000000..693ca8d --- /dev/null +++ b/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); + } +} diff --git a/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelElecPredictFinishConsumer.java b/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelElecPredictFinishConsumer.java new file mode 100644 index 0000000..c7da9d2 --- /dev/null +++ b/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); + } + + + } +} \ No newline at end of file diff --git a/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinish2Consumer.java b/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinish2Consumer.java index 40a9537..10aa293 100644 --- a/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinish2Consumer.java +++ b/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); } } } -- Gitblit v1.9.3