package com.ydtech.config; import com.ydtech.aop.request.DictEnum; import com.ydtech.constants.enums.dict.DictionaryData; import com.ydtech.constants.enums.dict.DictionaryManagement; import com.ydtech.constants.enums.dict.IBaseEnum; import lombok.Data; import org.reflections.Reflections; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; /** * 枚举类 字典配置 * * @author: lig * @date: 2023年04月10日 0010 */ @Component @Data public class DictEnumConfig implements InitializingBean { private static Map dmMap = new HashMap<>(); public static Map getDmMap() { return dmMap; } public static List dictManageList; private static void setDmMap(Map dmMap) { DictEnumConfig.dmMap = dmMap; } @Override public void afterPropertiesSet() { Reflections reflections = new Reflections("com.ydtech.constants.enums.dict"); Set> monitorClasses = reflections.getSubTypesOf(IBaseEnum.class); // List dmList = new ArrayList<>(); dictManageList = new ArrayList(); monitorClasses.forEach(m -> { if (m.isAnnotationPresent(DictEnum.class)) { DictEnum dictEnum = m.getAnnotation(DictEnum.class); DictionaryManagement dictionaryManagement = new DictionaryManagement(); // dictionaryManagement.setEnumFlag(Boolean.TRUE); dictionaryManagement.setDictType(dictEnum.key()); dictionaryManagement.setDictName(dictEnum.desc()); // dictionaryManagement.setStatus(0); // dictionaryManagement.setSysDictFlag(Boolean.TRUE); List ddList = new ArrayList<>(); DictionaryData dictionaryData; IBaseEnum[] enumConstants = m.getEnumConstants(); for (IBaseEnum baseEnum : enumConstants) { dictionaryData = new DictionaryData(); dictionaryData.setDictValue(baseEnum.getCode()); dictionaryData.setDictTag(baseEnum.getDesc()); dictionaryData.setSort(baseEnum.getSort()); dictionaryData.setStatus(baseEnum.getStatus()); ddList.add(dictionaryData); } dictionaryManagement.setDdList(ddList); dictManageList.add(dictionaryManagement); } }); setDmMap(dictManageList.stream().collect(Collectors.toMap(DictionaryManagement::getDictType, Function.identity()))); } }