From 6a7275a4c1d0e33e310082e316313aeb9d4b7374 Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期五, 23 一月 2026 12:36:31 +0800
Subject: [PATCH] 枚举返回通用接口
---
src/main/java/com/ruoyi/common/enums/StorageAttachmentRecordType.java | 6 +
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java | 3
src/main/java/com/ruoyi/basic/utils/EnumUtils.java | 45 +++++++++++++++
src/main/java/com/ruoyi/common/enums/SalesLedgerType.java | 6 +-
src/main/java/com/ruoyi/common/utils/EnumUtil.java | 53 ++++++++---------
src/main/java/com/ruoyi/common/enums/StaffLeaveReason.java | 6 +
src/main/java/com/ruoyi/common/enums/StockRecordTypeEnum.java | 2
src/main/java/com/ruoyi/basic/controller/EnumController.java | 9 ++
src/main/java/com/ruoyi/common/enums/BaseEnum.java | 8 +-
src/main/java/com/ruoyi/basic/dto/SelectOptionDTO.java | 14 ++++
src/main/java/com/ruoyi/common/enums/UserStatus.java | 7 ++
11 files changed, 118 insertions(+), 41 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/controller/EnumController.java b/src/main/java/com/ruoyi/basic/controller/EnumController.java
index 8091ac9..dfb9673 100644
--- a/src/main/java/com/ruoyi/basic/controller/EnumController.java
+++ b/src/main/java/com/ruoyi/basic/controller/EnumController.java
@@ -1,15 +1,16 @@
package com.ruoyi.basic.controller;
+import com.ruoyi.basic.utils.EnumUtils;
import com.ruoyi.common.enums.StockRecordTypeEnum;
import com.ruoyi.common.utils.EnumUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
import com.ruoyi.framework.web.domain.R;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -26,4 +27,10 @@
List<Map<String, Object>> list = EnumUtil.toList(StockRecordTypeEnum.class);
return R.ok(list);
}
+
+ @GetMapping("/{className}")
+ @Anonymous
+ public R test(@PathVariable String className){
+ return R.ok(EnumUtils.getOptions("com.ruoyi.common.enums." + className));
+ }
}
diff --git a/src/main/java/com/ruoyi/basic/dto/SelectOptionDTO.java b/src/main/java/com/ruoyi/basic/dto/SelectOptionDTO.java
new file mode 100644
index 0000000..4323126
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/dto/SelectOptionDTO.java
@@ -0,0 +1,14 @@
+package com.ruoyi.basic.dto;
+
+import lombok.Data;
+
+@Data
+public class SelectOptionDTO<T> {
+ private T value;
+ private String label;
+
+ public SelectOptionDTO(T code, String value) {
+ this.value = code;
+ this.label = value;
+ }
+}
diff --git a/src/main/java/com/ruoyi/basic/utils/EnumUtils.java b/src/main/java/com/ruoyi/basic/utils/EnumUtils.java
new file mode 100644
index 0000000..5103ac5
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/utils/EnumUtils.java
@@ -0,0 +1,45 @@
+package com.ruoyi.basic.utils;
+
+import com.ruoyi.basic.dto.SelectOptionDTO;
+import com.ruoyi.common.enums.BaseEnum;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class EnumUtils {
+ public static List<SelectOptionDTO<?>> getOptions(String className) {
+ try {
+ Class<?> clazz = Class.forName(className);
+ return getOptionsByClass(clazz);
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private static List<SelectOptionDTO<?>> getOptionsByClass(Class<?> clazz) {
+ if (!clazz.isEnum()) {
+ throw new RuntimeException("涓嶆槸鏋氫妇锛�" + clazz.getName());
+ }
+ if (!BaseEnum.class.isAssignableFrom(clazz)) {
+ throw new RuntimeException("鏈疄鐜� BaseEnum锛�" + clazz.getName());
+ }
+ return (List<SelectOptionDTO<?>>) getOptionsInternal((Class) clazz);
+ }
+
+ private static <T> List<SelectOptionDTO<T>> getOptionsInternal(
+ Class<? extends BaseEnum<T>> clazz) {
+
+ Enum<?>[] enums = (Enum<?>[]) clazz.getEnumConstants();
+ List<SelectOptionDTO<T>> list = new ArrayList<>();
+
+ for (Enum<?> e : enums) {
+ BaseEnum<T> option = (BaseEnum<T>) e;
+ list.add(new SelectOptionDTO<>(
+ option.getCode(),
+ option.getValue()
+ ));
+ }
+ return list;
+ }
+}
diff --git a/src/main/java/com/ruoyi/common/enums/BaseEnum.java b/src/main/java/com/ruoyi/common/enums/BaseEnum.java
index cb6311c..cf84dde 100644
--- a/src/main/java/com/ruoyi/common/enums/BaseEnum.java
+++ b/src/main/java/com/ruoyi/common/enums/BaseEnum.java
@@ -4,10 +4,10 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
-public interface BaseEnum {
+public interface BaseEnum<T> {
@JsonValue
- Integer getCode();
-
+ T getCode();
+
String getValue();
/**
@@ -17,7 +17,7 @@
* 閫氱敤闈欐�佸伐鍏锋柟娉曪細鏀寔浠� Integer 鎴� String 绫诲瀷鐨� Code 杩涜鍙嶅簭鍒楀寲
*/
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
- static <E extends Enum<E> & BaseEnum> E fromCode(Class<E> enumClass, Object code) {
+ static <E extends Enum<E> & BaseEnum<?>> E fromCode(Class<E> enumClass, Object code) {
if (code == null) {
return null;
}
diff --git a/src/main/java/com/ruoyi/common/enums/SalesLedgerType.java b/src/main/java/com/ruoyi/common/enums/SalesLedgerType.java
index cd76069..74a5eb6 100644
--- a/src/main/java/com/ruoyi/common/enums/SalesLedgerType.java
+++ b/src/main/java/com/ruoyi/common/enums/SalesLedgerType.java
@@ -1,7 +1,7 @@
package com.ruoyi.common.enums;
-public enum SalesLedgerType {
+public enum SalesLedgerType implements BaseEnum<Integer>{
SALES_LEDGER_TYPE_SALES_LEDGER(1, "閿�鍞彴璐�"),
SALES_LEDGER_TYPE_PURCHASE_LEDGER(2, "閲囪喘鍙拌处");
@@ -13,11 +13,11 @@
this.label = label;
}
- public Integer getValue() {
+ public Integer getCode() {
return value;
}
- public String getLabel() {
+ public String getValue() {
return label;
}
diff --git a/src/main/java/com/ruoyi/common/enums/StaffLeaveReason.java b/src/main/java/com/ruoyi/common/enums/StaffLeaveReason.java
index 5c043fb..c802164 100644
--- a/src/main/java/com/ruoyi/common/enums/StaffLeaveReason.java
+++ b/src/main/java/com/ruoyi/common/enums/StaffLeaveReason.java
@@ -7,7 +7,7 @@
*
*/
@AllArgsConstructor
-public enum StaffLeaveReason {
+public enum StaffLeaveReason implements BaseEnum<String> {
StaffLeaveReasonSalary("salary","钖祫寰呴亣"),
StaffLeaveReasonCareerDevelopment("career_development","鑱屼笟鍙戝睍"),
StaffLeaveReasonWorkEnvironment("work_environment","宸ヤ綔鐜"),
@@ -22,6 +22,10 @@
return code;
}
+ public String getValue() {
+ return info;
+ }
+
public String getInfo() {
return info;
}
diff --git a/src/main/java/com/ruoyi/common/enums/StockRecordTypeEnum.java b/src/main/java/com/ruoyi/common/enums/StockRecordTypeEnum.java
index 619d8a0..000e5b0 100644
--- a/src/main/java/com/ruoyi/common/enums/StockRecordTypeEnum.java
+++ b/src/main/java/com/ruoyi/common/enums/StockRecordTypeEnum.java
@@ -8,7 +8,7 @@
* @email 3038525872@qq.com
*/
@Getter
-public enum StockRecordTypeEnum implements BaseEnum {
+public enum StockRecordTypeEnum implements BaseEnum<Integer> {
CUSTOMIZATION_STOCK_IN(0, "鍚堟牸鑷畾涔夊叆搴�"),
CUSTOMIZATION_STOCK_OUT(1, "鍚堟牸鑷畾涔夊嚭搴�"),
PRODUCTION_REPORT_STOCK_IN(2, "鐢熶骇鎶ュ伐-鍏ュ簱"),
diff --git a/src/main/java/com/ruoyi/common/enums/StorageAttachmentRecordType.java b/src/main/java/com/ruoyi/common/enums/StorageAttachmentRecordType.java
index 5f6cb9e..c8fdae5 100644
--- a/src/main/java/com/ruoyi/common/enums/StorageAttachmentRecordType.java
+++ b/src/main/java/com/ruoyi/common/enums/StorageAttachmentRecordType.java
@@ -7,7 +7,7 @@
*
*/
@AllArgsConstructor
-public enum StorageAttachmentRecordType {
+public enum StorageAttachmentRecordType implements BaseEnum<String> {
// 渚嬪瓙 瀹為檯寮�鍙戣鍒犻櫎
Template("Template","鑼冧緥"),
Archives("Archives","鏂囨。绠$悊"),
@@ -23,6 +23,10 @@
return code;
}
+ public String getValue() {
+ return info;
+ }
+
public String getInfo() {
return info;
}
diff --git a/src/main/java/com/ruoyi/common/enums/UserStatus.java b/src/main/java/com/ruoyi/common/enums/UserStatus.java
index a4613ff..3612f81 100644
--- a/src/main/java/com/ruoyi/common/enums/UserStatus.java
+++ b/src/main/java/com/ruoyi/common/enums/UserStatus.java
@@ -5,7 +5,7 @@
*
* @author ruoyi
*/
-public enum UserStatus
+public enum UserStatus implements BaseEnum<String>
{
OK("0", "姝e父"), DISABLE("1", "鍋滅敤"), DELETED("2", "鍒犻櫎");
@@ -23,8 +23,13 @@
return code;
}
+ public String getValue() {
+ return info;
+ }
+
public String getInfo()
{
return info;
}
+
}
diff --git a/src/main/java/com/ruoyi/common/utils/EnumUtil.java b/src/main/java/com/ruoyi/common/utils/EnumUtil.java
index 75be83a..e17b71e 100644
--- a/src/main/java/com/ruoyi/common/utils/EnumUtil.java
+++ b/src/main/java/com/ruoyi/common/utils/EnumUtil.java
@@ -2,7 +2,6 @@
import com.ruoyi.common.enums.BaseEnum;
-import com.ruoyi.common.enums.StockRecordTypeEnum;
import java.util.*;
import java.util.stream.Collectors;
@@ -20,7 +19,7 @@
*/
public static <E extends Enum<E> & BaseEnum> E fromCode(Class<E> enumClass, int code) {
for (E e : enumClass.getEnumConstants()) {
- if (e.getCode() == code) {
+ if ((int)e.getCode() == code) {
return e;
}
}
@@ -29,7 +28,7 @@
public static <E extends Enum<E> & BaseEnum> E fromCodeHasNull(Class<E> enumClass, int code) {
for (E e : enumClass.getEnumConstants()) {
- if (e.getCode() == code) {
+ if ((int)e.getCode() == code) {
return e;
}
}
@@ -38,7 +37,7 @@
public static <E extends Enum<E> & BaseEnum> E fromCodeHasDefault(Class<E> enumClass, int code,E defaultE) {
for (E e : enumClass.getEnumConstants()) {
- if (e.getCode() == code) {
+ if ((int)e.getCode() == code) {
return e;
}
}
@@ -81,27 +80,27 @@
.collect(Collectors.toList());
}
- /**
- * 杞负 Map<Integer, String>
- * 鏍煎紡: { 1: "缁炵嚎", 0: "鎷変笣" }
- */
- public static <E extends Enum<E> & BaseEnum> Map<Integer, String> toMap(Class<E> enumClass) {
- return Arrays.stream(enumClass.getEnumConstants())
- .collect(Collectors.toMap(BaseEnum::getCode, BaseEnum::getValue));
- }
-
-
- public static void main(String[] args) {
- // 鉁� 1. 鏍规嵁 code 鑾峰彇鏋氫妇
- StockRecordTypeEnum status = EnumUtil.fromCode(StockRecordTypeEnum.class, 1);
- System.out.println(status.getValue()); // 缁炵嚎
-
- // 鉁� 2. 杞垚 list (閫傚悎鍓嶇)
- System.out.println(EnumUtil.toList(StockRecordTypeEnum.class));
- // 杈撳嚭: [{code=1, value=缁炵嚎}, {code=0, value=鎷変笣}]
-
- // 鉁� 3. 杞垚 map
- System.out.println(EnumUtil.toMap(StockRecordTypeEnum.class));
- // 杈撳嚭: {1=缁炵嚎, 0=鎷変笣}
- }
+// /**
+// * 杞负 Map<Integer, String>
+// * 鏍煎紡: { 1: "缁炵嚎", 0: "鎷変笣" }
+// */
+// public static <E extends Enum<E> & BaseEnum> Map<Integer, String> toMap(Class<E> enumClass) {
+// return Arrays.stream(enumClass.getEnumConstants())
+// .collect(Collectors.toMap((BaseEnum::getCode, BaseEnum::getValue));
+// }
+//
+//
+// public static void main(String[] args) {
+// // 鉁� 1. 鏍规嵁 code 鑾峰彇鏋氫妇
+// StockRecordTypeEnum status = EnumUtil.fromCode(StockRecordTypeEnum.class, 1);
+// System.out.println(status.getValue()); // 缁炵嚎
+//
+// // 鉁� 2. 杞垚 list (閫傚悎鍓嶇)
+// System.out.println(EnumUtil.toList(StockRecordTypeEnum.class));
+// // 杈撳嚭: [{code=1, value=缁炵嚎}, {code=0, value=鎷変笣}]
+//
+// // 鉁� 3. 杞垚 map
+// System.out.println(EnumUtil.toMap(StockRecordTypeEnum.class));
+// // 杈撳嚭: {1=缁炵嚎, 0=鎷変笣}
+// }
}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
index 1406667..ec8716f 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -30,7 +30,6 @@
import com.ruoyi.sales.mapper.CommonFileMapper;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.pojo.CommonFile;
-import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.service.ISalesLedgerProductService;
import lombok.RequiredArgsConstructor;
@@ -458,7 +457,7 @@
BeanUtils.copyProperties(purchaseLedger, purchaseLedgerDto);
SalesLedgerProduct salesLedgerProduct = new SalesLedgerProduct();
salesLedgerProduct.setSalesLedgerId(id);
- salesLedgerProduct.setType(SalesLedgerType.SALES_LEDGER_TYPE_SALES_LEDGER.getValue());
+ salesLedgerProduct.setType(SalesLedgerType.SALES_LEDGER_TYPE_SALES_LEDGER.getCode());
List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductService.selectSalesLedgerProductList(salesLedgerProduct);
purchaseLedgerDto.setProductData(salesLedgerProducts);
List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
--
Gitblit v1.9.3