reactor:【IoT 物联网】调整下 IotSceneRuleAction 等类名

This commit is contained in:
YunaiV 2025-06-28 10:28:57 +08:00
parent 1beb5c039c
commit 779cde24ec
13 changed files with 32 additions and 42 deletions

View File

@ -3,9 +3,9 @@ package cn.iocoder.yudao.module.iot.controller.admin.alert;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.IotAlertConfigPageReqVO; import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.config.IotAlertConfigPageReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.IotAlertConfigRespVO; import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.config.IotAlertConfigRespVO;
import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.IotAlertConfigSaveReqVO; import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.config.IotAlertConfigSaveReqVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.alert.IotAlertConfigDO; import cn.iocoder.yudao.module.iot.dal.dataobject.alert.IotAlertConfigDO;
import cn.iocoder.yudao.module.iot.service.alert.IotAlertConfigService; import cn.iocoder.yudao.module.iot.service.alert.IotAlertConfigService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.AdminUserApi;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.iot.controller.admin.alert.vo; package cn.iocoder.yudao.module.iot.controller.admin.alert.vo.config;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.iot.controller.admin.alert.vo; package cn.iocoder.yudao.module.iot.controller.admin.alert.vo.config;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.iot.controller.admin.alert.vo; package cn.iocoder.yudao.module.iot.controller.admin.alert.vo.config;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.validation.InEnum; import cn.iocoder.yudao.framework.common.validation.InEnum;

View File

@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO; import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO;
import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -29,12 +30,12 @@ public class IotAlertRecordDO extends BaseDO {
/** /**
* 记录编号 * 记录编号
*/ */
@TableField @TableId
private Long id; private Long id;
/** /**
* 告警名称 * 告警名称
* *
* 冗余 {@link IotAlertConfigDO#getName()} * 冗余 {@link IotAlertConfigDO#getId()}
*/ */
private Long configId; private Long configId;
/** /**
@ -42,7 +43,7 @@ public class IotAlertRecordDO extends BaseDO {
* *
* 冗余 {@link IotAlertConfigDO#getName()} * 冗余 {@link IotAlertConfigDO#getName()}
*/ */
private String name; private String configName;
/** /**
* 产品编号 * 产品编号
@ -56,8 +57,6 @@ public class IotAlertRecordDO extends BaseDO {
* 关联 {@link IotDeviceDO#getId()} * 关联 {@link IotDeviceDO#getId()}
*/ */
private String deviceId; private String deviceId;
// TODO @芋艿有没更好的方式
/** /**
* 触发的设备消息 * 触发的设备消息
*/ */
@ -65,10 +64,7 @@ public class IotAlertRecordDO extends BaseDO {
private IotDeviceMessage deviceMessage; private IotDeviceMessage deviceMessage;
/** /**
* 处理状态 * 是否处理
*
* true - 已处理
* false - 未处理
*/ */
private Boolean processStatus; private Boolean processStatus;
/** /**

View File

@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.dal.mysql.alert;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.IotAlertConfigPageReqVO; import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.config.IotAlertConfigPageReqVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.alert.IotAlertConfigDO; import cn.iocoder.yudao.module.iot.dal.dataobject.alert.IotAlertConfigDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;

View File

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.iot.enums.rule; package cn.iocoder.yudao.module.iot.enums.rule;
import cn.iocoder.yudao.framework.common.core.ArrayValuable; import cn.iocoder.yudao.framework.common.core.ArrayValuable;
import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum;
import lombok.Getter; import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -15,17 +16,16 @@ import java.util.Arrays;
@Getter @Getter
public enum IotRuleSceneActionTypeEnum implements ArrayValuable<Integer> { public enum IotRuleSceneActionTypeEnum implements ArrayValuable<Integer> {
// TODO @芋艿后续对应部分 @下等包结构梳理完
/** /**
* 设备属性设置 * 设备属性设置
* *
* 对应 IotDeviceMessageMethodEnum.DEVICE_PROPERTY_SET * 对应 {@link IotDeviceMessageMethodEnum#PROPERTY_SET}
*/ */
DEVICE_PROPERTY_SET(1), DEVICE_PROPERTY_SET(1),
/** /**
* 设备服务调用 * 设备服务调用
* *
* 对应 IotDeviceMessageMethodEnum.DEVICE_SERVICE_INVOKE * 对应 {@link IotDeviceMessageMethodEnum#SERVICE_INVOKE}
*/ */
DEVICE_SERVICE_INVOKE(2), DEVICE_SERVICE_INVOKE(2),
@ -38,8 +38,6 @@ public enum IotRuleSceneActionTypeEnum implements ArrayValuable<Integer> {
*/ */
ALERT_RECOVER(101), ALERT_RECOVER(101),
@Deprecated
ALERT(2), // 告警执行
; ;
private final Integer type; private final Integer type;

View File

@ -1,8 +1,8 @@
package cn.iocoder.yudao.module.iot.service.alert; package cn.iocoder.yudao.module.iot.service.alert;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.IotAlertConfigPageReqVO; import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.config.IotAlertConfigPageReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.IotAlertConfigSaveReqVO; import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.config.IotAlertConfigSaveReqVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.alert.IotAlertConfigDO; import cn.iocoder.yudao.module.iot.dal.dataobject.alert.IotAlertConfigDO;
import jakarta.validation.Valid; import jakarta.validation.Valid;

View File

@ -2,8 +2,8 @@ package cn.iocoder.yudao.module.iot.service.alert;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.IotAlertConfigPageReqVO; import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.config.IotAlertConfigPageReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.IotAlertConfigSaveReqVO; import cn.iocoder.yudao.module.iot.controller.admin.alert.vo.config.IotAlertConfigSaveReqVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.alert.IotAlertConfigDO; import cn.iocoder.yudao.module.iot.dal.dataobject.alert.IotAlertConfigDO;
import cn.iocoder.yudao.module.iot.dal.mysql.alert.IotAlertConfigMapper; import cn.iocoder.yudao.module.iot.dal.mysql.alert.IotAlertConfigMapper;
import cn.iocoder.yudao.module.iot.service.rule.scene.IotRuleSceneService; import cn.iocoder.yudao.module.iot.service.rule.scene.IotRuleSceneService;

View File

@ -27,7 +27,7 @@ import cn.iocoder.yudao.module.iot.enums.rule.IotRuleSceneConditionOperatorEnum;
import cn.iocoder.yudao.module.iot.enums.rule.IotRuleSceneTriggerTypeEnum; import cn.iocoder.yudao.module.iot.enums.rule.IotRuleSceneTriggerTypeEnum;
import cn.iocoder.yudao.module.iot.framework.job.core.IotSchedulerManager; import cn.iocoder.yudao.module.iot.framework.job.core.IotSchedulerManager;
import cn.iocoder.yudao.module.iot.job.rule.IotRuleSceneJob; import cn.iocoder.yudao.module.iot.job.rule.IotRuleSceneJob;
import cn.iocoder.yudao.module.iot.service.rule.scene.action.IotRuleSceneAction; import cn.iocoder.yudao.module.iot.service.rule.scene.action.IotSceneRuleAction;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -39,15 +39,13 @@ import org.quartz.impl.StdSchedulerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection;
import java.util.Set;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.RULE_SCENE_NOT_EXISTS; import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.RULE_SCENE_NOT_EXISTS;
@ -65,7 +63,7 @@ public class IotRuleSceneServiceImpl implements IotRuleSceneService {
private IotRuleSceneMapper ruleSceneMapper; private IotRuleSceneMapper ruleSceneMapper;
@Resource @Resource
private List<IotRuleSceneAction> ruleSceneActions; private List<IotSceneRuleAction> ruleSceneActions;
@Resource(name = "iotSchedulerManager") @Resource(name = "iotSchedulerManager")
private IotSchedulerManager schedulerManager; private IotSchedulerManager schedulerManager;
@ -437,7 +435,7 @@ public class IotRuleSceneServiceImpl implements IotRuleSceneService {
// 2. 遍历规则场景的动作 // 2. 遍历规则场景的动作
ruleScene.getActions().forEach(actionConfig -> { ruleScene.getActions().forEach(actionConfig -> {
// 3.1 获取对应的动作 Action 数组 // 3.1 获取对应的动作 Action 数组
List<IotRuleSceneAction> actions = filterList(ruleSceneActions, List<IotSceneRuleAction> actions = filterList(ruleSceneActions,
action -> action.getType().getType().equals(actionConfig.getType())); action -> action.getType().getType().equals(actionConfig.getType()));
if (CollUtil.isEmpty(actions)) { if (CollUtil.isEmpty(actions)) {
return; return;

View File

@ -8,21 +8,21 @@ import org.springframework.stereotype.Component;
import javax.annotation.Nullable; import javax.annotation.Nullable;
/** /**
* IoT 告警 {@link IotRuleSceneAction} 实现类 * IoT 告警触发 {@link IotSceneRuleAction} 实现类
* *
* @author 芋道源码 * @author 芋道源码
*/ */
@Component @Component
public class IotRuleSceneAlertAction implements IotRuleSceneAction { public class IotAlertTriggerRuleSceneAction implements IotSceneRuleAction {
@Override @Override
public void execute(@Nullable IotDeviceMessage message, IotRuleSceneDO.ActionConfig config) { public void execute(@Nullable IotDeviceMessage message, IotRuleSceneDO.ActionConfig config) {
// TODO @芋艿待实现 // TODO @AI
} }
@Override @Override
public IotRuleSceneActionTypeEnum getType() { public IotRuleSceneActionTypeEnum getType() {
return IotRuleSceneActionTypeEnum.ALERT; return IotRuleSceneActionTypeEnum.ALERT_TRIGGER;
} }
} }

View File

@ -12,13 +12,13 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
* IoT 设备控制的 {@link IotRuleSceneAction} 实现类 * IoT 设备控制的 {@link IotSceneRuleAction} 实现类
* *
* @author 芋道源码 * @author 芋道源码
*/ */
@Component @Component
@Slf4j @Slf4j
public class IotRuleSceneDeviceControlAction implements IotRuleSceneAction { public class IotDeviceControlRuleSceneAction implements IotSceneRuleAction {
@Resource @Resource
private IotDeviceService deviceService; private IotDeviceService deviceService;

View File

@ -7,16 +7,14 @@ import cn.iocoder.yudao.module.iot.enums.rule.IotRuleSceneActionTypeEnum;
import javax.annotation.Nullable; import javax.annotation.Nullable;
/** /**
* IoT 规则场景的场景执行器接口 * IoT 场景联动的执行器接口
* *
* @author 芋道源码 * @author 芋道源码
*/ */
public interface IotRuleSceneAction { public interface IotSceneRuleAction {
// TODO @芋艿groovy 或者 javascript 实现数据的转换可以考虑基于 hutool ScriptUtil
/** /**
* 执行场景 * 执行场景联动
* *
* @param message 消息允许空 * @param message 消息允许空
* 1. 空的情况定时触发 * 1. 空的情况定时触发