Переглянути джерело

【代码评审】IoT:OTA 的实现

YunaiV 5 місяців тому
батько
коміт
b6c7937aeb
21 змінених файлів з 39 додано та 31 видалено
  1. 4 1
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/IotDataBridgePageReqVO.java
  2. 1 2
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/IotDataBridgeRespVO.java
  3. 1 1
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeAbstractConfig.java
  4. 1 1
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeHttpConfig.java
  5. 1 1
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeKafkaMQConfig.java
  6. 1 1
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeMqttConfig.java
  7. 1 1
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeRabbitMQConfig.java
  8. 2 1
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeRedisStreamMQConfig.java
  9. 1 1
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeRocketMQConfig.java
  10. 1 0
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/package-info.java
  11. 4 2
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/statistics/IotStatisticsController.java
  12. 1 1
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelEvent.java
  13. 1 1
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelProperty.java
  14. 1 1
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelService.java
  15. 5 5
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/dataType/ThingModelArrayDataSpecs.java
  16. 5 4
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/dataType/ThingModelBoolOrEnumDataSpecs.java
  17. 1 1
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/dataType/ThingModelDataSpecs.java
  18. 2 2
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/dataType/ThingModelDateOrTextDataSpecs.java
  19. 2 2
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/dataType/ThingModelNumericDataSpec.java
  20. 2 2
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/dataType/ThingModelStructDataSpecs.java
  21. 1 0
      yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/data/IotDeviceLogService.java

+ 4 - 1
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/IotDataBridgePageReqVO.java

