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 | package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge; | 1 | package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 5 | +import cn.iocoder.yudao.framework.common.validation.InEnum; | ||
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | 6 | import io.swagger.v3.oas.annotations.media.Schema; |
| 5 | import lombok.Data; | 7 | import lombok.Data; |
| 6 | import org.springframework.format.annotation.DateTimeFormat; | 8 | import org.springframework.format.annotation.DateTimeFormat; |
| @@ -16,7 +18,8 @@ public class IotDataBridgePageReqVO extends PageParam { | @@ -16,7 +18,8 @@ public class IotDataBridgePageReqVO extends PageParam { | ||
| 16 | @Schema(description = "桥梁名称", example = "赵六") | 18 | @Schema(description = "桥梁名称", example = "赵六") |
| 17 | private String name; | 19 | private String name; |
| 18 | 20 | ||
| 19 | - @Schema(description = "桥梁状态", example = "2") | 21 | + @Schema(description = "桥梁状态", example = "1") |
| 22 | + @InEnum(CommonStatusEnum.class) | ||
| 20 | private Integer status; | 23 | private Integer status; |
| 21 | 24 | ||
| 22 | @Schema(description = "创建时间") | 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 | package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge; | 1 | package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeAbstractConfig; | 3 | import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeAbstractConfig; |
| 4 | -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||
| 5 | import io.swagger.v3.oas.annotations.media.Schema; | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| 6 | import lombok.Data; | 5 | import lombok.Data; |
| 7 | 6 | ||
| @@ -20,7 +19,7 @@ public class IotDataBridgeRespVO { | @@ -20,7 +19,7 @@ public class IotDataBridgeRespVO { | ||
| 20 | @Schema(description = "桥梁描述", example = "随便") | 19 | @Schema(description = "桥梁描述", example = "随便") |
| 21 | private String description; | 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 | private Integer status; | 23 | private Integer status; |
| 25 | 24 | ||
| 26 | @Schema(description = "桥梁方向", requiredMode = Schema.RequiredMode.REQUIRED) | 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
| @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; | @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; | ||
| 6 | import lombok.Data; | 6 | import lombok.Data; |
| 7 | 7 | ||
| 8 | /** | 8 | /** |
| 9 | - * 抽象类 IotDataBridgeConfig | 9 | + * IoT IotDataBridgeConfig 抽象类 |
| 10 | * | 10 | * |
| 11 | * 用于表示数据桥梁配置数据的通用类型,根据具体的 "type" 字段动态映射到对应的子类 | 11 | * 用于表示数据桥梁配置数据的通用类型,根据具体的 "type" 字段动态映射到对应的子类 |
| 12 | * 提供多态支持,适用于不同类型的数据结构序列化和反序列化场景。 | 12 | * 提供多态支持,适用于不同类型的数据结构序列化和反序列化场景。 |
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
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; | ||
| 3 | import lombok.Data; | 3 | import lombok.Data; |
| 4 | 4 | ||
| 5 | /** | 5 | /** |
| 6 | - * Kafka 配置 | 6 | + * IoT Kafka 配置 {@link IotDataBridgeAbstractConfig} 实现类 |
| 7 | * | 7 | * |
| 8 | * @author HUIHUI | 8 | * @author HUIHUI |
| 9 | */ | 9 | */ |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeMqttConfig.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; | ||
| 3 | import lombok.Data; | 3 | import lombok.Data; |
| 4 | 4 | ||
| 5 | /** | 5 | /** |
| 6 | - * MQTT 配置 | 6 | + * IoT MQTT 配置 {@link IotDataBridgeAbstractConfig} 实现类 |
| 7 | * | 7 | * |
| 8 | * @author HUIHUI | 8 | * @author HUIHUI |
| 9 | */ | 9 | */ |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeRabbitMQConfig.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; | ||
| 3 | import lombok.Data; | 3 | import lombok.Data; |
| 4 | 4 | ||
| 5 | /** | 5 | /** |
| 6 | - * RabbitMQ 配置 | 6 | + * IoT RabbitMQ 配置 {@link IotDataBridgeAbstractConfig} 实现类 |
| 7 | * | 7 | * |
| 8 | * @author HUIHUI | 8 | * @author HUIHUI |
| 9 | */ | 9 | */ |
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,8 +2,9 @@ package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; | ||
| 2 | 2 | ||
| 3 | import lombok.Data; | 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 | * @author HUIHUI | 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
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; | ||
| 3 | import lombok.Data; | 3 | import lombok.Data; |
| 4 | 4 | ||
| 5 | /** | 5 | /** |
| 6 | - * RocketMQ 配置 | 6 | + * IoT RocketMQ 配置 {@link IotDataBridgeAbstractConfig} 实现类 |
| 7 | * | 7 | * |
| 8 | * @author HUIHUI | 8 | * @author HUIHUI |
| 9 | */ | 9 | */ |
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,6 +21,8 @@ import org.springframework.web.bind.annotation.RestController; | ||
| 21 | import java.time.LocalDateTime; | 21 | import java.time.LocalDateTime; |
| 22 | import java.util.Map; | 22 | import java.util.Map; |
| 23 | 23 | ||
| 24 | +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.*; | ||
| 25 | + | ||
| 24 | @Tag(name = "管理后台 - IoT 数据统计") | 26 | @Tag(name = "管理后台 - IoT 数据统计") |
| 25 | @RestController | 27 | @RestController |
| 26 | @RequestMapping("/iot/statistics") | 28 | @RequestMapping("/iot/statistics") |
| @@ -61,7 +63,7 @@ public class IotStatisticsController { | @@ -61,7 +63,7 @@ public class IotStatisticsController { | ||
| 61 | respVO.setDeviceOnlineCount(deviceCountMap.getOrDefault(IotDeviceStateEnum.ONLINE.getState(), 0L)); | 63 | respVO.setDeviceOnlineCount(deviceCountMap.getOrDefault(IotDeviceStateEnum.ONLINE.getState(), 0L)); |
| 62 | respVO.setDeviceOfflineCount(deviceCountMap.getOrDefault(IotDeviceStateEnum.OFFLINE.getState(), 0L)); | 64 | respVO.setDeviceOfflineCount(deviceCountMap.getOrDefault(IotDeviceStateEnum.OFFLINE.getState(), 0L)); |
| 63 | respVO.setDeviceInactiveCount(deviceCountMap.getOrDefault(IotDeviceStateEnum.INACTIVE.getState(), 0L)); | 65 | respVO.setDeviceInactiveCount(deviceCountMap.getOrDefault(IotDeviceStateEnum.INACTIVE.getState(), 0L)); |
| 64 | - return CommonResult.success(respVO); | 66 | + return success(respVO); |
| 65 | } | 67 | } |
| 66 | 68 | ||
| 67 | // TODO @super:要不干掉 IotStatisticsReqVO 参数,直接使用 @RequestParam 接收,简单一些。 | 69 | // TODO @super:要不干掉 IotStatisticsReqVO 参数,直接使用 @RequestParam 接收,简单一些。 |
| @@ -69,7 +71,7 @@ public class IotStatisticsController { | @@ -69,7 +71,7 @@ public class IotStatisticsController { | ||
| 69 | @Operation(summary = "获取 IoT 设备上下行消息数据统计") | 71 | @Operation(summary = "获取 IoT 设备上下行消息数据统计") |
| 70 | public CommonResult<IotStatisticsDeviceMessageSummaryRespVO> getIotStatisticsDeviceMessageSummary( | 72 | public CommonResult<IotStatisticsDeviceMessageSummaryRespVO> getIotStatisticsDeviceMessageSummary( |
| 71 | @Valid IotStatisticsReqVO reqVO) { | 73 | @Valid IotStatisticsReqVO reqVO) { |
| 72 | - return CommonResult.success(new IotStatisticsDeviceMessageSummaryRespVO() | 74 | + return success(new IotStatisticsDeviceMessageSummaryRespVO() |
| 73 | .setDownstreamCounts(deviceLogService.getDeviceLogUpCountByHour(null, reqVO.getStartTime(), reqVO.getEndTime())) | 75 | .setDownstreamCounts(deviceLogService.getDeviceLogUpCountByHour(null, reqVO.getStartTime(), reqVO.getEndTime())) |
| 74 | .setDownstreamCounts((deviceLogService.getDeviceLogDownCountByHour(null, reqVO.getStartTime(), reqVO.getEndTime())))); | 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,25 +7,25 @@ import lombok.EqualsAndHashCode; | ||
| 7 | import java.util.List; | 7 | import java.util.List; |
| 8 | 8 | ||
| 9 | /** | 9 | /** |
| 10 | - * 物模型数据类型为数组的 DataSpec 定义 | 10 | + * IoT 物模型数据类型为数组的 DataSpec 定义 |
| 11 | * | 11 | * |
| 12 | * @author HUIHUI | 12 | * @author HUIHUI |
| 13 | */ | 13 | */ |
| 14 | @Data | 14 | @Data |
| 15 | @EqualsAndHashCode(callSuper = true) | 15 | @EqualsAndHashCode(callSuper = true) |
| 16 | -@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复。 | 16 | +@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复 |
| 17 | public class ThingModelArrayDataSpecs extends ThingModelDataSpecs { | 17 | public class ThingModelArrayDataSpecs extends ThingModelDataSpecs { |
| 18 | 18 | ||
| 19 | /** | 19 | /** |
| 20 | - * 数组中的元素个数。 | 20 | + * 数组中的元素个数 |
| 21 | */ | 21 | */ |
| 22 | private Integer size; | 22 | private Integer size; |
| 23 | /** | 23 | /** |
| 24 | - * 数组中的元素的数据类型。可选值:struct、int、float、double 或 text。 | 24 | + * 数组中的元素的数据类型。可选值:struct、int、float、double 或 text |
| 25 | */ | 25 | */ |
| 26 | private String childDataType; | 26 | private String childDataType; |
| 27 | /** | 27 | /** |
| 28 | - * 数据类型(childDataType)为列表型 struct 的数据规范存储在 dataSpecsList 中。 | 28 | + * 数据类型(childDataType)为列表型 struct 的数据规范存储在 dataSpecsList 中 |
| 29 | * 此时 struct 取值范围为:int、float、double、text、date、enum、bool | 29 | * 此时 struct 取值范围为:int、float、double、text、date、enum、bool |
| 30 | */ | 30 | */ |
| 31 | private List<ThingModelDataSpecs> dataSpecsList; | 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,7 +5,7 @@ import lombok.Data; | ||
| 5 | import lombok.EqualsAndHashCode; | 5 | import lombok.EqualsAndHashCode; |
| 6 | 6 | ||
| 7 | /** | 7 | /** |
| 8 | - * 物模型数据类型为布尔型或枚举型的 DataSpec 定义 | 8 | + * IoT 物模型数据类型为布尔型或枚举型的 DataSpec 定义 |
| 9 | * | 9 | * |
| 10 | * 数据类型,取值为 bool 或 enum。 | 10 | * 数据类型,取值为 bool 或 enum。 |
| 11 | * | 11 | * |
| @@ -13,13 +13,14 @@ import lombok.EqualsAndHashCode; | @@ -13,13 +13,14 @@ import lombok.EqualsAndHashCode; | ||
| 13 | */ | 13 | */ |
| 14 | @Data | 14 | @Data |
| 15 | @EqualsAndHashCode(callSuper = true) | 15 | @EqualsAndHashCode(callSuper = true) |
| 16 | -@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复。 | 16 | +@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复 |
| 17 | public class ThingModelBoolOrEnumDataSpecs extends ThingModelDataSpecs { | 17 | public class ThingModelBoolOrEnumDataSpecs extends ThingModelDataSpecs { |
| 18 | 18 | ||
| 19 | + // TODO @puhui999:要不写下参数校验?这样,注释可以简洁一点 | ||
| 19 | /** | 20 | /** |
| 20 | * 枚举项的名称。 | 21 | * 枚举项的名称。 |
| 21 | - * 可包含中文、大小写英文字母、数字、下划线(_)和短划线(-)。 | ||
| 22 | - * 必须以中文、英文字母或数字开头,长度不超过 20 个字符。 | 22 | + * 可包含中文、大小写英文字母、数字、下划线(_)和短划线(-) |
| 23 | + * 必须以中文、英文字母或数字开头,长度不超过 20 个字符 | ||
| 23 | */ | 24 | */ |
| 24 | private String name; | 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
| @@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; | @@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; | ||
| 5 | import lombok.Data; | 5 | import lombok.Data; |
| 6 | 6 | ||
| 7 | /** | 7 | /** |
| 8 | - * 抽象类 ThingModelDataSpecs | 8 | + * IoT ThingModelDataSpecs 抽象类 |
| 9 | * | 9 | * |
| 10 | * 用于表示物模型数据的通用类型,根据具体的 "dataType" 字段动态映射到对应的子类。 | 10 | * 用于表示物模型数据的通用类型,根据具体的 "dataType" 字段动态映射到对应的子类。 |
| 11 | * 提供多态支持,适用于不同类型的数据结构序列化和反序列化场景。 | 11 | * 提供多态支持,适用于不同类型的数据结构序列化和反序列化场景。 |
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,7 +5,7 @@ import lombok.Data; | ||
| 5 | import lombok.EqualsAndHashCode; | 5 | import lombok.EqualsAndHashCode; |
| 6 | 6 | ||
| 7 | /** | 7 | /** |
| 8 | - * 物模型数据类型为时间型或文本型的 DataSpec 定义 | 8 | + * IoT 物模型数据类型为时间型或文本型的 DataSpec 定义 |
| 9 | * | 9 | * |
| 10 | * 数据类型,取值为 date 或 text。 | 10 | * 数据类型,取值为 date 或 text。 |
| 11 | * | 11 | * |
| @@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode; | @@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode; | ||
| 13 | */ | 13 | */ |
| 14 | @Data | 14 | @Data |
| 15 | @EqualsAndHashCode(callSuper = true) | 15 | @EqualsAndHashCode(callSuper = true) |
| 16 | -@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复。 | 16 | +@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复 |
| 17 | public class ThingModelDateOrTextDataSpecs extends ThingModelDataSpecs { | 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,7 +5,7 @@ import lombok.Data; | ||
| 5 | import lombok.EqualsAndHashCode; | 5 | import lombok.EqualsAndHashCode; |
| 6 | 6 | ||
| 7 | /** | 7 | /** |
| 8 | - * 物模型数据类型为数值的 DataSpec 定义 | 8 | + * IoT 物模型数据类型为数值的 DataSpec 定义 |
| 9 | * | 9 | * |
| 10 | * 数据类型,取值为 int、float 或 double。 | 10 | * 数据类型,取值为 int、float 或 double。 |
| 11 | * | 11 | * |
| @@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode; | @@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode; | ||
| 13 | */ | 13 | */ |
| 14 | @Data | 14 | @Data |
| 15 | @EqualsAndHashCode(callSuper = true) | 15 | @EqualsAndHashCode(callSuper = true) |
| 16 | -@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复。 | 16 | +@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复 |
| 17 | public class ThingModelNumericDataSpec extends ThingModelDataSpecs { | 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,13 +8,13 @@ import lombok.EqualsAndHashCode; | ||
| 8 | import java.util.List; | 8 | import java.util.List; |
| 9 | 9 | ||
| 10 | /** | 10 | /** |
| 11 | - * 物模型数据类型为 struct 的 DataSpec 定义 | 11 | + * IoT 物模型数据类型为 struct 的 DataSpec 定义 |
| 12 | * | 12 | * |
| 13 | * @author HUIHUI | 13 | * @author HUIHUI |
| 14 | */ | 14 | */ |
| 15 | @Data | 15 | @Data |
| 16 | @EqualsAndHashCode(callSuper = true) | 16 | @EqualsAndHashCode(callSuper = true) |
| 17 | -@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复。 | 17 | +@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复 |
| 18 | public class ThingModelStructDataSpecs extends ThingModelDataSpecs { | 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
| @@ -47,6 +47,7 @@ public interface IotDeviceLogService { | @@ -47,6 +47,7 @@ public interface IotDeviceLogService { | ||
| 47 | */ | 47 | */ |
| 48 | Long getDeviceLogCount(@Nullable LocalDateTime createTime); | 48 | Long getDeviceLogCount(@Nullable LocalDateTime createTime); |
| 49 | 49 | ||
| 50 | + // TODO @super:deviceKey 是不是用不上哈? | ||
| 50 | /** | 51 | /** |
| 51 | * 获得每个小时设备上行消息数量统计 | 52 | * 获得每个小时设备上行消息数量统计 |
| 52 | * | 53 | * |