From a3f58be5714b0c5c24e998ed4f322db427f45629 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 28 Jun 2025 19:39:29 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90IoT=20=E7=89=A9=E8=81=94?= =?UTF-8?q?=E7=BD=91=E3=80=91=E6=96=B0=E5=A2=9E=E5=91=8A=E8=AD=A6=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E5=9C=BA=E6=99=AF=E8=A7=84=E5=88=99=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=B1=BB=20IotAlertRecoverSceneRuleAction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IotAlertRecoverSceneRuleAction.java | 52 ++++++------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/action/IotAlertRecoverSceneRuleAction.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/action/IotAlertRecoverSceneRuleAction.java index f4bb853244..6cc9fa5786 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/action/IotAlertRecoverSceneRuleAction.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/action/IotAlertRecoverSceneRuleAction.java @@ -1,69 +1,49 @@ package cn.iocoder.yudao.module.iot.service.rule.scene.action; import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; -import cn.iocoder.yudao.module.iot.dal.dataobject.alert.IotAlertConfigDO; +import cn.iocoder.yudao.module.iot.dal.dataobject.alert.IotAlertRecordDO; import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotRuleSceneDO; import cn.iocoder.yudao.module.iot.enums.rule.IotRuleSceneActionTypeEnum; -import cn.iocoder.yudao.module.iot.service.alert.IotAlertConfigService; import cn.iocoder.yudao.module.iot.service.alert.IotAlertRecordService; -import cn.iocoder.yudao.module.system.api.mail.MailSendApi; -import cn.iocoder.yudao.module.system.api.notify.NotifyMessageSendApi; -import cn.iocoder.yudao.module.system.api.sms.SmsSendApi; import jakarta.annotation.Resource; import org.springframework.stereotype.Component; -import javax.annotation.Nullable; import java.util.List; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; + // TODO @puhui999、@芋艿:未测试;需要场景联动开发完 /** - * IoT 告警触发的 {@link IotSceneRuleAction} 实现类 + * IoT 告警恢复的 {@link IotSceneRuleAction} 实现类 * * @author 芋道源码 */ @Component -public class IotAlertTriggerSceneRuleAction implements IotSceneRuleAction { +public class IotAlertRecoverSceneRuleAction implements IotSceneRuleAction { + + private static final String PROCESS_REMARK = "告警自动回复,基于【{}】场景联动规则"; - @Resource - private IotAlertConfigService alertConfigService; @Resource private IotAlertRecordService alertRecordService; - @Resource - private SmsSendApi smsSendApi; - @Resource - private MailSendApi mailSendApi; - @Resource - private NotifyMessageSendApi notifyMessageSendApi; - @Override - public void execute(@Nullable IotDeviceMessage message, + public void execute(IotDeviceMessage message, IotRuleSceneDO rule, IotRuleSceneDO.ActionConfig actionConfig) throws Exception { - List alertConfigs = alertConfigService.getAlertConfigListBySceneRuleIdAndStatus( - rule.getId(), CommonStatusEnum.ENABLE.getStatus()); - if (CollUtil.isEmpty(alertConfigs)) { + Long deviceId = message != null ? message.getDeviceId() : null; + List alertRecords = alertRecordService.getAlertRecordListBySceneRuleId( + rule.getId(), deviceId, false); + if (CollUtil.isEmpty(alertRecords)) { return; } - alertConfigs.forEach(alertConfig -> { - // 记录告警记录 - alertRecordService.createAlertRecord(alertConfig, message); - // 发送告警消息 - sendAlertMessage(alertConfig, message); - }); - } - - private void sendAlertMessage(IotAlertConfigDO config, IotDeviceMessage deviceMessage) { - // TODO @芋艿:等场景联动开发完,再实现 - // TODO @芋艿:短信 - // TODO @芋艿:邮箱 - // TODO @芋艿:站内信 + alertRecordService.processAlertRecordList(convertList(alertRecords, IotAlertRecordDO::getId), + StrUtil.format(PROCESS_REMARK, rule.getName())); } @Override public IotRuleSceneActionTypeEnum getType() { - return IotRuleSceneActionTypeEnum.ALERT_TRIGGER; + return IotRuleSceneActionTypeEnum.ALERT_RECOVER; } }