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: