Commit 1f5dff77c2befefb60e7b7de36975a9ddca0a2cd
1 parent
1ad4e08c
reactor:【IoT 物联网】增加 IotDataRuleDO 的定义,对标阿里云 IoT 的「云产品流转」
Showing
22 changed files
with
223 additions
and
77 deletions
yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/rule/IotDataBridgeTypeEnum.java renamed to yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/rule/IotDataRuleSinkTypeEnum.java
| @@ -7,13 +7,13 @@ import lombok.RequiredArgsConstructor; | @@ -7,13 +7,13 @@ import lombok.RequiredArgsConstructor; | ||
| 7 | import java.util.Arrays; | 7 | import java.util.Arrays; |
| 8 | 8 | ||
| 9 | /** | 9 | /** |
| 10 | - * IoT 数据桥接的类型枚举 | 10 | + * IoT 数据流转的数据目的的类型枚举 |
| 11 | * | 11 | * |
| 12 | * @author 芋道源码 | 12 | * @author 芋道源码 |
| 13 | */ | 13 | */ |
| 14 | @RequiredArgsConstructor | 14 | @RequiredArgsConstructor |
| 15 | @Getter | 15 | @Getter |
| 16 | -public enum IotDataBridgeTypeEnum implements ArrayValuable<Integer> { | 16 | +public enum IotDataRuleSinkTypeEnum implements ArrayValuable<Integer> { |
| 17 | 17 | ||
| 18 | HTTP(1, "HTTP"), | 18 | HTTP(1, "HTTP"), |
| 19 | TCP(2, "TCP"), | 19 | TCP(2, "TCP"), |
| @@ -32,7 +32,7 @@ public enum IotDataBridgeTypeEnum implements ArrayValuable<Integer> { | @@ -32,7 +32,7 @@ public enum IotDataBridgeTypeEnum implements ArrayValuable<Integer> { | ||
| 32 | 32 | ||
| 33 | private final String name; | 33 | private final String name; |
| 34 | 34 | ||
| 35 | - public static final Integer[] ARRAYS = Arrays.stream(values()).map(IotDataBridgeTypeEnum::getType).toArray(Integer[]::new); | 35 | + public static final Integer[] ARRAYS = Arrays.stream(values()).map(IotDataRuleSinkTypeEnum::getType).toArray(Integer[]::new); |
| 36 | 36 | ||
| 37 | @Override | 37 | @Override |
| 38 | public Integer[] array() { | 38 | public Integer[] array() { |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/IotDataBridgeController.java
| @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||
| 7 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgePageReqVO; | 7 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgePageReqVO; |
| 8 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgeRespVO; | 8 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgeRespVO; |
| 9 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgeSaveReqVO; | 9 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgeSaveReqVO; |
| 10 | -import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataBridgeDO; | 10 | +import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataRuleSinkDO; |
| 11 | import cn.iocoder.yudao.module.iot.service.rule.IotDataBridgeService; | 11 | import cn.iocoder.yudao.module.iot.service.rule.IotDataBridgeService; |
| 12 | import io.swagger.v3.oas.annotations.Operation; | 12 | import io.swagger.v3.oas.annotations.Operation; |
| 13 | import io.swagger.v3.oas.annotations.Parameter; | 13 | import io.swagger.v3.oas.annotations.Parameter; |
| @@ -61,7 +61,7 @@ public class IotDataBridgeController { | @@ -61,7 +61,7 @@ public class IotDataBridgeController { | ||
| 61 | @Parameter(name = "id", description = "编号", required = true, example = "1024") | 61 | @Parameter(name = "id", description = "编号", required = true, example = "1024") |
| 62 | @PreAuthorize("@ss.hasPermission('iot:data-bridge:query')") | 62 | @PreAuthorize("@ss.hasPermission('iot:data-bridge:query')") |
| 63 | public CommonResult<IotDataBridgeRespVO> getDataBridge(@RequestParam("id") Long id) { | 63 | public CommonResult<IotDataBridgeRespVO> getDataBridge(@RequestParam("id") Long id) { |
| 64 | - IotDataBridgeDO dataBridge = dataBridgeService.getDataBridge(id); | 64 | + IotDataRuleSinkDO dataBridge = dataBridgeService.getDataBridge(id); |
| 65 | return success(BeanUtils.toBean(dataBridge, IotDataBridgeRespVO.class)); | 65 | return success(BeanUtils.toBean(dataBridge, IotDataBridgeRespVO.class)); |
| 66 | } | 66 | } |
| 67 | 67 | ||
| @@ -69,14 +69,14 @@ public class IotDataBridgeController { | @@ -69,14 +69,14 @@ public class IotDataBridgeController { | ||
| 69 | @Operation(summary = "获得数据桥梁分页") | 69 | @Operation(summary = "获得数据桥梁分页") |
| 70 | @PreAuthorize("@ss.hasPermission('iot:data-bridge:query')") | 70 | @PreAuthorize("@ss.hasPermission('iot:data-bridge:query')") |
| 71 | public CommonResult<PageResult<IotDataBridgeRespVO>> getDataBridgePage(@Valid IotDataBridgePageReqVO pageReqVO) { | 71 | public CommonResult<PageResult<IotDataBridgeRespVO>> getDataBridgePage(@Valid IotDataBridgePageReqVO pageReqVO) { |
| 72 | - PageResult<IotDataBridgeDO> pageResult = dataBridgeService.getDataBridgePage(pageReqVO); | 72 | + PageResult<IotDataRuleSinkDO> pageResult = dataBridgeService.getDataBridgePage(pageReqVO); |
| 73 | return success(BeanUtils.toBean(pageResult, IotDataBridgeRespVO.class)); | 73 | return success(BeanUtils.toBean(pageResult, IotDataBridgeRespVO.class)); |
| 74 | } | 74 | } |
| 75 | 75 | ||
| 76 | @GetMapping("/simple-list") | 76 | @GetMapping("/simple-list") |
| 77 | @Operation(summary = "获取数据桥梁的精简信息列表", description = "主要用于前端的下拉选项") | 77 | @Operation(summary = "获取数据桥梁的精简信息列表", description = "主要用于前端的下拉选项") |
| 78 | public CommonResult<List<IotDataBridgeRespVO>> getSimpleDataBridgeList() { | 78 | public CommonResult<List<IotDataBridgeRespVO>> getSimpleDataBridgeList() { |
| 79 | - List<IotDataBridgeDO> list = dataBridgeService.getDataBridgeList(CommonStatusEnum.ENABLE.getStatus()); | 79 | + List<IotDataRuleSinkDO> list = dataBridgeService.getDataBridgeList(CommonStatusEnum.ENABLE.getStatus()); |
| 80 | return success(convertList(list, dataBridge -> // 只返回 id、name 字段 | 80 | return success(convertList(list, dataBridge -> // 只返回 id、name 字段 |
| 81 | new IotDataBridgeRespVO().setId(dataBridge.getId()).setName(dataBridge.getName()))); | 81 | new IotDataBridgeRespVO().setId(dataBridge.getId()).setName(dataBridge.getName()))); |
| 82 | } | 82 | } |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/IotDataBridgeSaveReqVO.java
| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 5 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeAbstractConfig; | 5 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeAbstractConfig; |
| 6 | import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeDirectionEnum; | 6 | import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeDirectionEnum; |
| 7 | -import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeTypeEnum; | 7 | +import cn.iocoder.yudao.module.iot.enums.rule.IotDataRuleSinkTypeEnum; |
| 8 | import io.swagger.v3.oas.annotations.media.Schema; | 8 | import io.swagger.v3.oas.annotations.media.Schema; |
| 9 | import jakarta.validation.constraints.NotEmpty; | 9 | import jakarta.validation.constraints.NotEmpty; |
| 10 | import jakarta.validation.constraints.NotNull; | 10 | import jakarta.validation.constraints.NotNull; |
| @@ -36,7 +36,7 @@ public class IotDataBridgeSaveReqVO { | @@ -36,7 +36,7 @@ public class IotDataBridgeSaveReqVO { | ||
| 36 | 36 | ||
| 37 | @Schema(description = "桥梁类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | 37 | @Schema(description = "桥梁类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| 38 | @NotNull(message = "桥梁类型不能为空") | 38 | @NotNull(message = "桥梁类型不能为空") |
| 39 | - @InEnum(IotDataBridgeTypeEnum.class) | 39 | + @InEnum(IotDataRuleSinkTypeEnum.class) |
| 40 | private Integer type; | 40 | private Integer type; |
| 41 | 41 | ||
| 42 | @Schema(description = "桥梁配置") | 42 | @Schema(description = "桥梁配置") |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeAbstractConfig.java
| 1 | package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; | 1 | package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeTypeEnum; | 3 | +import cn.iocoder.yudao.module.iot.enums.rule.IotDataRuleSinkTypeEnum; |
| 4 | import com.fasterxml.jackson.annotation.JsonSubTypes; | 4 | import com.fasterxml.jackson.annotation.JsonSubTypes; |
| 5 | import com.fasterxml.jackson.annotation.JsonTypeInfo; | 5 | import com.fasterxml.jackson.annotation.JsonTypeInfo; |
| 6 | import lombok.Data; | 6 | import lombok.Data; |
| @@ -28,7 +28,7 @@ public abstract class IotDataBridgeAbstractConfig { | @@ -28,7 +28,7 @@ public abstract class IotDataBridgeAbstractConfig { | ||
| 28 | /** | 28 | /** |
| 29 | * 配置类型 | 29 | * 配置类型 |
| 30 | * | 30 | * |
| 31 | - * 枚举 {@link IotDataBridgeTypeEnum#getType()} | 31 | + * 枚举 {@link IotDataRuleSinkTypeEnum#getType()} |
| 32 | */ | 32 | */ |
| 33 | private String type; | 33 | private String type; |
| 34 | 34 |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/device/IotDeviceDO.java
| @@ -29,6 +29,11 @@ import java.util.Set; | @@ -29,6 +29,11 @@ import java.util.Set; | ||
| 29 | public class IotDeviceDO extends TenantBaseDO { | 29 | public class IotDeviceDO extends TenantBaseDO { |
| 30 | 30 | ||
| 31 | /** | 31 | /** |
| 32 | + * 设备编号 - 全部设备 | ||
| 33 | + */ | ||
| 34 | + public static final Long DEVICE_ID_ALL = 0L; | ||
| 35 | + | ||
| 36 | + /** | ||
| 32 | * 设备 ID,主键,自增 | 37 | * 设备 ID,主键,自增 |
| 33 | */ | 38 | */ |
| 34 | @TableId | 39 | @TableId |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotDataRuleDO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.iot.dal.dataobject.rule; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 4 | +import com.baomidou.mybatisplus.annotation.KeySequence; | ||
| 5 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
| 6 | +import lombok.AllArgsConstructor; | ||
| 7 | +import lombok.Builder; | ||
| 8 | +import lombok.Data; | ||
| 9 | +import lombok.NoArgsConstructor; | ||
| 10 | + | ||
| 11 | +import java.util.List; | ||
| 12 | + | ||
| 13 | +/** | ||
| 14 | + * IoT 数据流转 DO | ||
| 15 | + * | ||
| 16 | + * 组合 {@link IotDataRuleSourceDO} => {@link IotDataRuleSinkDO} | ||
| 17 | + * | ||
| 18 | + * @author 芋道源码 | ||
| 19 | + */ | ||
| 20 | +@TableName(value = "iot_data_flow", autoResultMap = true) | ||
| 21 | +@KeySequence("iot_data_flow_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 | ||
| 22 | +@Data | ||
| 23 | +@Builder | ||
| 24 | +@NoArgsConstructor | ||
| 25 | +@AllArgsConstructor | ||
| 26 | +public class IotDataRuleDO { | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 数据流转编号 | ||
| 30 | + */ | ||
| 31 | + private Long id; | ||
| 32 | + /** | ||
| 33 | + * 数据流转名称 | ||
| 34 | + */ | ||
| 35 | + private String name; | ||
| 36 | + /** | ||
| 37 | + * 数据流转描述 | ||
| 38 | + */ | ||
| 39 | + private String description; | ||
| 40 | + /** | ||
| 41 | + * 数据流转状态 | ||
| 42 | + * | ||
| 43 | + * 枚举 {@link CommonStatusEnum} | ||
| 44 | + */ | ||
| 45 | + private Integer status; | ||
| 46 | + | ||
| 47 | + /** | ||
| 48 | + * 数据源编号 | ||
| 49 | + * | ||
| 50 | + * 关联 {@link IotDataRuleSourceDO#getId()} | ||
| 51 | + */ | ||
| 52 | + private List<Long> sourceIds; | ||
| 53 | + /** | ||
| 54 | + * 数据目的编号 | ||
| 55 | + * | ||
| 56 | + * 关联 {@link IotDataRuleSinkDO#getId()} | ||
| 57 | + */ | ||
| 58 | + private List<Long> sinkIds; | ||
| 59 | + | ||
| 60 | + // TODO @芋艿:未来考虑使用 groovy;支持数据处理; | ||
| 61 | + | ||
| 62 | +} |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotDataBridgeDO.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotDataRuleSinkDO.java
| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 5 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeAbstractConfig; | 5 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeAbstractConfig; |
| 6 | import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeDirectionEnum; | 6 | import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeDirectionEnum; |
| 7 | -import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeTypeEnum; | 7 | +import cn.iocoder.yudao.module.iot.enums.rule.IotDataRuleSinkTypeEnum; |
| 8 | import com.baomidou.mybatisplus.annotation.KeySequence; | 8 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 9 | import com.baomidou.mybatisplus.annotation.TableField; | 9 | import com.baomidou.mybatisplus.annotation.TableField; |
| 10 | import com.baomidou.mybatisplus.annotation.TableId; | 10 | import com.baomidou.mybatisplus.annotation.TableId; |
| @@ -13,7 +13,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; | @@ -13,7 +13,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; | ||
| 13 | import lombok.*; | 13 | import lombok.*; |
| 14 | 14 | ||
| 15 | /** | 15 | /** |
| 16 | - * IoT 数据桥梁 DO | 16 | + * IoT 数据流转的数据目的 DO |
| 17 | * | 17 | * |
| 18 | * @author 芋道源码 | 18 | * @author 芋道源码 |
| 19 | */ | 19 | */ |
| @@ -23,19 +23,19 @@ import lombok.*; | @@ -23,19 +23,19 @@ import lombok.*; | ||
| 23 | @Builder | 23 | @Builder |
| 24 | @NoArgsConstructor | 24 | @NoArgsConstructor |
| 25 | @AllArgsConstructor | 25 | @AllArgsConstructor |
| 26 | -public class IotDataBridgeDO extends BaseDO { | 26 | +public class IotDataRuleSinkDO extends BaseDO { |
| 27 | 27 | ||
| 28 | /** | 28 | /** |
| 29 | - * 桥梁编号 | 29 | + * 数据目的编号 |
| 30 | */ | 30 | */ |
| 31 | @TableId | 31 | @TableId |
| 32 | private Long id; | 32 | private Long id; |
| 33 | /** | 33 | /** |
| 34 | - * 桥梁名称 | 34 | + * 数据目的名称 |
| 35 | */ | 35 | */ |
| 36 | private String name; | 36 | private String name; |
| 37 | /** | 37 | /** |
| 38 | - * 桥梁描述 | 38 | + * 数据目的描述 |
| 39 | */ | 39 | */ |
| 40 | private String description; | 40 | private String description; |
| 41 | /** | 41 | /** |
| @@ -43,23 +43,25 @@ public class IotDataBridgeDO extends BaseDO { | @@ -43,23 +43,25 @@ public class IotDataBridgeDO extends BaseDO { | ||
| 43 | * | 43 | * |
| 44 | * 枚举 {@link CommonStatusEnum} | 44 | * 枚举 {@link CommonStatusEnum} |
| 45 | */ | 45 | */ |
| 46 | + @Deprecated // TODO @puhui999:这个删除 | ||
| 46 | private Integer status; | 47 | private Integer status; |
| 47 | /** | 48 | /** |
| 48 | * 桥梁方向 | 49 | * 桥梁方向 |
| 49 | * | 50 | * |
| 50 | * 枚举 {@link IotDataBridgeDirectionEnum} | 51 | * 枚举 {@link IotDataBridgeDirectionEnum} |
| 51 | */ | 52 | */ |
| 53 | + @Deprecated // TODO @puhui999:这个删除 | ||
| 52 | private Integer direction; | 54 | private Integer direction; |
| 53 | 55 | ||
| 54 | /** | 56 | /** |
| 55 | - * 桥梁类型 | 57 | + * 数据目的类型 |
| 56 | * | 58 | * |
| 57 | - * 枚举 {@link IotDataBridgeTypeEnum} | 59 | + * 枚举 {@link IotDataRuleSinkTypeEnum} |
| 58 | */ | 60 | */ |
| 59 | private Integer type; | 61 | private Integer type; |
| 60 | 62 | ||
| 61 | /** | 63 | /** |
| 62 | - * 桥梁配置 | 64 | + * 数据目的配置 |
| 63 | */ | 65 | */ |
| 64 | @TableField(typeHandler = JacksonTypeHandler.class) | 66 | @TableField(typeHandler = JacksonTypeHandler.class) |
| 65 | private IotDataBridgeAbstractConfig config; | 67 | private IotDataBridgeAbstractConfig config; |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotDataRuleSourceDO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.iot.dal.dataobject.rule; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum; | ||
| 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.dal.dataobject.thingmodel.IotThingModelDO; | ||
| 7 | +import com.baomidou.mybatisplus.annotation.KeySequence; | ||
| 8 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
| 9 | +import lombok.AllArgsConstructor; | ||
| 10 | +import lombok.Builder; | ||
| 11 | +import lombok.Data; | ||
| 12 | +import lombok.NoArgsConstructor; | ||
| 13 | + | ||
| 14 | +import java.util.List; | ||
| 15 | + | ||
| 16 | +/** | ||
| 17 | + * IoT 数据流转的数据源 DO | ||
| 18 | + * | ||
| 19 | + * @author 芋道源码 | ||
| 20 | + */ | ||
| 21 | +@TableName(value = "iot_data_flow_source", autoResultMap = true) | ||
| 22 | +@KeySequence("iot_data_flow_source_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 | ||
| 23 | +@Data | ||
| 24 | +@Builder | ||
| 25 | +@NoArgsConstructor | ||
| 26 | +@AllArgsConstructor | ||
| 27 | +public class IotDataRuleSourceDO { | ||
| 28 | + | ||
| 29 | + /** | ||
| 30 | + * 数据源编号 | ||
| 31 | + */ | ||
| 32 | + private Long id; | ||
| 33 | + /** | ||
| 34 | + * 数据源名称 | ||
| 35 | + */ | ||
| 36 | + private String name; | ||
| 37 | + | ||
| 38 | + /** | ||
| 39 | + * 配置数组 | ||
| 40 | + */ | ||
| 41 | + private List<Config> configs; | ||
| 42 | + | ||
| 43 | + /** | ||
| 44 | + * 配置 | ||
| 45 | + */ | ||
| 46 | + @Data | ||
| 47 | + public static class Config { | ||
| 48 | + | ||
| 49 | + /** | ||
| 50 | + * 消息方法 | ||
| 51 | + * | ||
| 52 | + * 枚举 {@link IotDeviceMessageMethodEnum} 中的 upstream 上行部分 | ||
| 53 | + */ | ||
| 54 | + private String method; | ||
| 55 | + | ||
| 56 | + /** | ||
| 57 | + * 产品编号 | ||
| 58 | + * | ||
| 59 | + * 关联 {@link IotProductDO#getId()} | ||
| 60 | + */ | ||
| 61 | + private Long productId; | ||
| 62 | + /** | ||
| 63 | + * 设备编号 | ||
| 64 | + * | ||
| 65 | + * 关联 {@link IotDeviceDO#getId()} | ||
| 66 | + * 特殊:如果为 {@link IotDeviceDO#DEVICE_ID_ALL} 时,则是全部设备 | ||
| 67 | + */ | ||
| 68 | + private Long deviceId; | ||
| 69 | + | ||
| 70 | + /** | ||
| 71 | + * 标识符 | ||
| 72 | + * | ||
| 73 | + * 1. 物模型时,对应:{@link IotThingModelDO#getIdentifier()} | ||
| 74 | + */ | ||
| 75 | + private String identifier; | ||
| 76 | + | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | +} |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotRuleSceneDO.java
| @@ -201,7 +201,7 @@ public class IotRuleSceneDO extends TenantBaseDO { | @@ -201,7 +201,7 @@ public class IotRuleSceneDO extends TenantBaseDO { | ||
| 201 | * 数据桥接编号 | 201 | * 数据桥接编号 |
| 202 | * | 202 | * |
| 203 | * 必填:当 {@link #type} 为 {@link IotRuleSceneActionTypeEnum#DATA_BRIDGE} 时 | 203 | * 必填:当 {@link #type} 为 {@link IotRuleSceneActionTypeEnum#DATA_BRIDGE} 时 |
| 204 | - * 关联:{@link IotDataBridgeDO#getId()} | 204 | + * 关联:{@link IotDataRuleSinkDO#getId()} |
| 205 | */ | 205 | */ |
| 206 | private Long dataBridgeId; | 206 | private Long dataBridgeId; |
| 207 | 207 |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotRuleScene2DO.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotSceneRuleDO.java
| 1 | package cn.iocoder.yudao.module.iot.dal.dataobject.rule; | 1 | package cn.iocoder.yudao.module.iot.dal.dataobject.rule; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 3 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; | 4 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; |
| 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; | 5 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 5 | import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO; | 6 | import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO; |
| @@ -25,38 +26,35 @@ import java.util.List; | @@ -25,38 +26,35 @@ import java.util.List; | ||
| 25 | /** | 26 | /** |
| 26 | * IoT 场景联动 DO | 27 | * IoT 场景联动 DO |
| 27 | * | 28 | * |
| 29 | + * 基于 {@link Trigger} 触发 {@link Action} | ||
| 30 | + * | ||
| 28 | * @author 芋道源码 | 31 | * @author 芋道源码 |
| 29 | */ | 32 | */ |
| 30 | -@TableName(value = "iot_rule_scene2", autoResultMap = true) | ||
| 31 | -@KeySequence("iot_rule_scene_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 | 33 | +@TableName(value = "iot_scene_rule", autoResultMap = true) |
| 34 | +@KeySequence("iot_scene_rule_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 | ||
| 32 | @Data | 35 | @Data |
| 33 | @Builder | 36 | @Builder |
| 34 | @NoArgsConstructor | 37 | @NoArgsConstructor |
| 35 | @AllArgsConstructor | 38 | @AllArgsConstructor |
| 36 | -public class IotRuleScene2DO extends TenantBaseDO { | ||
| 37 | - | ||
| 38 | - /** | ||
| 39 | - * 设备编号 - 全部设备 | ||
| 40 | - */ | ||
| 41 | - public static final Long DEVICE_ID_ALL = 0L; | 39 | +public class IotSceneRuleDO extends TenantBaseDO { |
| 42 | 40 | ||
| 43 | /** | 41 | /** |
| 44 | - * 场景编号 | 42 | + * 场景联动编号 |
| 45 | */ | 43 | */ |
| 46 | @TableId | 44 | @TableId |
| 47 | private Long id; | 45 | private Long id; |
| 48 | /** | 46 | /** |
| 49 | - * 场景名称 | 47 | + * 场景联动名称 |
| 50 | */ | 48 | */ |
| 51 | private String name; | 49 | private String name; |
| 52 | /** | 50 | /** |
| 53 | - * 场景描述 | 51 | + * 场景联动描述 |
| 54 | */ | 52 | */ |
| 55 | private String description; | 53 | private String description; |
| 56 | /** | 54 | /** |
| 57 | - * 场景状态 | 55 | + * 场景联动状态 |
| 58 | * | 56 | * |
| 59 | - * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} | 57 | + * 枚举 {@link CommonStatusEnum} |
| 60 | */ | 58 | */ |
| 61 | private Integer status; | 59 | private Integer status; |
| 62 | 60 | ||
| @@ -103,7 +101,7 @@ public class IotRuleScene2DO extends TenantBaseDO { | @@ -103,7 +101,7 @@ public class IotRuleScene2DO extends TenantBaseDO { | ||
| 103 | * 设备编号 | 101 | * 设备编号 |
| 104 | * | 102 | * |
| 105 | * 关联 {@link IotDeviceDO#getId()} | 103 | * 关联 {@link IotDeviceDO#getId()} |
| 106 | - * 特殊:如果为 0,则是全部 | 104 | + * 特殊:如果为 {@link IotDeviceDO#DEVICE_ID_ALL} 时,则是全部设备 |
| 107 | */ | 105 | */ |
| 108 | private Long deviceId; | 106 | private Long deviceId; |
| 109 | /** | 107 | /** |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/rule/IotDataBridgeMapper.java
| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgePageReqVO; | 6 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgePageReqVO; |
| 7 | -import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataBridgeDO; | 7 | +import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataRuleSinkDO; |
| 8 | import org.apache.ibatis.annotations.Mapper; | 8 | import org.apache.ibatis.annotations.Mapper; |
| 9 | 9 | ||
| 10 | import java.util.List; | 10 | import java.util.List; |
| @@ -15,20 +15,20 @@ import java.util.List; | @@ -15,20 +15,20 @@ import java.util.List; | ||
| 15 | * @author HUIHUI | 15 | * @author HUIHUI |
| 16 | */ | 16 | */ |
| 17 | @Mapper | 17 | @Mapper |
| 18 | -public interface IotDataBridgeMapper extends BaseMapperX<IotDataBridgeDO> { | 18 | +public interface IotDataBridgeMapper extends BaseMapperX<IotDataRuleSinkDO> { |
| 19 | 19 | ||
| 20 | - default PageResult<IotDataBridgeDO> selectPage(IotDataBridgePageReqVO reqVO) { | ||
| 21 | - return selectPage(reqVO, new LambdaQueryWrapperX<IotDataBridgeDO>() | ||
| 22 | - .likeIfPresent(IotDataBridgeDO::getName, reqVO.getName()) | ||
| 23 | - .eqIfPresent(IotDataBridgeDO::getStatus, reqVO.getStatus()) | ||
| 24 | - .betweenIfPresent(IotDataBridgeDO::getCreateTime, reqVO.getCreateTime()) | ||
| 25 | - .orderByDesc(IotDataBridgeDO::getId)); | 20 | + default PageResult<IotDataRuleSinkDO> selectPage(IotDataBridgePageReqVO reqVO) { |
| 21 | + return selectPage(reqVO, new LambdaQueryWrapperX<IotDataRuleSinkDO>() | ||
| 22 | + .likeIfPresent(IotDataRuleSinkDO::getName, reqVO.getName()) | ||
| 23 | + .eqIfPresent(IotDataRuleSinkDO::getStatus, reqVO.getStatus()) | ||
| 24 | + .betweenIfPresent(IotDataRuleSinkDO::getCreateTime, reqVO.getCreateTime()) | ||
| 25 | + .orderByDesc(IotDataRuleSinkDO::getId)); | ||
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | - default List<IotDataBridgeDO> selectList(Integer status) { | ||
| 29 | - return selectList(new LambdaQueryWrapperX<IotDataBridgeDO>() | ||
| 30 | - .eqIfPresent(IotDataBridgeDO::getStatus, status) | ||
| 31 | - .orderByDesc(IotDataBridgeDO::getId)); | 28 | + default List<IotDataRuleSinkDO> selectList(Integer status) { |
| 29 | + return selectList(new LambdaQueryWrapperX<IotDataRuleSinkDO>() | ||
| 30 | + .eqIfPresent(IotDataRuleSinkDO::getStatus, status) | ||
| 31 | + .orderByDesc(IotDataRuleSinkDO::getId)); | ||
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | } | 34 | } |
| 35 | \ No newline at end of file | 35 | \ No newline at end of file |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/IotDataBridgeService.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.service.rule; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.service.rule; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgePageReqVO; | 4 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgePageReqVO; |
| 5 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgeSaveReqVO; | 5 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgeSaveReqVO; |
| 6 | -import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataBridgeDO; | 6 | +import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataRuleSinkDO; |
| 7 | import jakarta.validation.Valid; | 7 | import jakarta.validation.Valid; |
| 8 | 8 | ||
| 9 | import java.util.List; | 9 | import java.util.List; |
| @@ -43,7 +43,7 @@ public interface IotDataBridgeService { | @@ -43,7 +43,7 @@ public interface IotDataBridgeService { | ||
| 43 | * @param id 编号 | 43 | * @param id 编号 |
| 44 | * @return 数据桥梁 | 44 | * @return 数据桥梁 |
| 45 | */ | 45 | */ |
| 46 | - IotDataBridgeDO getDataBridge(Long id); | 46 | + IotDataRuleSinkDO getDataBridge(Long id); |
| 47 | 47 | ||
| 48 | /** | 48 | /** |
| 49 | * 获得数据桥梁分页 | 49 | * 获得数据桥梁分页 |
| @@ -51,7 +51,7 @@ public interface IotDataBridgeService { | @@ -51,7 +51,7 @@ public interface IotDataBridgeService { | ||
| 51 | * @param pageReqVO 分页查询 | 51 | * @param pageReqVO 分页查询 |
| 52 | * @return 数据桥梁分页 | 52 | * @return 数据桥梁分页 |
| 53 | */ | 53 | */ |
| 54 | - PageResult<IotDataBridgeDO> getDataBridgePage(IotDataBridgePageReqVO pageReqVO); | 54 | + PageResult<IotDataRuleSinkDO> getDataBridgePage(IotDataBridgePageReqVO pageReqVO); |
| 55 | 55 | ||
| 56 | /** | 56 | /** |
| 57 | * 获取数据桥梁列表 | 57 | * 获取数据桥梁列表 |
| @@ -59,6 +59,6 @@ public interface IotDataBridgeService { | @@ -59,6 +59,6 @@ public interface IotDataBridgeService { | ||
| 59 | * @param status 状态,如果为空,则不进行筛选 | 59 | * @param status 状态,如果为空,则不进行筛选 |
| 60 | * @return 数据桥梁列表 | 60 | * @return 数据桥梁列表 |
| 61 | */ | 61 | */ |
| 62 | - List<IotDataBridgeDO> getDataBridgeList(Integer status); | 62 | + List<IotDataRuleSinkDO> getDataBridgeList(Integer status); |
| 63 | 63 | ||
| 64 | } | 64 | } |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/IotDataBridgeServiceImpl.java
| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | 4 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 5 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgePageReqVO; | 5 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgePageReqVO; |
| 6 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgeSaveReqVO; | 6 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.IotDataBridgeSaveReqVO; |
| 7 | -import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataBridgeDO; | 7 | +import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataRuleSinkDO; |
| 8 | import cn.iocoder.yudao.module.iot.dal.mysql.rule.IotDataBridgeMapper; | 8 | import cn.iocoder.yudao.module.iot.dal.mysql.rule.IotDataBridgeMapper; |
| 9 | import jakarta.annotation.Resource; | 9 | import jakarta.annotation.Resource; |
| 10 | import org.springframework.stereotype.Service; | 10 | import org.springframework.stereotype.Service; |
| @@ -30,7 +30,7 @@ public class IotDataBridgeServiceImpl implements IotDataBridgeService { | @@ -30,7 +30,7 @@ public class IotDataBridgeServiceImpl implements IotDataBridgeService { | ||
| 30 | @Override | 30 | @Override |
| 31 | public Long createDataBridge(IotDataBridgeSaveReqVO createReqVO) { | 31 | public Long createDataBridge(IotDataBridgeSaveReqVO createReqVO) { |
| 32 | // 插入 | 32 | // 插入 |
| 33 | - IotDataBridgeDO dataBridge = BeanUtils.toBean(createReqVO, IotDataBridgeDO.class); | 33 | + IotDataRuleSinkDO dataBridge = BeanUtils.toBean(createReqVO, IotDataRuleSinkDO.class); |
| 34 | dataBridgeMapper.insert(dataBridge); | 34 | dataBridgeMapper.insert(dataBridge); |
| 35 | // 返回 | 35 | // 返回 |
| 36 | return dataBridge.getId(); | 36 | return dataBridge.getId(); |
| @@ -41,7 +41,7 @@ public class IotDataBridgeServiceImpl implements IotDataBridgeService { | @@ -41,7 +41,7 @@ public class IotDataBridgeServiceImpl implements IotDataBridgeService { | ||
| 41 | // 校验存在 | 41 | // 校验存在 |
| 42 | validateDataBridgeExists(updateReqVO.getId()); | 42 | validateDataBridgeExists(updateReqVO.getId()); |
| 43 | // 更新 | 43 | // 更新 |
| 44 | - IotDataBridgeDO updateObj = BeanUtils.toBean(updateReqVO, IotDataBridgeDO.class); | 44 | + IotDataRuleSinkDO updateObj = BeanUtils.toBean(updateReqVO, IotDataRuleSinkDO.class); |
| 45 | dataBridgeMapper.updateById(updateObj); | 45 | dataBridgeMapper.updateById(updateObj); |
| 46 | } | 46 | } |
| 47 | 47 | ||
| @@ -60,17 +60,17 @@ public class IotDataBridgeServiceImpl implements IotDataBridgeService { | @@ -60,17 +60,17 @@ public class IotDataBridgeServiceImpl implements IotDataBridgeService { | ||
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | @Override | 62 | @Override |
| 63 | - public IotDataBridgeDO getDataBridge(Long id) { | 63 | + public IotDataRuleSinkDO getDataBridge(Long id) { |
| 64 | return dataBridgeMapper.selectById(id); | 64 | return dataBridgeMapper.selectById(id); |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | @Override | 67 | @Override |
| 68 | - public PageResult<IotDataBridgeDO> getDataBridgePage(IotDataBridgePageReqVO pageReqVO) { | 68 | + public PageResult<IotDataRuleSinkDO> getDataBridgePage(IotDataBridgePageReqVO pageReqVO) { |
| 69 | return dataBridgeMapper.selectPage(pageReqVO); | 69 | return dataBridgeMapper.selectPage(pageReqVO); |
| 70 | } | 70 | } |
| 71 | 71 | ||
| 72 | @Override | 72 | @Override |
| 73 | - public List<IotDataBridgeDO> getDataBridgeList(Integer status) { | 73 | + public List<IotDataRuleSinkDO> getDataBridgeList(Integer status) { |
| 74 | return dataBridgeMapper.selectList(status); | 74 | return dataBridgeMapper.selectList(status); |
| 75 | } | 75 | } |
| 76 | 76 |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/action/IotRuleSceneDataBridgeAction.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action; | ||
| 3 | import cn.hutool.core.lang.Assert; | 3 | import cn.hutool.core.lang.Assert; |
| 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; | 5 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 6 | -import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataBridgeDO; | 6 | +import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataRuleSinkDO; |
| 7 | import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotRuleSceneDO; | 7 | import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotRuleSceneDO; |
| 8 | import cn.iocoder.yudao.module.iot.enums.rule.IotRuleSceneActionTypeEnum; | 8 | import cn.iocoder.yudao.module.iot.enums.rule.IotRuleSceneActionTypeEnum; |
| 9 | import cn.iocoder.yudao.module.iot.service.rule.IotDataBridgeService; | 9 | import cn.iocoder.yudao.module.iot.service.rule.IotDataBridgeService; |
| @@ -36,7 +36,7 @@ public class IotRuleSceneDataBridgeAction implements IotRuleSceneAction { | @@ -36,7 +36,7 @@ public class IotRuleSceneDataBridgeAction implements IotRuleSceneAction { | ||
| 36 | } | 36 | } |
| 37 | // 1.2 获得数据桥梁 | 37 | // 1.2 获得数据桥梁 |
| 38 | Assert.notNull(config.getDataBridgeId(), "数据桥梁编号不能为空"); | 38 | Assert.notNull(config.getDataBridgeId(), "数据桥梁编号不能为空"); |
| 39 | - IotDataBridgeDO dataBridge = dataBridgeService.getDataBridge(config.getDataBridgeId()); | 39 | + IotDataRuleSinkDO dataBridge = dataBridgeService.getDataBridge(config.getDataBridgeId()); |
| 40 | if (dataBridge == null || dataBridge.getConfig() == null) { | 40 | if (dataBridge == null || dataBridge.getConfig() == null) { |
| 41 | log.error("[execute][message({}) config({}) 对应的数据桥梁不存在]", message, config); | 41 | log.error("[execute][message({}) config({}) 对应的数据桥梁不存在]", message, config); |
| 42 | return; | 42 | return; |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/action/databridge/AbstractCacheableDataBridgeExecute.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | ||
| 2 | 2 | ||
| 3 | import cn.hutool.core.util.ObjUtil; | 3 | import cn.hutool.core.util.ObjUtil; |
| 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; | 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 5 | -import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataBridgeDO; | 5 | +import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataRuleSinkDO; |
| 6 | import com.google.common.cache.CacheBuilder; | 6 | import com.google.common.cache.CacheBuilder; |
| 7 | import com.google.common.cache.CacheLoader; | 7 | import com.google.common.cache.CacheLoader; |
| 8 | import com.google.common.cache.LoadingCache; | 8 | import com.google.common.cache.LoadingCache; |
| @@ -100,7 +100,7 @@ public abstract class AbstractCacheableDataBridgeExecute<Config, Producer> imple | @@ -100,7 +100,7 @@ public abstract class AbstractCacheableDataBridgeExecute<Config, Producer> imple | ||
| 100 | 100 | ||
| 101 | @Override | 101 | @Override |
| 102 | @SuppressWarnings({"unchecked"}) | 102 | @SuppressWarnings({"unchecked"}) |
| 103 | - public void execute(IotDeviceMessage message, IotDataBridgeDO dataBridge) { | 103 | + public void execute(IotDeviceMessage message, IotDataRuleSinkDO dataBridge) { |
| 104 | if (ObjUtil.notEqual(dataBridge.getType(), getType())) { | 104 | if (ObjUtil.notEqual(dataBridge.getType(), getType())) { |
| 105 | return; | 105 | return; |
| 106 | } | 106 | } |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/action/databridge/IotDataBridgeExecute.java
| 1 | package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | 1 | package cn.iocoder.yudao.module.iot.service.rule.action.databridge; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; | 3 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 4 | -import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataBridgeDO; | 4 | +import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataRuleSinkDO; |
| 5 | 5 | ||
| 6 | /** | 6 | /** |
| 7 | * IoT 数据桥梁的执行器 execute 接口 | 7 | * IoT 数据桥梁的执行器 execute 接口 |
| @@ -24,7 +24,7 @@ public interface IotDataBridgeExecute<Config> { | @@ -24,7 +24,7 @@ public interface IotDataBridgeExecute<Config> { | ||
| 24 | * @param dataBridge 数据桥梁 | 24 | * @param dataBridge 数据桥梁 |
| 25 | */ | 25 | */ |
| 26 | @SuppressWarnings({"unchecked"}) | 26 | @SuppressWarnings({"unchecked"}) |
| 27 | - default void execute(IotDeviceMessage message, IotDataBridgeDO dataBridge) throws Exception { | 27 | + default void execute(IotDeviceMessage message, IotDataRuleSinkDO dataBridge) throws Exception { |
| 28 | // 1.1 校验数据桥梁类型 | 28 | // 1.1 校验数据桥梁类型 |
| 29 | if (!getType().equals(dataBridge.getType())) { | 29 | if (!getType().equals(dataBridge.getType())) { |
| 30 | return; | 30 | return; |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/action/databridge/IotHttpDataBridgeExecute.java
| @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.common.util.http.HttpUtils; | @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.common.util.http.HttpUtils; | ||
| 5 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | 5 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 6 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeHttpConfig; | 6 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeHttpConfig; |
| 7 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; | 7 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 8 | -import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeTypeEnum; | 8 | +import cn.iocoder.yudao.module.iot.enums.rule.IotDataRuleSinkTypeEnum; |
| 9 | import jakarta.annotation.Resource; | 9 | import jakarta.annotation.Resource; |
| 10 | import lombok.extern.slf4j.Slf4j; | 10 | import lombok.extern.slf4j.Slf4j; |
| 11 | import org.springframework.http.*; | 11 | import org.springframework.http.*; |
| @@ -30,7 +30,7 @@ public class IotHttpDataBridgeExecute implements IotDataBridgeExecute<IotDataBri | @@ -30,7 +30,7 @@ public class IotHttpDataBridgeExecute implements IotDataBridgeExecute<IotDataBri | ||
| 30 | 30 | ||
| 31 | @Override | 31 | @Override |
| 32 | public Integer getType() { | 32 | public Integer getType() { |
| 33 | - return IotDataBridgeTypeEnum.HTTP.getType(); | 33 | + return IotDataRuleSinkTypeEnum.HTTP.getType(); |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | @Override | 36 | @Override |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/action/databridge/IotKafkaMQDataBridgeExecute.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeKafkaMQConfig; | 3 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeKafkaMQConfig; |
| 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; | 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 5 | -import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeTypeEnum; | 5 | +import cn.iocoder.yudao.module.iot.enums.rule.IotDataRuleSinkTypeEnum; |
| 6 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.apache.kafka.clients.producer.ProducerConfig; | 7 | import org.apache.kafka.clients.producer.ProducerConfig; |
| 8 | import org.apache.kafka.common.serialization.StringSerializer; | 8 | import org.apache.kafka.common.serialization.StringSerializer; |
| @@ -31,7 +31,7 @@ public class IotKafkaMQDataBridgeExecute extends | @@ -31,7 +31,7 @@ public class IotKafkaMQDataBridgeExecute extends | ||
| 31 | 31 | ||
| 32 | @Override | 32 | @Override |
| 33 | public Integer getType() { | 33 | public Integer getType() { |
| 34 | - return IotDataBridgeTypeEnum.KAFKA.getType(); | 34 | + return IotDataRuleSinkTypeEnum.KAFKA.getType(); |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | @Override | 37 | @Override |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/action/databridge/IotRabbitMQDataBridgeExecute.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeRabbitMQConfig; | 3 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeRabbitMQConfig; |
| 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; | 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 5 | -import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeTypeEnum; | 5 | +import cn.iocoder.yudao.module.iot.enums.rule.IotDataRuleSinkTypeEnum; |
| 6 | import com.rabbitmq.client.Channel; | 6 | import com.rabbitmq.client.Channel; |
| 7 | import com.rabbitmq.client.Connection; | 7 | import com.rabbitmq.client.Connection; |
| 8 | import com.rabbitmq.client.ConnectionFactory; | 8 | import com.rabbitmq.client.ConnectionFactory; |
| @@ -26,7 +26,7 @@ public class IotRabbitMQDataBridgeExecute extends | @@ -26,7 +26,7 @@ public class IotRabbitMQDataBridgeExecute extends | ||
| 26 | 26 | ||
| 27 | @Override | 27 | @Override |
| 28 | public Integer getType() { | 28 | public Integer getType() { |
| 29 | - return IotDataBridgeTypeEnum.RABBITMQ.getType(); | 29 | + return IotDataRuleSinkTypeEnum.RABBITMQ.getType(); |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | @Override | 32 | @Override |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/action/databridge/IotRedisStreamDataBridgeExecute.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | ||
| 3 | import cn.hutool.core.util.StrUtil; | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeRedisStreamConfig; | 4 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeRedisStreamConfig; |
| 5 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; | 5 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 6 | -import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeTypeEnum; | 6 | +import cn.iocoder.yudao.module.iot.enums.rule.IotDataRuleSinkTypeEnum; |
| 7 | import lombok.extern.slf4j.Slf4j; | 7 | import lombok.extern.slf4j.Slf4j; |
| 8 | import org.redisson.Redisson; | 8 | import org.redisson.Redisson; |
| 9 | import org.redisson.api.RedissonClient; | 9 | import org.redisson.api.RedissonClient; |
| @@ -29,7 +29,7 @@ public class IotRedisStreamDataBridgeExecute extends | @@ -29,7 +29,7 @@ public class IotRedisStreamDataBridgeExecute extends | ||
| 29 | 29 | ||
| 30 | @Override | 30 | @Override |
| 31 | public Integer getType() { | 31 | public Integer getType() { |
| 32 | - return IotDataBridgeTypeEnum.REDIS_STREAM.getType(); | 32 | + return IotDataRuleSinkTypeEnum.REDIS_STREAM.getType(); |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | @Override | 35 | @Override |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/action/databridge/IotRocketMQDataBridgeExecute.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeRocketMQConfig; | 3 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeRocketMQConfig; |
| 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; | 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 5 | -import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeTypeEnum; | 5 | +import cn.iocoder.yudao.module.iot.enums.rule.IotDataRuleSinkTypeEnum; |
| 6 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.apache.rocketmq.client.producer.DefaultMQProducer; | 7 | import org.apache.rocketmq.client.producer.DefaultMQProducer; |
| 8 | import org.apache.rocketmq.client.producer.SendResult; | 8 | import org.apache.rocketmq.client.producer.SendResult; |
| @@ -25,7 +25,7 @@ public class IotRocketMQDataBridgeExecute extends | @@ -25,7 +25,7 @@ public class IotRocketMQDataBridgeExecute extends | ||
| 25 | 25 | ||
| 26 | @Override | 26 | @Override |
| 27 | public Integer getType() { | 27 | public Integer getType() { |
| 28 | - return IotDataBridgeTypeEnum.ROCKETMQ.getType(); | 28 | + return IotDataRuleSinkTypeEnum.ROCKETMQ.getType(); |
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | @Override | 31 | @Override |
yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/action/databridge/IotDataBridgeExecuteTest.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.service.rule.action.databridge; | ||
| 3 | import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; | 3 | import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; |
| 4 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.*; | 4 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.*; |
| 5 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; | 5 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 6 | -import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataBridgeDO; | 6 | +import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotDataRuleSinkDO; |
| 7 | import lombok.extern.slf4j.Slf4j; | 7 | import lombok.extern.slf4j.Slf4j; |
| 8 | import org.junit.jupiter.api.BeforeEach; | 8 | import org.junit.jupiter.api.BeforeEach; |
| 9 | import org.junit.jupiter.api.Disabled; | 9 | import org.junit.jupiter.api.Disabled; |
| @@ -129,7 +129,7 @@ public class IotDataBridgeExecuteTest extends BaseMockitoUnitTest { | @@ -129,7 +129,7 @@ public class IotDataBridgeExecuteTest extends BaseMockitoUnitTest { | ||
| 129 | 129 | ||
| 130 | // 3. 执行测试 | 130 | // 3. 执行测试 |
| 131 | log.info("[testHttpDataBridge][执行HTTP数据桥接测试]"); | 131 | log.info("[testHttpDataBridge][执行HTTP数据桥接测试]"); |
| 132 | - httpDataBridgeExecute.execute(message, new IotDataBridgeDO() | 132 | + httpDataBridgeExecute.execute(message, new IotDataRuleSinkDO() |
| 133 | .setType(httpDataBridgeExecute.getType()).setConfig(config)); | 133 | .setType(httpDataBridgeExecute.getType()).setConfig(config)); |
| 134 | } | 134 | } |
| 135 | 135 | ||
| @@ -144,10 +144,10 @@ public class IotDataBridgeExecuteTest extends BaseMockitoUnitTest { | @@ -144,10 +144,10 @@ public class IotDataBridgeExecuteTest extends BaseMockitoUnitTest { | ||
| 144 | private void executeAndVerifyCache(IotDataBridgeExecute<?> action, IotDataBridgeAbstractConfig config, String type) | 144 | private void executeAndVerifyCache(IotDataBridgeExecute<?> action, IotDataBridgeAbstractConfig config, String type) |
| 145 | throws Exception { | 145 | throws Exception { |
| 146 | log.info("[test{}DataBridge][第一次执行,应该会创建新的 producer]", type); | 146 | log.info("[test{}DataBridge][第一次执行,应该会创建新的 producer]", type); |
| 147 | - action.execute(message, new IotDataBridgeDO().setType(action.getType()).setConfig(config)); | 147 | + action.execute(message, new IotDataRuleSinkDO().setType(action.getType()).setConfig(config)); |
| 148 | 148 | ||
| 149 | log.info("[test{}DataBridge][第二次执行,应该会复用缓存的 producer]", type); | 149 | log.info("[test{}DataBridge][第二次执行,应该会复用缓存的 producer]", type); |
| 150 | - action.execute(message, new IotDataBridgeDO().setType(action.getType()).setConfig(config)); | 150 | + action.execute(message, new IotDataRuleSinkDO().setType(action.getType()).setConfig(config)); |
| 151 | } | 151 | } |
| 152 | 152 | ||
| 153 | } | 153 | } |