From 9b2389356f05c26dc6d60011c7a48bbdbf40ad05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E6=B5=A9=E6=B5=A9?= <1036606149@qq.com> Date: Sun, 23 Mar 2025 22:13:21 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E3=80=91IoT:=20=E5=A2=9E=E5=8A=A0=E4=BA=A7=E5=93=81=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E8=AF=AD=E8=A8=80=E3=80=81=E7=8A=B6=E6=80=81=E5=92=8C?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=9E=9A=E4=B8=BE=EF=BC=8C=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E8=AF=B7=E6=B1=82=E5=92=8C=E5=93=8D=E5=BA=94?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E4=BB=A5=E6=94=AF=E6=8C=81=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/IotProductScriptLanguageEnum.java | 46 ++++++++++++++++ .../product/IotProductScriptStatusEnum.java | 53 +++++++++++++++++++ .../product/IotProductScriptTypeEnum.java | 50 +++++++++++++++++ .../vo/script/IotProductScriptPageReqVO.java | 13 +++-- .../vo/script/IotProductScriptRespVO.java | 10 ++-- .../vo/script/IotProductScriptSaveReqVO.java | 17 ++++-- .../vo/script/IotProductScriptTestReqVO.java | 9 ++-- .../IotProductScriptUpdateStatusReqVO.java | 5 +- .../product/IotProductScriptServiceImpl.java | 6 +-- 9 files changed, 189 insertions(+), 20 deletions(-) create mode 100644 yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductScriptLanguageEnum.java create mode 100644 yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductScriptStatusEnum.java create mode 100644 yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductScriptTypeEnum.java diff --git a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductScriptLanguageEnum.java b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductScriptLanguageEnum.java new file mode 100644 index 0000000000..cc1d751918 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductScriptLanguageEnum.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.iot.enums.product; + +import cn.iocoder.yudao.framework.common.core.ArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * IoT 产品脚本语言枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum IotProductScriptLanguageEnum implements ArrayValuable { + + JAVASCRIPT("javascript", "JavaScript"), + JAVA("java", "Java"), + PYTHON("python", "Python"), + ; + + public static final String[] ARRAYS = Arrays.stream(values()).map(IotProductScriptLanguageEnum::getCode) + .toArray(String[]::new); + + /** + * 编码 + */ + private final String code; + /** + * 名称 + */ + private final String name; + + @Override + public String[] array() { + return ARRAYS; + } + + public static IotProductScriptLanguageEnum getByCode(String code) { + return Arrays.stream(values()) + .filter(type -> type.getCode().equals(code)) + .findFirst() + .orElse(null); + } +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductScriptStatusEnum.java b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductScriptStatusEnum.java new file mode 100644 index 0000000000..086d84faa5 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductScriptStatusEnum.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.iot.enums.product; + +import cn.iocoder.yudao.framework.common.core.ArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * IoT 产品脚本状态枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum IotProductScriptStatusEnum implements ArrayValuable { + + ENABLE(0, "启用"), + DISABLE(1, "禁用"), + ; + + public static final Integer[] ARRAYS = Arrays.stream(values()).map(IotProductScriptStatusEnum::getStatus) + .toArray(Integer[]::new); + + /** + * 状态值 + */ + private final Integer status; + /** + * 状态名 + */ + private final String name; + + @Override + public Integer[] array() { + return ARRAYS; + } + + public static IotProductScriptStatusEnum getByStatus(Integer status) { + return Arrays.stream(values()) + .filter(type -> type.getStatus().equals(status)) + .findFirst() + .orElse(null); + } + + public static boolean isEnable(Integer status) { + return ENABLE.getStatus().equals(status); + } + + public static boolean isDisable(Integer status) { + return DISABLE.getStatus().equals(status); + } +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductScriptTypeEnum.java b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductScriptTypeEnum.java new file mode 100644 index 0000000000..d1b2ee8fa8 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductScriptTypeEnum.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.iot.enums.product; + +import cn.iocoder.yudao.framework.common.core.ArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * IoT 产品脚本类型枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum IotProductScriptTypeEnum implements ArrayValuable { + + PROPERTY_PARSER(1, "property_parser", "属性解析"), + EVENT_PARSER(2, "event_parser", "事件解析"), + COMMAND_ENCODER(3, "command_encoder", "命令编码"), + ; + + public static final Integer[] ARRAYS = Arrays.stream(values()).map(IotProductScriptTypeEnum::getCode) + .toArray(Integer[]::new); + + /** + * 编码 + */ + private final Integer code; + /** + * 类型 + */ + private final String type; + /** + * 名称 + */ + private final String name; + + @Override + public Integer[] array() { + return ARRAYS; + } + + public static IotProductScriptTypeEnum getByCode(Integer code) { + return Arrays.stream(values()) + .filter(type -> type.getCode().equals(code)) + .findFirst() + .orElse(null); + } +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptPageReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptPageReqVO.java index 73df10a617..d0dbe23cc2 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptPageReqVO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptPageReqVO.java @@ -1,6 +1,10 @@ package cn.iocoder.yudao.module.iot.controller.admin.product.vo.script; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.validation.InEnum; +import cn.iocoder.yudao.module.iot.enums.product.IotProductScriptLanguageEnum; +import cn.iocoder.yudao.module.iot.enums.product.IotProductScriptStatusEnum; +import cn.iocoder.yudao.module.iot.enums.product.IotProductScriptTypeEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -23,13 +27,16 @@ public class IotProductScriptPageReqVO extends PageParam { @Schema(description = "产品唯一标识符") private String productKey; - @Schema(description = "脚本类型(property_parser=属性解析,event_parser=事件解析,command_encoder=命令编码)", example = "2") - private String scriptType; + @Schema(description = "脚本类型", example = "1") + @InEnum(IotProductScriptTypeEnum.class) + private Integer scriptType; @Schema(description = "脚本语言") + @InEnum(IotProductScriptLanguageEnum.class) private String scriptLanguage; - @Schema(description = "状态(0=禁用 1=启用)", example = "2") + @Schema(description = "状态", example = "0") + @InEnum(IotProductScriptStatusEnum.class) private Integer status; @Schema(description = "备注说明", example = "你说的对") diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptRespVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptRespVO.java index 1530b1f07d..be0a5c92f6 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptRespVO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptRespVO.java @@ -24,9 +24,9 @@ public class IotProductScriptRespVO { @ExcelProperty("产品唯一标识符") private String productKey; - @Schema(description = "脚本类型(property_parser=属性解析,event_parser=事件解析,command_encoder=命令编码)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("脚本类型(property_parser=属性解析,event_parser=事件解析,command_encoder=命令编码)") - private String scriptType; + @Schema(description = "脚本类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("脚本类型") + private Integer scriptType; @Schema(description = "脚本内容", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("脚本内容") @@ -36,8 +36,8 @@ public class IotProductScriptRespVO { @ExcelProperty("脚本语言") private String scriptLanguage; - @Schema(description = "状态(0=禁用 1=启用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("状态(0=禁用 1=启用)") + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") + @ExcelProperty("状态") private Integer status; @Schema(description = "备注说明", example = "你说的对") diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptSaveReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptSaveReqVO.java index 05d685b4ac..5638795bbf 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptSaveReqVO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptSaveReqVO.java @@ -1,5 +1,9 @@ package cn.iocoder.yudao.module.iot.controller.admin.product.vo.script; +import cn.iocoder.yudao.framework.common.validation.InEnum; +import cn.iocoder.yudao.module.iot.enums.product.IotProductScriptLanguageEnum; +import cn.iocoder.yudao.module.iot.enums.product.IotProductScriptStatusEnum; +import cn.iocoder.yudao.module.iot.enums.product.IotProductScriptTypeEnum; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; @@ -20,9 +24,10 @@ public class IotProductScriptSaveReqVO { @NotEmpty(message = "产品唯一标识符不能为空") private String productKey; - @Schema(description = "脚本类型(property_parser=属性解析,event_parser=事件解析,command_encoder=命令编码)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @NotEmpty(message = "脚本类型(property_parser=属性解析,event_parser=事件解析,command_encoder=命令编码)不能为空") - private String scriptType; + @Schema(description = "脚本类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "脚本类型不能为空") + @InEnum(IotProductScriptTypeEnum.class) + private Integer scriptType; @Schema(description = "脚本内容", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "脚本内容不能为空") @@ -30,10 +35,12 @@ public class IotProductScriptSaveReqVO { @Schema(description = "脚本语言", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "脚本语言不能为空") + @InEnum(IotProductScriptLanguageEnum.class) private String scriptLanguage; - @Schema(description = "状态(0=禁用 1=启用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @NotNull(message = "状态(0=禁用 1=启用)不能为空") + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") + @NotNull(message = "状态不能为空") + @InEnum(IotProductScriptStatusEnum.class) private Integer status; @Schema(description = "备注说明", example = "你说的对") diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptTestReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptTestReqVO.java index e571b7c044..605d4af674 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptTestReqVO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptTestReqVO.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.product.vo.script; +import cn.iocoder.yudao.framework.common.validation.InEnum; +import cn.iocoder.yudao.module.iot.enums.product.IotProductScriptTypeEnum; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; @@ -16,9 +18,10 @@ public class IotProductScriptTestReqVO { @NotNull(message = "产品ID不能为空") private Long productId; - @Schema(description = "脚本类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "property_parser") - @NotEmpty(message = "脚本类型不能为空") - private String scriptType; + @Schema(description = "脚本类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "脚本类型不能为空") + @InEnum(value = IotProductScriptTypeEnum.class) + private Integer scriptType; @Schema(description = "脚本内容", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "脚本内容不能为空") diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptUpdateStatusReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptUpdateStatusReqVO.java index 823224abc8..12f02a5ca5 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptUpdateStatusReqVO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/product/vo/script/IotProductScriptUpdateStatusReqVO.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.product.vo.script; +import cn.iocoder.yudao.framework.common.validation.InEnum; +import cn.iocoder.yudao.module.iot.enums.product.IotProductScriptStatusEnum; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -12,8 +14,9 @@ public class IotProductScriptUpdateStatusReqVO { @NotNull(message = "脚本ID不能为空") private Long id; - @Schema(description = "状态(0=禁用 1=启用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") @NotNull(message = "状态不能为空") + @InEnum(IotProductScriptStatusEnum.class) private Integer status; } \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/product/IotProductScriptServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/product/IotProductScriptServiceImpl.java index d5a4aac72f..99638785d8 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/product/IotProductScriptServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/product/IotProductScriptServiceImpl.java @@ -147,14 +147,14 @@ public class IotProductScriptServiceImpl implements IotProductScriptService { // 根据脚本类型设置特定参数 switch (testReqVO.getScriptType()) { - case "property_parser": + case 1: // PROPERTY_PARSER params.put("method", "property"); break; - case "event_parser": + case 2: // EVENT_PARSER params.put("method", "event"); params.put("identifier", "default"); break; - case "command_encoder": + case 3: // COMMAND_ENCODER params.put("method", "command"); break; default: