liyong
11 小时以前 1cf91e355038837f30f2d727507b2229263d7de7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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=拉丝}
//    }
}