Commit 07b3ac20f613e4b1e7fd7442f802fbba72bf3d30

Authored by YunaiV
1 parent 64fefaa6

【代码评审】IOT:物模型

Showing 19 changed files with 108 additions and 48 deletions
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelArraySpecs.java deleted
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
2   -
3   -import lombok.Data;
4   -
5   -@Data
6   -public class ThingModelArraySpecs {
7   - private int size; // 数组长度
8   - private ThingModelDataType item; // 数组元素的类型
9   -}
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelEvent.java
1 1 package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
2 2  
  3 +import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType.ThingModelArgument;
3 4 import lombok.Data;
4 5 import java.util.List;
5 6  
6 7 @Data
7 8 public class ThingModelEvent {
  9 +
8 10 private String identifier;
9 11 private String name;
10   - private String type; // "info"、"alert"、"error"
  12 + /**
  13 + * 事件类型
  14 + *
  15 + * "info"、"alert"、"error"
  16 + */
  17 + private String type;
11 18 private List<ThingModelArgument> outputData;
12 19 private String description;
13 20 private String method;
  21 +
14 22 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelProperty.java
1 1 package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
2 2  
  3 +import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType.ThingModelDataType;
3 4 import lombok.Data;
4 5  
5 6 @Data
6 7 public class ThingModelProperty {
  8 +
7 9 private String identifier;
8 10 private String name;
9 11 private String accessMode; // "rw"、"r"、"w"
10   - private boolean required;
  12 + private Boolean required;
11 13 private ThingModelDataType dataType;
12 14 private String description;
  15 +
13 16 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelService.java
1 1 package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
2 2  
  3 +import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType.ThingModelArgument;
3 4 import lombok.Data;
4 5 import java.util.List;
5 6  
6 7 @Data
7 8 public class ThingModelService {
  9 +
8 10 private String identifier;
9 11 private String name;
10   - private String callType; // "sync"、"async"
  12 + /**
  13 + * 调用类型
  14 + *
  15 + * "sync"、"async"
  16 + */
  17 + private String callType;
11 18 private List<ThingModelArgument> inputData;
12 19 private List<ThingModelArgument> outputData;
13 20 private String description;
14 21 private String method;
  22 +
15 23 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelArgument.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelArgument.java
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
2 2  
3 3 import lombok.Data;
4 4  
5 5 @Data
6 6 public class ThingModelArgument {
  7 +
7 8 private String identifier;
8 9 private String name;
9 10 private ThingModelDataType dataType;
10   - private String direction; // 用于区分输入或输出参数,"input" 或 "output"
  11 + /**
  12 + * 用于区分输入或输出参数,"input" 或 "output"
  13 + */
  14 + private String direction;
11 15 private String description;
  16 +
12 17 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelArraySpecs.java 0 → 100644
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
  2 +
  3 +import lombok.Data;
  4 +
  5 +@Data
  6 +public class ThingModelArraySpecs {
  7 +
  8 + /**
  9 + * 数组长度
  10 + */
  11 + private int size;
  12 + /**
  13 + * 数组元素的类型
  14 + */
  15 + private ThingModelDataType item;
  16 +
  17 +}
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelArrayType.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelArrayType.java
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
2 2  
3 3 import lombok.Data;
4   -import lombok.EqualsAndHashCode;
5 4  
  5 +// TODO @haohao:这个是不是和别的类,不太统一哈
6 6 @Data
7   -@EqualsAndHashCode(callSuper = true)
8 7 public class ThingModelArrayType extends ThingModelDataType {
  8 +
9 9 private ThingModelArraySpecs specs;
  10 +
10 11 }
11 12  
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelBoolType.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelBoolType.java
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
2 2  
3 3 import lombok.Data;
4 4 import lombok.EqualsAndHashCode;
... ... @@ -6,5 +6,7 @@ import lombok.EqualsAndHashCode;
6 6 @Data
7 7 @EqualsAndHashCode(callSuper = true)
8 8 public class ThingModelBoolType extends ThingModelDataType {
  9 +
9 10 // Bool 类型一般不需要额外的 specs
  11 +
10 12 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelDataType.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelDataType.java
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
2 2  
3 3 import com.fasterxml.jackson.annotation.JsonSubTypes;
4 4 import com.fasterxml.jackson.annotation.JsonTypeInfo;
... ... @@ -18,5 +18,7 @@ import lombok.Data;
18 18 @JsonSubTypes.Type(value = ThingModelArrayType.class, name = "array")
19 19 })
20 20 public abstract class ThingModelDataType {
  21 +
21 22 private String type;
  23 +
22 24 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelDateType.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelDateType.java
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
2 2  
3 3 import lombok.Data;
4   -import lombok.EqualsAndHashCode;
5 4  
6 5 @Data
7   -@EqualsAndHashCode(callSuper = true)
8 6 public class ThingModelDateType extends ThingModelDataType {
  7 +
9 8 // Date 类型一般不需要额外的 specs
  9 +
10 10 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelDoubleType.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelDoubleType.java
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
2 2  
3 3 import lombok.Data;
4   -import lombok.EqualsAndHashCode;
5 4  
6 5 @Data
7   -@EqualsAndHashCode(callSuper = true)
8 6 public class ThingModelDoubleType extends ThingModelDataType {
9 7 private ThingModelDoubleSpecs specs;
10 8 }
11 9  
12 10 @Data
13 11 class ThingModelDoubleSpecs {
  12 +
14 13 private Double min;
15 14 private Double max;
16 15 private Double step;
17 16 private String unit;
  17 +
18 18 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelEnumType.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelEnumType.java
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
2 2  
3 3 import lombok.Data;
4   -import lombok.EqualsAndHashCode;
  4 +
5 5 import java.util.Map;
6 6  
7 7 @Data
8   -@EqualsAndHashCode(callSuper = true)
9 8 public class ThingModelEnumType extends ThingModelDataType {
10   - private Map<String, String> specs; // 枚举值和描述的键值对
  9 +
  10 + /**
  11 + * 枚举值和描述的键值对
  12 + */
  13 + private Map<String, String> specs;
  14 +
11 15 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelFloatType.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelFloatType.java
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
2 2  
3 3 import lombok.Data;
4 4 import lombok.EqualsAndHashCode;
... ... @@ -11,8 +11,10 @@ public class ThingModelFloatType extends ThingModelDataType {
11 11  
12 12 @Data
13 13 class ThingModelFloatSpecs {
  14 +
14 15 private Float min;
15 16 private Float max;
16 17 private Float step;
17 18 private String unit;
  19 +
18 20 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelIntType.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelIntType.java
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
2 2  
3 3 import lombok.Data;
4   -import lombok.EqualsAndHashCode;
5 4  
6 5 @Data
7   -@EqualsAndHashCode(callSuper = true)
8 6 public class ThingModelIntType extends ThingModelDataType {
9 7 private ThingModelIntSpecs specs;
10 8 }
11 9  
12 10 @Data
13 11 class ThingModelIntSpecs {
  12 +
14 13 private Integer min;
15 14 private Integer max;
16 15 private Integer step;
17 16 private String unit;
  17 +
18 18 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelStructField.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelStructField.java
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
2 2  
3 3 import lombok.Data;
4 4  
5 5 @Data
6 6 public class ThingModelStructField {
  7 +
7 8 private String identifier;
8 9 private String name;
9 10 private ThingModelDataType dataType;
10 11 private String description;
  12 +
11 13 }
12 14 \ No newline at end of file
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelStructType.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelStructType.java
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
2 2  
3 3 import lombok.Data;
4   -import lombok.EqualsAndHashCode;
  4 +
5 5 import java.util.List;
6 6  
7 7 @Data
8   -@EqualsAndHashCode(callSuper = true)
9 8 public class ThingModelStructType extends ThingModelDataType {
  9 +
10 10 private List<ThingModelStructField> specs;
  11 +
11 12 }
12 13  
13 14  
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/ThingModelTextType.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/thingModel/dataType/ThingModelTextType.java
1   -package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel;
  1 +package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType;
2 2  
3 3 import lombok.Data;
4   -import lombok.EqualsAndHashCode;
5 4  
6 5 @Data
7   -@EqualsAndHashCode(callSuper = true)
8 6 public class ThingModelTextType extends ThingModelDataType {
  7 +
9 8 private ThingModelTextSpecs specs;
  9 +
10 10 }
11 11  
12 12 @Data
13 13 class ThingModelTextSpecs {
14   - private Integer length; // 最大长度
  14 +
  15 + /**
  16 + * 最大长度
  17 + */
  18 + private Integer length;
  19 +
15 20 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/thinkmodelfunction/IotThinkModelFunctionDO.java
1 1 package cn.iocoder.yudao.module.iot.dal.dataobject.thinkmodelfunction;
2 2  
3 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO;
4 5 import com.baomidou.mybatisplus.annotation.KeySequence;
5 6 import com.baomidou.mybatisplus.annotation.TableId;
6 7 import com.baomidou.mybatisplus.annotation.TableName;
7 8 import lombok.*;
8 9  
9 10 /**
10   - * IoT 产品物模型 DO
  11 + * IoT 产品物模型功能 DO
  12 + *
  13 + * 每个 {@link IotProductDO} 和 {@link IotThinkModelFunctionDO} 是“一对多”的关系,它的每个属性、事件、服务都对应一条记录
11 14 *
12 15 * @author 芋道源码
13 16 */
14 17 @TableName("iot_think_model_function")
15 18 @KeySequence("iot_think_model_function_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
16 19 @Data
17   -@EqualsAndHashCode(callSuper = true)
18   -@ToString(callSuper = true)
19 20 @Builder
20 21 @NoArgsConstructor
21 22 @AllArgsConstructor
22 23 public class IotThinkModelFunctionDO extends BaseDO {
23 24  
24 25 /**
25   - * 产品ID
  26 + * 物模型功能编号
26 27 */
27 28 @TableId
28 29 private Long id;
29   -
  30 + // TODO @haohao:是不是有一个 identifier,需要要有哈
  31 + // TODO @haohao:name、description 属性,还有个类型
30 32 /**
31 33 * 产品标识
  34 + *
  35 + * 关联 {@link IotProductDO#getId()}
32 36 */
33 37 private Long productId;
34   -
35 38 /**
36 39 * 产品标识
  40 + *
  41 + * 关联 {@link IotProductDO#getProductKey()}
37 42 */
38 43 private String productKey;
39 44  
  45 + // TODO @haohao:是不是可以搞成 ThingModelProperty、ThingModelEvent、ThingModelService 进行存储
40 46 /**
41 47 * 属性列表
42 48 */
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thinkmodelfunction/IotThinkModelFunctionServiceImpl.java
1 1 package cn.iocoder.yudao.module.iot.service.thinkmodelfunction;
2 2  
3   -import cn.hutool.json.JSONUtil;
4 3 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.*;
  4 +import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType.ThingModelArgument;
  5 +import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType.ThingModelArraySpecs;
  6 +import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType.ThingModelArrayType;
  7 +import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType.ThingModelTextType;
5 8 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.vo.IotThinkModelFunctionSaveReqVO;
6 9 import cn.iocoder.yudao.module.iot.convert.thinkmodelfunction.IotThinkModelFunctionConvert;
7 10 import cn.iocoder.yudao.module.iot.dal.dataobject.thinkmodelfunction.IotThinkModelFunctionDO;
... ...