package com.engine.salary.util; import com.engine.salary.enums.BaseEnum; import com.engine.salary.enums.sicategory.PaymentScopeEnum; import com.engine.salary.exception.SalaryRunTimeException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import java.lang.reflect.Method; import java.util.*; import java.util.stream.Collectors; /** * 枚举工具类 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* * @author qiantao * @version 1.0 **/ @Slf4j public class SalaryEnumUtil { /** * 根据枚举的value获取枚举对象 * * @param value 枚举中的value * @param list * @param T * @param * @return */ @SuppressWarnings("unchecked") public static T enumMatchByValue(Integer value, BaseEnum[] list, Class> T) { return (T) Arrays.stream(list).filter(item -> Objects.equals(item.getValue(), value)).findFirst().get(); } /** * 根据枚举的value获取枚举对象 * * @param value * @param clazz * @param * @param * @return */ public static , R> T enumMatchByValue(R value, Class clazz) { T[] enumConstants = clazz.getEnumConstants(); for (T enumConstant : enumConstants) { if (Objects.equals(enumConstant.getValue(), value)) { return enumConstant; } } return null; } /** * 枚举数组转字符串 * * @param list * @return */ public static String enumArrToString(BaseEnum[] list) { List collect = Arrays.stream(list).map(item -> String.valueOf(item.getValue())).collect(Collectors.toList()); return StringUtils.join(collect, ","); } public static PaymentScopeEnum[] stringToEnums(String values, String charSequence) { String[] arr = values.split(charSequence); PaymentScopeEnum[] enumConstants = PaymentScopeEnum.values(); List collect = Arrays.stream(arr) .map(item -> Arrays.stream(enumConstants).filter(s -> Objects.equals(String.valueOf(s.getValue()), item)).findFirst().get()).collect(Collectors.toList()); return collect.toArray(new PaymentScopeEnum[collect.size()]); } /** * 获取枚举下拉列表 * @param enumName 枚举路径,列如:com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum * @return */ public static List> enumSelectList(String enumName) { try { List> keyValueList = new ArrayList>(); Class cls = Class.forName(enumName); Method method = cls.getMethod("values"); BaseEnum enums[] = (BaseEnum[]) method.invoke(null, null); for (BaseEnum enumMessage : enums) { Map hashMap = new HashMap(); hashMap.put("enum", enumMessage); hashMap.put("value", enumMessage.getValue()); hashMap.put("defaultLabel", enumMessage.getDefaultLabel()); hashMap.put("labelId", enumMessage.getLabelId()); keyValueList.add(hashMap); } return keyValueList; } catch (Exception e) { log.error("获取枚举下拉列表异常", e); throw new SalaryRunTimeException("指定类型未找到"); } } }