【代码新增】IoT:增加规则引擎的 IotRuleSceneDO 场景联动的实体

This commit is contained in:
YunaiV 2025-02-01 20:35:41 +08:00
parent f46a2fb011
commit 06749a18fc
2 changed files with 237 additions and 0 deletions

View File

@ -20,6 +20,7 @@ public enum IotDeviceMessageIdentifierEnum {
CONFIG_GET("get"), // 上行 TODO 芋艿讨论暂时没有上行的场景
CONFIG_SET("set"), // 下行
SERVICE_INVOKE("${identifier}"), // 下行
SERVICE_REPLY_SUFFIX("_reply"); // 芋艿TODO 芋艿讨论上行 or 下行
/**

View File

@ -0,0 +1,236 @@
package cn.iocoder.yudao.module.iot.dal.dataobject.rule;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
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.thingmodel.IotThingModelDO;
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceMessageIdentifierEnum;
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceMessageTypeEnum;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*;
import java.util.List;
import java.util.Map;
/**
* IoT 场景联动 DO
*
* @author 芋道源码
*/
@TableName("iot_rule_scene")
@KeySequence("iot_rule_scene_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class IotRuleSceneDO extends BaseDO {
/**
* 场景编号
*/
@TableId
private Long id;
/**
* 场景名称
*/
private String name;
/**
* 场景描述
*/
private String description;
/**
* 场景状态
*
* 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum}
*/
private Integer status;
/**
* 触发器数组
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<Trigger> triggers;
/**
* 执行器数组
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<Actuator> actuators;
/**
* 触发器
*/
@Data
public static class Trigger {
/**
* 触发类型
*
* TODO @芋艿devicejob
*/
private Integer type;
/**
* 产品标识
*
* 关联 {@link IotProductDO#getProductKey()}
*/
private String productKey;
/**
* 设备名称数组
*
* 关联 {@link IotDeviceDO#getDeviceName()}
*/
private List<String> deviceNames;
/**
* 触发条件数组
*
* TODO @芋艿注释说明
*/
private List<TriggerCondition> conditions;
/**
* CRON 表达式
*
* TODO @芋艿注释说明
*/
private String cronExpression;
}
/**
* 触发条件
*/
@Data
public static class TriggerCondition {
/**
* 消息类型
*
* 枚举 {@link IotDeviceMessageTypeEnum}
*/
private String type;
/**
* 消息标识符
*
* 枚举 {@link IotDeviceMessageIdentifierEnum}
*/
private String identifier;
/**
* 参数数组
*/
private List<TriggerConditionParameter> parameters;
}
/**
* 触发条件参数
*/
@Data
public static class TriggerConditionParameter {
/**
* 标识符属性事件服务
*
* 关联 {@link IotThingModelDO#getIdentifier()}
*/
private String identifier;
/**
* 操作符
*
* TODO 芋艿枚举
*/
private String operator;
/**
*
*/
private String value;
}
/**
* 执行器
*/
@Data
public static class Actuator {
/**
* 执行类型
*
* TODO @芋艿controlalertwebhook待定
*/
private Integer type;
/**
* 产品标识
*
* 关联 {@link IotProductDO#getProductKey()}
*/
private String productKey;
/**
* 设备名称数组
*
* 关联 {@link IotDeviceDO#getDeviceName()}
*/
private List<String> deviceNames;
/**
* 控制数组
*
* TODO 芋艿类型的情况下
*/
private List<ActuatorControl> controls;
/**
* 数据桥接编号
*
* TODO 芋艿暂定
* TODO 芋艿关联
*/
private Long bridgeId;
}
/**
* 执行器控制
*/
@Data
public static class ActuatorControl {
/**
* 消息类型
*
* 枚举 {@link IotDeviceMessageTypeEnum#PROPERTY}{@link IotDeviceMessageTypeEnum#SERVICE}
*/
private Integer type;
/**
* 消息标识符
*
* 枚举 {@link IotDeviceMessageIdentifierEnum}
*
* 1. 属性设置对应 {@link IotDeviceMessageIdentifierEnum#PROPERTY_SET}
* 2. 服务调用对应 {@link IotDeviceMessageIdentifierEnum#SERVICE_INVOKE}
*/
private String identifier;
/**
* 具体数据
*
* 1. 属性设置 {@link #type} {@link IotDeviceMessageTypeEnum#PROPERTY} 对应 properties
* 2. 服务调用 {@link #type} {@link IotDeviceMessageTypeEnum#SERVICE} 对应 params
*/
private Map<String, Object> data;
}
}