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