package com.ruoyi.common.utils;
|
|
|
import com.ruoyi.common.enums.BaseEnum;
|
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* 通用枚举工具类
|
* 适用于所有实现 BaseEnum 接口的枚举
|
*
|
* @author Bu
|
*/
|
public class EnumUtil {
|
|
/**
|
* 根据 code 获取枚举实例
|
*/
|
public static <E extends Enum<E> & BaseEnum> E fromCode(Class<E> enumClass, int code) {
|
for (E e : enumClass.getEnumConstants()) {
|
if (Integer.parseInt(String.valueOf(e.getCode())) == code) {
|
return e;
|
}
|
}
|
throw new IllegalArgumentException("未知的 code: " + code + " 对于枚举 " + enumClass.getSimpleName());
|
}
|
|
public static <E extends Enum<E> & BaseEnum> E fromCodeHasNull(Class<E> enumClass, int code) {
|
for (E e : enumClass.getEnumConstants()) {
|
if (Integer.parseInt(String.valueOf(e.getCode())) == code) {
|
return e;
|
}
|
}
|
return null;
|
}
|
|
public static <E extends Enum<E> & BaseEnum> E fromCodeHasDefault(Class<E> enumClass, int code,E defaultE) {
|
for (E e : enumClass.getEnumConstants()) {
|
if (Integer.parseInt(String.valueOf(e.getCode())) == code) {
|
return e;
|
}
|
}
|
return defaultE;
|
}
|
|
|
|
/**
|
* 根据 value 获取枚举实例
|
*/
|
public static <E extends Enum<E> & BaseEnum> E fromValue(Class<E> enumClass, String value) {
|
for (E e : enumClass.getEnumConstants()) {
|
if (Objects.equals(e.getValue(), value)) {
|
return e;
|
}
|
}
|
throw new IllegalArgumentException("未知的 value: " + value + " 对于枚举 " + enumClass.getSimpleName());
|
}
|
|
/**
|
* 获取所有枚举项列表
|
*/
|
public static <E extends Enum<E> & BaseEnum> List<E> listAll(Class<E> enumClass) {
|
return Arrays.asList(enumClass.getEnumConstants());
|
}
|
|
/**
|
* 转为 List<Map>(适合返回给前端)
|
* 格式: [{ "code": 1, "value": "绞线" }, ...]
|
*/
|
public static <E extends Enum<E> & BaseEnum> List<Map<String, Object>> toList(Class<E> enumClass) {
|
return Arrays.stream(enumClass.getEnumConstants())
|
.map(e -> {
|
Map<String, Object> map = new HashMap<>();
|
map.put("key", e.getCode().toString());
|
map.put("value", e.getValue());
|
return map;
|
})
|
.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=拉丝}
|
// }
|
}
|