优化代码

This commit is contained in:
阿沐 2022-12-07 13:15:36 +08:00
parent c3539f4e51
commit f19765f6d0

View File

@ -1,9 +1,11 @@
package net.maku.framework.common.utils;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.fhs.common.spring.SpringContextUtil;
import com.fhs.common.utils.ConverterUtils;
import com.fhs.core.trans.anno.Trans;
import com.fhs.core.trans.constant.TransType;
@ -32,7 +34,6 @@ import java.util.stream.Collectors;
*/
public class ExcelUtils {
/**
* 读取excel文件
*
@ -151,42 +152,39 @@ public class ExcelUtils {
* 解析字典数据到字段上
* 比如 T中有 genderLabel字段 为男 需要给 gender 字段自动设置为0
*
* @param datas 需要被反向解析的数据
* @param <T>
* @param dataList 需要被反向解析的数据
*/
@SneakyThrows
public static <T extends TransPojo> void parseDict(List<T> datas) {
public static <T extends TransPojo> void parseDict(List<T> dataList) {
//没有数据就不需要初始化
if (datas == null || datas.isEmpty() || datas.get(0) == null) {
if (CollectionUtil.isEmpty(dataList)) {
return;
}
Class clazz = datas.get(0).getClass();
Class<? extends TransPojo> clazz = dataList.get(0).getClass();
//拿到所有需要反向翻译的字段
List<Field> fields = ReflectUtils.getAnnotationField(clazz, Trans.class);
//过滤出字典翻译
fields = fields.stream().filter(field -> {
return TransType.DICTIONARY.equals(field.getAnnotation(Trans.class).type());
}).collect(Collectors.toList());
DictionaryTransService dictionaryTransService = SpringContextUtil.getBeanByClass(DictionaryTransService.class);
for (T data : datas) {
fields = fields.stream().filter(field -> TransType.DICTIONARY.equals(field.getAnnotation(Trans.class).type())).collect(Collectors.toList());
DictionaryTransService dictionaryTransService = SpringUtil.getBean(DictionaryTransService.class);
for (T data : dataList) {
for (Field field : fields) {
Trans trans = field.getAnnotation(Trans.class);
//key不能为空并且ref不为空的才自动处理
if (!StringUtils.isBlank(trans.key()) && !StringUtils.isBlank(trans.ref())) {
// key不能为空并且ref不为空的才自动处理
if (StrUtil.isAllNotBlank(trans.key(), trans.ref())) {
Field ref = ReflectUtils.getDeclaredField(clazz, trans.ref());
ref.setAccessible(true);
//获取字典反向值
// 获取字典反向值
String value = dictionaryTransService.getUnTransMap().get(trans.key() + "_" + ref.get(data));
if (StringUtils.isBlank(value)) {
continue;
}
//一般目标字段是int或者string字段 后面有添加单独抽离方法
if(Integer.class.equals(field.getType())){
// 一般目标字段是int或者string字段 后面有添加单独抽离方法
if (Integer.class.equals(field.getType())) {
field.setAccessible(true);
field.set(data,ConverterUtils.toInteger(value));
}else{
field.set(data, ConverterUtils.toInteger(value));
} else {
field.setAccessible(true);
field.set(data,ConverterUtils.toString(value));
field.set(data, ConverterUtils.toString(value));
}
}
}