feat:【IoT 物联网】新增告警恢复场景规则执行类 IotAlertRecoverSceneRuleAction

This commit is contained in:
YunaiV
2025-06-28 19:37:00 +08:00
parent db03c6d7a8
commit 53c7ce2220

View File

@@ -0,0 +1,69 @@
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.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.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;
// TODO @puhui999、@芋艿:未测试;需要场景联动开发完
/**
* IoT 告警触发的 {@link IotSceneRuleAction} 实现类
*
* @author 芋道源码
*/
@Component
public class IotAlertTriggerSceneRuleAction implements IotSceneRuleAction {
@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,
IotRuleSceneDO rule, IotRuleSceneDO.ActionConfig actionConfig) throws Exception {
List<IotAlertConfigDO> alertConfigs = alertConfigService.getAlertConfigListBySceneRuleIdAndStatus(
rule.getId(), CommonStatusEnum.ENABLE.getStatus());
if (CollUtil.isEmpty(alertConfigs)) {
return;
}
alertConfigs.forEach(alertConfig -> {
// 记录告警记录
alertRecordService.createAlertRecord(alertConfig, message);
// 发送告警消息
sendAlertMessage(alertConfig, message);
});
}
private void sendAlertMessage(IotAlertConfigDO config, IotDeviceMessage deviceMessage) {
// TODO @芋艿:等场景联动开发完,再实现
// TODO @芋艿:短信
// TODO @芋艿:邮箱
// TODO @芋艿:站内信
}
@Override
public IotRuleSceneActionTypeEnum getType() {
return IotRuleSceneActionTypeEnum.ALERT_TRIGGER;
}
}