Commit d24e3ad773b62f656469fb919f634f2533900cc5

Authored by YunaiV
1 parent f6f162ad

【功能新增】IoT:增加 alert 告警相关的表结构

yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/rule/IotAlertConfigReceiveTypeEnum.java 0 → 100644
  1 +package cn.iocoder.yudao.module.iot.enums.rule;
  2 +
  3 +import cn.iocoder.yudao.framework.common.core.ArrayValuable;
  4 +import lombok.Getter;
  5 +import lombok.RequiredArgsConstructor;
  6 +
  7 +import java.util.Arrays;
  8 +
  9 +/**
  10 + * Iot 告警配置的接收方式枚举
  11 + *
  12 + * @author 芋道源码
  13 + */
  14 +@RequiredArgsConstructor
  15 +@Getter
  16 +public enum IotAlertConfigReceiveTypeEnum implements ArrayValuable<Integer> {
  17 +
  18 + SMS(1), // 短信
  19 + MAIL(2), // 邮箱
  20 + NOTIFY(3); // 通知
  21 +
  22 + private final Integer type;
  23 +
  24 + public static final Integer[] ARRAYS = Arrays.stream(values()).map(IotAlertConfigReceiveTypeEnum::getType).toArray(Integer[]::new);
  25 +
  26 + @Override
  27 + public Integer[] array() {
  28 + return ARRAYS;
  29 + }
  30 +
  31 +}
yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/thingmodel/IotDataSpecsDataTypeEnum.java
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.enums.thingmodel; @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.enums.thingmodel;
3 import lombok.AllArgsConstructor; 3 import lombok.AllArgsConstructor;
4 import lombok.Getter; 4 import lombok.Getter;
5 5
  6 +// TODO @puhui999:加个 ArrayValuable
