Commit b6c7937aebe7d0d7b216e7735eea543e97e1c683
1 parent
8203e074
【代码评审】IoT:OTA 的实现
Showing
21 changed files
with
39 additions
and
31 deletions
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/IotDataBridgePageReqVO.java
| 1 | 1 | package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 5 | +import cn.iocoder.yudao.framework.common.validation.InEnum; | |
| 4 | 6 | import io.swagger.v3.oas.annotations.media.Schema; |
| 5 | 7 | import lombok.Data; |
| 6 | 8 | import org.springframework.format.annotation.DateTimeFormat; |
| ... | ... | @@ -16,7 +18,8 @@ public class IotDataBridgePageReqVO extends PageParam { |
| 16 | 18 | @Schema(description = "桥梁名称", example = "赵六") |
| 17 | 19 | private String name; |
| 18 | 20 | |
| 19 | - @Schema(description = "桥梁状态", example = "2") | |
| 21 | + @Schema(description = "桥梁状态", example = "1") | |
| 22 | + @InEnum(CommonStatusEnum.class) | |
| 20 | 23 | private Integer status; |
| 21 | 24 | |
| 22 | 25 | @Schema(description = "创建时间") | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/IotDataBridgeRespVO.java
| 1 | 1 | package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeAbstractConfig; |
| 4 | -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | |
| 5 | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| 6 | 5 | import lombok.Data; |
| 7 | 6 | |
| ... | ... | @@ -20,7 +19,7 @@ public class IotDataBridgeRespVO { |
| 20 | 19 | @Schema(description = "桥梁描述", example = "随便") |
| 21 | 20 | private String description; |
| 22 | 21 | |
| 23 | - @Schema(description = "桥梁状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | |
| 22 | + @Schema(description = "桥梁状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | |
| 24 | 23 | private Integer status; |
| 25 | 24 | |
| 26 | 25 | @Schema(description = "桥梁方向", requiredMode = Schema.RequiredMode.REQUIRED) | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeAbstractConfig.java
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeHttpConfig.java
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeKafkaMQConfig.java
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeMqttConfig.java
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeRabbitMQConfig.java
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeRedisStreamMQConfig.java
| ... | ... | @@ -2,8 +2,9 @@ package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; |
| 2 | 2 | |
| 3 | 3 | import lombok.Data; |
| 4 | 4 | |
| 5 | +// TODO @puhui999:MQ 可以去掉哈。stream 更精准 | |
| 5 | 6 | /** |
| 6 | - * Redis Stream MQ 配置 | |
| 7 | + * IoT Redis Stream 配置 {@link IotDataBridgeAbstractConfig} 实现类 | |
| 7 | 8 | * |
| 8 | 9 | * @author HUIHUI |
| 9 | 10 | */ | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeRocketMQConfig.java
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/package-info.java
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/statistics/IotStatisticsController.java
| ... | ... | @@ -21,6 +21,8 @@ import org.springframework.web.bind.annotation.RestController; |
| 21 | 21 | import java.time.LocalDateTime; |
| 22 | 22 | import java.util.Map; |
| 23 | 23 | |
| 24 | +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.*; | |
| 25 | + | |
| 24 | 26 | @Tag(name = "管理后台 - IoT 数据统计") |
| 25 | 27 | @RestController |
| 26 | 28 | @RequestMapping("/iot/statistics") |
| ... | ... | @@ -61,7 +63,7 @@ public class IotStatisticsController { |
| 61 | 63 | respVO.setDeviceOnlineCount(deviceCountMap.getOrDefault(IotDeviceStateEnum.ONLINE.getState(), 0L)); |
| 62 | 64 | respVO.setDeviceOfflineCount(deviceCountMap.getOrDefault(IotDeviceStateEnum.OFFLINE.getState(), 0L)); |
| 63 | 65 | respVO.setDeviceInactiveCount(deviceCountMap.getOrDefault(IotDeviceStateEnum.INACTIVE.getState(), 0L)); |
| 64 | - return CommonResult.success(respVO); | |
| 66 | + return success(respVO); | |
| 65 | 67 | } |
| 66 | 68 | |
| 67 | 69 | // TODO @super:要不干掉 IotStatisticsReqVO 参数,直接使用 @RequestParam 接收,简单一些。 |
| ... | ... | @@ -69,7 +71,7 @@ public class IotStatisticsController { |
| 69 | 71 | @Operation(summary = "获取 IoT 设备上下行消息数据统计") |
| 70 | 72 | public CommonResult<IotStatisticsDeviceMessageSummaryRespVO> getIotStatisticsDeviceMessageSummary( |
| 71 | 73 | @Valid IotStatisticsReqVO reqVO) { |
| 72 | - return CommonResult.success(new IotStatisticsDeviceMessageSummaryRespVO() | |
| 74 | + return success(new IotStatisticsDeviceMessageSummaryRespVO() | |
| 73 | 75 | .setDownstreamCounts(deviceLogService.getDeviceLogUpCountByHour(null, reqVO.getStartTime(), reqVO.getEndTime())) |
| 74 | 76 | .setDownstreamCounts((deviceLogService.getDeviceLogDownCountByHour(null, reqVO.getStartTime(), reqVO.getEndTime())))); |
| 75 | 77 | } | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelEvent.java
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelProperty.java
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelService.java
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/dataType/ThingModelArrayDataSpecs.java
| ... | ... | @@ -7,25 +7,25 @@ import lombok.EqualsAndHashCode; |
| 7 | 7 | import java.util.List; |
| 8 | 8 | |
| 9 | 9 | /** |
| 10 | - * 物模型数据类型为数组的 DataSpec 定义 | |
| 10 | + * IoT 物模型数据类型为数组的 DataSpec 定义 | |
| 11 | 11 | * |
| 12 | 12 | * @author HUIHUI |
| 13 | 13 | */ |
| 14 | 14 | @Data |
| 15 | 15 | @EqualsAndHashCode(callSuper = true) |
| 16 | -@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复。 | |
| 16 | +@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复 | |
| 17 | 17 | public class ThingModelArrayDataSpecs extends ThingModelDataSpecs { |
| 18 | 18 | |
| 19 | 19 | /** |
| 20 | - * 数组中的元素个数。 | |
| 20 | + * 数组中的元素个数 | |
| 21 | 21 | */ |
| 22 | 22 | private Integer size; |
| 23 | 23 | /** |
| 24 | - * 数组中的元素的数据类型。可选值:struct、int、float、double 或 text。 | |
| 24 | + * 数组中的元素的数据类型。可选值:struct、int、float、double 或 text | |
| 25 | 25 | */ |
| 26 | 26 | private String childDataType; |
| 27 | 27 | /** |
| 28 | - * 数据类型(childDataType)为列表型 struct 的数据规范存储在 dataSpecsList 中。 | |
| 28 | + * 数据类型(childDataType)为列表型 struct 的数据规范存储在 dataSpecsList 中 | |
| 29 | 29 | * 此时 struct 取值范围为:int、float、double、text、date、enum、bool |
| 30 | 30 | */ |
| 31 | 31 | private List<ThingModelDataSpecs> dataSpecsList; | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/dataType/ThingModelBoolOrEnumDataSpecs.java
| ... | ... | @@ -5,7 +5,7 @@ import lombok.Data; |
| 5 | 5 | import lombok.EqualsAndHashCode; |
| 6 | 6 | |
| 7 | 7 | /** |
| 8 | - * 物模型数据类型为布尔型或枚举型的 DataSpec 定义 | |
| 8 | + * IoT 物模型数据类型为布尔型或枚举型的 DataSpec 定义 | |
| 9 | 9 | * |
| 10 | 10 | * 数据类型,取值为 bool 或 enum。 |
| 11 | 11 | * |
| ... | ... | @@ -13,13 +13,14 @@ import lombok.EqualsAndHashCode; |
| 13 | 13 | */ |
| 14 | 14 | @Data |
| 15 | 15 | @EqualsAndHashCode(callSuper = true) |
| 16 | -@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复。 | |
| 16 | +@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复 | |
| 17 | 17 | public class ThingModelBoolOrEnumDataSpecs extends ThingModelDataSpecs { |
| 18 | 18 | |
| 19 | + // TODO @puhui999:要不写下参数校验?这样,注释可以简洁一点 | |
| 19 | 20 | /** |
| 20 | 21 | * 枚举项的名称。 |
| 21 | - * 可包含中文、大小写英文字母、数字、下划线(_)和短划线(-)。 | |
| 22 | - * 必须以中文、英文字母或数字开头,长度不超过 20 个字符。 | |
| 22 | + * 可包含中文、大小写英文字母、数字、下划线(_)和短划线(-) | |
| 23 | + * 必须以中文、英文字母或数字开头,长度不超过 20 个字符 | |
| 23 | 24 | */ |
| 24 | 25 | private String name; |
| 25 | 26 | /** | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/dataType/ThingModelDataSpecs.java
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/dataType/ThingModelDateOrTextDataSpecs.java
| ... | ... | @@ -5,7 +5,7 @@ import lombok.Data; |
| 5 | 5 | import lombok.EqualsAndHashCode; |
| 6 | 6 | |
| 7 | 7 | /** |
| 8 | - * 物模型数据类型为时间型或文本型的 DataSpec 定义 | |
| 8 | + * IoT 物模型数据类型为时间型或文本型的 DataSpec 定义 | |
| 9 | 9 | * |
| 10 | 10 | * 数据类型,取值为 date 或 text。 |
| 11 | 11 | * |
| ... | ... | @@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode; |
| 13 | 13 | */ |
| 14 | 14 | @Data |
| 15 | 15 | @EqualsAndHashCode(callSuper = true) |
| 16 | -@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复。 | |
| 16 | +@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复 | |
| 17 | 17 | public class ThingModelDateOrTextDataSpecs extends ThingModelDataSpecs { |
| 18 | 18 | |
| 19 | 19 | /** | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/dataType/ThingModelNumericDataSpec.java
| ... | ... | @@ -5,7 +5,7 @@ import lombok.Data; |
| 5 | 5 | import lombok.EqualsAndHashCode; |
| 6 | 6 | |
| 7 | 7 | /** |
| 8 | - * 物模型数据类型为数值的 DataSpec 定义 | |
| 8 | + * IoT 物模型数据类型为数值的 DataSpec 定义 | |
| 9 | 9 | * |
| 10 | 10 | * 数据类型,取值为 int、float 或 double。 |
| 11 | 11 | * |
| ... | ... | @@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode; |
| 13 | 13 | */ |
| 14 | 14 | @Data |
| 15 | 15 | @EqualsAndHashCode(callSuper = true) |
| 16 | -@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复。 | |
| 16 | +@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复 | |
| 17 | 17 | public class ThingModelNumericDataSpec extends ThingModelDataSpecs { |
| 18 | 18 | |
| 19 | 19 | /** | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/dataType/ThingModelStructDataSpecs.java
| ... | ... | @@ -8,13 +8,13 @@ import lombok.EqualsAndHashCode; |
| 8 | 8 | import java.util.List; |
| 9 | 9 | |
| 10 | 10 | /** |
| 11 | - * 物模型数据类型为 struct 的 DataSpec 定义 | |
| 11 | + * IoT 物模型数据类型为 struct 的 DataSpec 定义 | |
| 12 | 12 | * |
| 13 | 13 | * @author HUIHUI |
| 14 | 14 | */ |
| 15 | 15 | @Data |
| 16 | 16 | @EqualsAndHashCode(callSuper = true) |
| 17 | -@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复。 | |
| 17 | +@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复 | |
| 18 | 18 | public class ThingModelStructDataSpecs extends ThingModelDataSpecs { |
| 19 | 19 | |
| 20 | 20 | /** | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/data/IotDeviceLogService.java