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 extends BaseEnum> 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