@@ -1,6 +1,8 @@
 package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge;
 
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.validation.InEnum;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -16,7 +18,8 @@ public class IotDataBridgePageReqVO extends PageParam {
     @Schema(description = "桥梁名称", example = "赵六")
     private String name;
 
-    @Schema(description = "桥梁状态", example = "2")
+    @Schema(description = "桥梁状态", example = "1")
+    @InEnum(CommonStatusEnum.class)
     private Integer status;
 
     @Schema(description = "创建时间")

+ 1 - 2
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/IotDataBridgeRespVO.java

@@ -1,7 +1,6 @@
 package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge;
 
 import cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config.IotDataBridgeAbstractConfig;
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -20,7 +19,7 @@ public class IotDataBridgeRespVO {
     @Schema(description = "桥梁描述", example = "随便")
     private String description;
 
-    @Schema(description = "桥梁状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @Schema(description = "桥梁状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Integer status;
 
     @Schema(description = "桥梁方向", requiredMode = Schema.RequiredMode.REQUIRED)

+ 1 - 1
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;
 import lombok.Data;
 
 /**
- * 抽象类 IotDataBridgeConfig
+ * IoT IotDataBridgeConfig 抽象类
  *
  * 用于表示数据桥梁配置数据的通用类型,根据具体的 "type" 字段动态映射到对应的子类
  * 提供多态支持,适用于不同类型的数据结构序列化和反序列化场景。

+ 1 - 1
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/databridge/config/IotDataBridgeHttpConfig.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import java.util.Map;
 
 /**
- * HTTP 配置
+ * IoT HTTP 配置 {@link IotDataBridgeAbstractConfig} 实现类
  *
  * @author HUIHUI
  */

+ 1 - 1
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;
 import lombok.Data;
 
 /**
- * Kafka 配置
+ * IoT Kafka 配置 {@link IotDataBridgeAbstractConfig} 实现类
  *
  * @author HUIHUI
  */

+ 1 - 1
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;
 import lombok.Data;
 
 /**
- * MQTT 配置
+ * IoT MQTT 配置 {@link IotDataBridgeAbstractConfig} 实现类
  *
  * @author HUIHUI
  */

+ 1 - 1
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;
 import lombok.Data;
 
 /**
- * RabbitMQ 配置
+ * IoT RabbitMQ 配置 {@link IotDataBridgeAbstractConfig} 实现类
  *
  * @author HUIHUI
  */

+ 2 - 1
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;
 
 import lombok.Data;
 
+// TODO @puhui999:MQ 可以去掉哈。stream 更精准
 /**
- * Redis Stream MQ 配置
+ * IoT Redis Stream 配置 {@link IotDataBridgeAbstractConfig} 实现类
  *
  * @author HUIHUI
  */

+ 1 - 1
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;
 import lombok.Data;
 
 /**
- * RocketMQ 配置
+ * IoT RocketMQ 配置 {@link IotDataBridgeAbstractConfig} 实现类
  *
  * @author HUIHUI
  */

+ 1 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/rule/vo/package-info.java

@@ -1 +1,2 @@
+// TODO @芋艿:占位
 package cn.iocoder.yudao.module.iot.controller.admin.rule.vo;

+ 4 - 2
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;
 import java.time.LocalDateTime;
 import java.util.Map;
 
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.*;
+
 @Tag(name = "管理后台 - IoT 数据统计")
 @RestController
 @RequestMapping("/iot/statistics")
@@ -61,7 +63,7 @@ public class IotStatisticsController {
         respVO.setDeviceOnlineCount(deviceCountMap.getOrDefault(IotDeviceStateEnum.ONLINE.getState(), 0L));
         respVO.setDeviceOfflineCount(deviceCountMap.getOrDefault(IotDeviceStateEnum.OFFLINE.getState(), 0L));
         respVO.setDeviceInactiveCount(deviceCountMap.getOrDefault(IotDeviceStateEnum.INACTIVE.getState(), 0L));
-        return CommonResult.success(respVO);
+        return success(respVO);
     }
 
     // TODO @super:要不干掉 IotStatisticsReqVO 参数,直接使用 @RequestParam 接收,简单一些。
@@ -69,7 +71,7 @@ public class IotStatisticsController {
     @Operation(summary = "获取 IoT 设备上下行消息数据统计")
     public CommonResult<IotStatisticsDeviceMessageSummaryRespVO> getIotStatisticsDeviceMessageSummary(
             @Valid IotStatisticsReqVO reqVO) {
-        return CommonResult.success(new IotStatisticsDeviceMessageSummaryRespVO()
+        return success(new IotStatisticsDeviceMessageSummaryRespVO()
                 .setDownstreamCounts(deviceLogService.getDeviceLogUpCountByHour(null, reqVO.getStartTime(), reqVO.getEndTime()))
                 .setDownstreamCounts((deviceLogService.getDeviceLogDownCountByHour(null, reqVO.getStartTime(), reqVO.getEndTime()))));
     }

+ 1 - 1
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelEvent.java

@@ -10,7 +10,7 @@ import lombok.Data;
 import java.util.List;
 
 /**
- * 物模型中的事件
+ * IoT 物模型中的事件
  *
  * @author HUIHUI
  */

+ 1 - 1
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelProperty.java

@@ -11,7 +11,7 @@ import lombok.Data;
 import java.util.List;
 
 /**
- * 物模型中的属性
+ * IoT 物模型中的属性
  *
  * dataSpecs 和 dataSpecsList 之中必须传入且只能传入一个
  *

+ 1 - 1
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/model/ThingModelService.java

@@ -10,7 +10,7 @@ import lombok.Data;
 import java.util.List;
 
 /**
- * 物模型中的服务
+ * IoT 物模型中的服务
  *
  * @author HUIHUI
  */

+ 5 - 5
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;
 import java.util.List;
 
 /**
- * 物模型数据类型为数组的 DataSpec 定义
+ * IoT 物模型数据类型为数组的 DataSpec 定义
  *
  * @author HUIHUI
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复
+@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复
 public class ThingModelArrayDataSpecs extends ThingModelDataSpecs {
 
     /**
-     * 数组中的元素个数
+     * 数组中的元素个数
      */
     private Integer size;
     /**
-     * 数组中的元素的数据类型。可选值:struct、int、float、double 或 text
+     * 数组中的元素的数据类型。可选值:struct、int、float、double 或 text
      */
     private String childDataType;
     /**
-     * 数据类型(childDataType)为列表型 struct 的数据规范存储在 dataSpecsList 中
+     * 数据类型(childDataType)为列表型 struct 的数据规范存储在 dataSpecsList 中
      * 此时 struct 取值范围为:int、float、double、text、date、enum、bool
      */
     private List<ThingModelDataSpecs> dataSpecsList;

+ 5 - 4
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;
 import lombok.EqualsAndHashCode;
 
 /**
- * 物模型数据类型为布尔型或枚举型的 DataSpec 定义
+ * IoT 物模型数据类型为布尔型或枚举型的 DataSpec 定义
  *
  * 数据类型,取值为 bool 或 enum。
  *
@@ -13,13 +13,14 @@ import lombok.EqualsAndHashCode;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复
+@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复
 public class ThingModelBoolOrEnumDataSpecs extends ThingModelDataSpecs {
 
+    // TODO @puhui999:要不写下参数校验?这样,注释可以简洁一点
     /**
      * 枚举项的名称。
-     * 可包含中文、大小写英文字母、数字、下划线(_)和短划线(-)
-     * 必须以中文、英文字母或数字开头,长度不超过 20 个字符
+     * 可包含中文、大小写英文字母、数字、下划线(_)和短划线(-)
+     * 必须以中文、英文字母或数字开头,长度不超过 20 个字符
      */
     private String name;
     /**

+ 1 - 1
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;
 import lombok.Data;
 
 /**
- * 抽象类 ThingModelDataSpecs
+ * IoT ThingModelDataSpecs 抽象类
  *
  * 用于表示物模型数据的通用类型,根据具体的 "dataType" 字段动态映射到对应的子类。
  * 提供多态支持,适用于不同类型的数据结构序列化和反序列化场景。

+ 2 - 2
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;
 import lombok.EqualsAndHashCode;
 
 /**
- * 物模型数据类型为时间型或文本型的 DataSpec 定义
+ * IoT 物模型数据类型为时间型或文本型的 DataSpec 定义
  *
  * 数据类型,取值为 date 或 text。
  *
@@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复
+@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复
 public class ThingModelDateOrTextDataSpecs extends ThingModelDataSpecs {
 
     /**

+ 2 - 2
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;
 import lombok.EqualsAndHashCode;
 
 /**
- * 物模型数据类型为数值的 DataSpec 定义
+ * IoT 物模型数据类型为数值的 DataSpec 定义
  *
  * 数据类型,取值为 int、float 或 double。
  *
@@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复
+@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复
 public class ThingModelNumericDataSpec extends ThingModelDataSpecs {
 
     /**

+ 2 - 2
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;
 import java.util.List;
 
 /**
- * 物模型数据类型为 struct 的 DataSpec 定义
+ * IoT 物模型数据类型为 struct 的 DataSpec 定义
  *
  * @author HUIHUI
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复
+@JsonIgnoreProperties({"dataType"}) // 忽略子类中的 dataType 字段,从而避免重复
 public class ThingModelStructDataSpecs extends ThingModelDataSpecs {
 
     /**

+ 1 - 0
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 {
      */
     Long getDeviceLogCount(@Nullable LocalDateTime createTime);
 
+    // TODO @super:deviceKey 是不是用不上哈?
     /**
      * 获得每个小时设备上行消息数量统计
      *