package cn.iocoder.yudao.module.iot.service.rule.scene.action; import cn.hutool.core.collection.CollUtil; 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.IotAlertRecordDO; import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleActionTypeEnum; import cn.iocoder.yudao.module.iot.service.alert.IotAlertRecordService; import jakarta.annotation.Resource; import org.springframework.stereotype.Component; import java.util.List; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; /** * IoT 告警恢复的 {@link IotSceneRuleAction} 实现类 * * @author 芋道源码 */ @Component public class IotAlertRecoverSceneRuleAction implements IotSceneRuleAction { private static final String PROCESS_REMARK = "告警自动回复,基于【{}】场景联动规则"; @Resource private IotAlertRecordService alertRecordService; @Override public void execute(IotDeviceMessage message, IotSceneRuleDO rule, IotSceneRuleDO.Action actionConfig) throws Exception { Long deviceId = message != null ? message.getDeviceId() : null; List alertRecords = alertRecordService.getAlertRecordListBySceneRuleId( rule.getId(), deviceId, false); if (CollUtil.isEmpty(alertRecords)) { return; } alertRecordService.processAlertRecordList(convertList(alertRecords, IotAlertRecordDO::getId), StrUtil.format(PROCESS_REMARK, rule.getName())); } @Override public IotSceneRuleActionTypeEnum getType() { return IotSceneRuleActionTypeEnum.ALERT_RECOVER; } }