6 /** 7 /**
7 * IoT 数据定义的数据类型枚举类 8 * IoT 数据定义的数据类型枚举类
8 * 9 *
yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/thingmodel/IotThingModelAccessModeEnum.java
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.enums.thingmodel; @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.enums.thingmodel;
3 import lombok.AllArgsConstructor; 3 import lombok.AllArgsConstructor;
4 import lombok.Getter; 4 import lombok.Getter;
5 5
  6 +// TODO @puhui999:加个 ArrayValuable
6 /** 7 /**
7 * IOT 产品物模型属性读取类型枚举 8 * IOT 产品物模型属性读取类型枚举
8 * 9 *
yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/thingmodel/IotThingModelParamDirectionEnum.java
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.enums.thingmodel; @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.enums.thingmodel;
3 import lombok.AllArgsConstructor; 3 import lombok.AllArgsConstructor;
4 import lombok.Getter; 4 import lombok.Getter;
5 5
  6 +// TODO @puhui999:加个 ArrayValuable
6 /** 7 /**
7 * IOT 产品物模型参数是输入参数还是输出参数枚举 8 * IOT 产品物模型参数是输入参数还是输出参数枚举
8 * 9 *
yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/thingmodel/IotThingModelServiceCallTypeEnum.java
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.enums.thingmodel; @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.enums.thingmodel;
3 import lombok.AllArgsConstructor; 3 import lombok.AllArgsConstructor;
4 import lombok.Getter; 4 import lombok.Getter;
5 5
  6 +// TODO @puhui999:加个 ArrayValuable
6 /** 7 /**
7 * IOT 产品物模型服务调用方式枚举 8 * IOT 产品物模型服务调用方式枚举
8 * 9 *
yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/thingmodel/IotThingModelServiceEventTypeEnum.java
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.enums.thingmodel; @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.enums.thingmodel;
3 import lombok.AllArgsConstructor; 3 import lombok.AllArgsConstructor;
4 import lombok.Getter; 4 import lombok.Getter;
5 5
  6 +// TODO @puhui999:加个 ArrayValuable
6 /** 7 /**
7 * IOT 产品物模型事件类型枚举 8 * IOT 产品物模型事件类型枚举
8 * 9 *
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotAlertConfig.java 0 → 100644
  1 +package cn.iocoder.yudao.module.iot.dal.dataobject.rule;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import cn.iocoder.yudao.module.iot.enums.rule.IotAlertConfigReceiveTypeEnum;
  5 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
  6 +import com.baomidou.mybatisplus.annotation.KeySequence;
  7 +import com.baomidou.mybatisplus.annotation.TableField;
  8 +import com.baomidou.mybatisplus.annotation.TableId;
  9 +import com.baomidou.mybatisplus.annotation.TableName;
  10 +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
  11 +import lombok.*;
  12 +
  13 +import java.util.List;
  14 +
  15 +/**
  16 + * IoT 告警配置 DO
  17 + *
  18 + * @author 芋道源码
  19 + */
  20 +@TableName("iot_alert_config")
  21 +@KeySequence("iot_alert_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
  22 +@Data
  23 +@EqualsAndHashCode(callSuper = true)
  24 +@ToString(callSuper = true)
  25 +@Builder
  26 +@NoArgsConstructor
  27 +@AllArgsConstructor
  28 +public class IotAlertConfig extends BaseDO {
  29 +
  30 + /**
  31 + * 配置编号
  32 + */
  33 + @TableId
  34 + private Long id;
  35 + /**
  36 + * 配置名称
  37 + */
  38 + private String name;
  39 + /**
  40 + * 配置描述
  41 + */
  42 + private String description;
  43 + /**
  44 + * 配置状态
  45 + *
  46 + * TODO 数据字典
  47 + */
  48 + private Integer level;
  49 + /**
  50 + * 配置状态
  51 + *
  52 + * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum}
  53 + */
  54 + private Integer status;
  55 +
  56 + /**
  57 + * 关联的规则场景编号数组
  58 + *
  59 + * 关联 {@link IotRuleSceneDO#getId()}
  60 + */
  61 + @TableField(typeHandler = JacksonTypeHandler.class)
  62 + private List<Long> ruleSceneIds;
  63 +
  64 + /**
  65 + * 接收的用户编号数组
  66 + *
  67 + * 关联 {@link AdminUserRespDTO#getId()}
  68 + */
  69 + @TableField(typeHandler = JacksonTypeHandler.class)
  70 + private List<Long> receiveUserIds;
  71 + /**
  72 + * 接收的类型数组
  73 + *
  74 + * 枚举 {@link IotAlertConfigReceiveTypeEnum}
  75 + */
  76 + @TableField(typeHandler = JacksonTypeHandler.class)
  77 + private List<Integer> receiveTypes;
  78 +
  79 +}
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotAlertRecordDO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.iot.dal.dataobject.rule;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
  5 +import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO;
  6 +import cn.iocoder.yudao.module.iot.mq.message.IotDeviceMessage;
  7 +import com.baomidou.mybatisplus.annotation.KeySequence;
  8 +import com.baomidou.mybatisplus.annotation.TableField;
  9 +import com.baomidou.mybatisplus.annotation.TableName;
  10 +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
  11 +import lombok.*;
  12 +
  13 +/**
  14 + * IoT 告警记录 DO
  15 + *
  16 + * @author 芋道源码
  17 + */
  18 +@TableName("iot_alert_record")
  19 +@KeySequence("iot_alert_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
  20 +@Data
  21 +@EqualsAndHashCode(callSuper = true)
  22 +@ToString(callSuper = true)
  23 +@Builder
  24 +@NoArgsConstructor
  25 +@AllArgsConstructor
  26 +public class IotAlertRecordDO extends BaseDO {
  27 +
  28 + /**
  29 + * 记录编号
  30 + */
  31 + @TableField
  32 + private Long id;
  33 + /**
  34 + * 告警名称
  35 + *
  36 + * 冗余 {@link IotAlertConfig#getName()}
  37 + */
  38 + private Long configId;
  39 + /**
  40 + * 告警名称
  41 + *
  42 + * 冗余 {@link IotAlertConfig#getName()}
  43 + */
  44 + private String name;
  45 +
  46 + /**
  47 + * 产品标识
  48 + *
  49 + * 关联 {@link IotProductDO#getProductKey()} ()}
  50 + */
  51 + private String productKey;
  52 + /**
  53 + * 设备名称
  54 + *
  55 + * 冗余 {@link IotDeviceDO#getDeviceName()}
  56 + */
  57 + private String deviceName;
  58 +
  59 + // TODO @芋艿:有没更好的方式
  60 + /**
  61 + * 触发的设备消息
  62 + */
  63 + @TableField(typeHandler = JacksonTypeHandler.class)
  64 + private IotDeviceMessage deviceMessage;
  65 +
  66 + /**
  67 + * 处理状态
  68 + *
  69 + * true - 已处理
  70 + * false - 未处理
  71 + */
  72 + private Boolean processStatus;
  73 + /**
  74 + * 处理结果(备注)
  75 + */
  76 + private String processRemark;
  77 +
  78 +}
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/action/IotRuleSceneAction.java
@@ -13,6 +13,7 @@ import javax.annotation.Nullable; @@ -13,6 +13,7 @@ import javax.annotation.Nullable;
13 */ 13 */
14 public interface IotRuleSceneAction { 14 public interface IotRuleSceneAction {
15 15
  16 + // TODO @芋艿:groovy 或者 javascript 实现数据的转换;可以考虑基于 hutool 的 ScriptUtil 做
16 /** 17 /**
17 * 执行场景 18 * 执行场景
18 * 19 *
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/action/IotRuleSceneAlertAction.java 0 → 100644
  1 +package cn.iocoder.yudao.module.iot.service.rule.action;
  2 +
  3 +import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotRuleSceneDO;
  4 +import cn.iocoder.yudao.module.iot.enums.rule.IotRuleSceneActionTypeEnum;
  5 +import cn.iocoder.yudao.module.iot.mq.message.IotDeviceMessage;
  6 +import org.springframework.stereotype.Component;
  7 +
  8 +import javax.annotation.Nullable;
  9 +
  10 +/**
  11 + * IoT 告警的 {@link IotRuleSceneAction} 实现类
  12 + *
  13 + * @author 芋道源码
  14 + */
  15 +@Component
  16 +public class IotRuleSceneAlertAction implements IotRuleSceneAction {
  17 +
  18 + @Override
  19 + public void execute(@Nullable IotDeviceMessage message, IotRuleSceneDO.ActionConfig config) {
  20 + // TODO @芋艿:待实现
  21 + }
  22 +
  23 + @Override
  24 + public IotRuleSceneActionTypeEnum getType() {
  25 + return IotRuleSceneActionTypeEnum.ALERT;
  26 + }
  27 +
  28 +}
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/action/IotRuleSceneDataBridgeAction.java
@@ -60,7 +60,6 @@ public class IotRuleSceneDataBridgeAction implements IotRuleSceneAction { @@ -60,7 +60,6 @@ public class IotRuleSceneDataBridgeAction implements IotRuleSceneAction {
60 } 60 }
61 61
62 // 2.1 执行 HTTP 请求 62 // 2.1 执行 HTTP 请求
63 - // TODO @芋艿:groovy 或者 javascript 实现数据的转换;可以考虑基于 hutool 的 ScriptUtil 做  
64 if (IotDataBridgTypeEnum.HTTP.getType().equals(dataBridge.getType())) { 63 if (IotDataBridgTypeEnum.HTTP.getType().equals(dataBridge.getType())) {
65 executeHttp(message, (IotDataBridgeDO.HttpConfig) dataBridge.getConfig()); 64 executeHttp(message, (IotDataBridgeDO.HttpConfig) dataBridge.getConfig());
66 return; 65 return;