//package com.iailab.common.aspect; // //import com.alibaba.fastjson.JSONObject; //import com.alibaba.fastjson.parser.Feature; //import com.iailab.common.annotation.Dict; //import com.iailab.framework.common.page.PageData; //import com.iailab.framework.common.util.object.ConvertUtils; //import com.iailab.framework.common.pojo.CommonResult; //import com.iailab.entity.SysDictItem; //import com.iailab.module.infra.api.config.ConfigApi; //import lombok.extern.slf4j.Slf4j; //import org.aspectj.lang.ProceedingJoinPoint; //import org.aspectj.lang.annotation.Around; //import org.aspectj.lang.annotation.Aspect; //import org.aspectj.lang.annotation.Pointcut; //import javax.annotation.Resource; //import org.springframework.stereotype.Component; //import org.springframework.util.CollectionUtils; // //import java.beans.IntrospectionException; //import java.beans.PropertyDescriptor; //import java.lang.reflect.Field; //import java.lang.reflect.InvocationTargetException; //import java.lang.reflect.Method; //import java.util.HashMap; //import java.util.List; //import java.util.Map; // ///** // * @author PanZhibao // * @Description // * @createTime 2022年05月21日 09:57:00 // */ //@Aspect //@Component //@Slf4j //public class DictAspect { // // private final String PAGE_CODE = "page"; // // private final String DATA_CODE = "data"; // // @Resource // private ConfigApi configApi; // // /** // * 定义切点Pointcut // */ // @Pointcut("@annotation(com.iailab.common.annotation.AutoDict)") // public void excudeService() { // } // // @Around("excudeService()") // public Object doAround(ProceedingJoinPoint pjp) throws Throwable { // Object result = pjp.proceed(); // try { // this.parseDictText(result); // } catch (Exception ex) { // log.info(ex.getMessage()); // } // return result; // } // // /** // * parseDictText // * // * @param result // * @throws IntrospectionException // * @throws InvocationTargetException // * @throws IllegalAccessException // */ // private void parseDictText(Object result) throws IntrospectionException, InvocationTargetException, IllegalAccessException { // Map> mapList = configApi.queryAllDictItems(); // Map> map = new HashMap<>(); // if (!CollectionUtils.isEmpty(mapList)) { // mapList.forEach((k , v) -> { // Map dictItems = new HashMap<>(); // if (!CollectionUtils.isEmpty(v)) { // v.forEach(item -> { // dictItems.put(item.getItemValue(), item.getItemText()); // }); // } // map.put(k, dictItems); // }); // } // // if(result instanceof CommonResult) { // if(((CommonResult) result).getData() != null) { // Object data = ((CommonResult) result).getData(); // if (data instanceof List) { // for (Object record : (List)data) { // this.setDictText(record, map); // } // } else if(data instanceof PageData) { // Object list = ((PageData)data).getList(); // for (Object record : (List)list) { // this.setDictText(record, map); // } // } else { // this.setDictText(data, map); // } // } // } else if (result instanceof List){ // for (Object record : (List)result) { // this.setDictText(record, map); // } // } // } // // /** // * setDictText // * // * @param record // * @param map // * @throws IntrospectionException // * @throws InvocationTargetException // * @throws IllegalAccessException // */ // private void setDictText(Object record, Map> map) throws IntrospectionException, InvocationTargetException, IllegalAccessException { // JSONObject item = JSONObject.parseObject(JSONObject.toJSONString(record), Feature.OrderedField); // for (Field field : ConvertUtils.getAllFields(record)) { // if (!field.isAnnotationPresent(Dict.class)) { // continue; // } // String dictCode = field.getAnnotation(Dict.class).dicCode(); // String itemValue = field.getAnnotation(Dict.class).itemValue(); // String value = item.getString(itemValue); // Method method = new PropertyDescriptor(field.getName(), record.getClass()).getWriteMethod(); // method.invoke(record, this.getDictText(dictCode, value, map)); // } // } // // /** // * getDictText // * // * @param dictCode // * @param itemValue // * @param map // * @return // */ // private String getDictText(String dictCode, String itemValue, Map> map) { // String dictText = ""; // try{ // if (map != null || map.containsKey(dictCode)) { // dictText = map.get(dictCode).get(itemValue); // } // } catch (Exception ex) { // log.info("字典异常:" + dictCode ); // } // return dictText; // } //}