yaowanxin
5 天以前 a0914318549b357ef3c438d0c2a3714f58ea3487
src/main/java/com/ruoyi/common/utils/EnumUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,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 ((int)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 ((int)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 ((int)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=拉丝}
//    }
}