From a43e6e06e086e778e6ac3fdba7b5e8fafa090ed8 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期一, 17 一月 2022 12:03:15 +0800
Subject: [PATCH] update 优化多用户体系处理 更名 LoginUtils 为 LoginHelper 支持 LoginUser 多级缓存

---
 ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java |   87 ++++++++++++++++++++++---------------------
 1 files changed, 45 insertions(+), 42 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java b/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java
index 6049b1e..ca4303e 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java
@@ -4,12 +4,15 @@
 import cn.hutool.core.convert.Convert;
 import com.alibaba.excel.converters.Converter;
 import com.alibaba.excel.enums.CellDataTypeEnum;
-import com.alibaba.excel.metadata.CellData;
 import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.ReadCellData;
+import com.alibaba.excel.metadata.data.WriteCellData;
 import com.alibaba.excel.metadata.property.ExcelContentProperty;
 import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.core.service.DictService;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.poi.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.spring.SpringUtils;
 import lombok.extern.slf4j.Slf4j;
 
 import java.lang.reflect.Field;
@@ -22,48 +25,48 @@
 @Slf4j
 public class ExcelDictConvert implements Converter<Object> {
 
-	@Override
-	public Class<Object> supportJavaTypeKey() {
-		return Object.class;
-	}
+    @Override
+    public Class<Object> supportJavaTypeKey() {
+        return Object.class;
+    }
 
-	@Override
-	public CellDataTypeEnum supportExcelTypeKey() {
-		return null;
-	}
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return null;
+    }
 
-	@Override
-	public Object convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
-		ExcelDictFormat anno = getAnnotation(contentProperty.getField());
-		String type = anno.dictType();
-		String label = cellData.getStringValue();
-		String value;
-		if (StringUtils.isBlank(type)) {
-			value = ExcelUtils.reverseByExp(label, anno.readConverterExp(), anno.separator());
-		} else {
-			value = ExcelUtils.reverseDictByExp(label, type, anno.separator());
-		}
-		return Convert.convert(contentProperty.getField().getType(), value);
-	}
+    @Override
+    public Object convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
+        ExcelDictFormat anno = getAnnotation(contentProperty.getField());
+        String type = anno.dictType();
+        String label = cellData.getStringValue();
+        String value;
+        if (StringUtils.isBlank(type)) {
+            value = ExcelUtil.reverseByExp(label, anno.readConverterExp(), anno.separator());
+        } else {
+            value = SpringUtils.getBean(DictService.class).getDictValue(type, label, anno.separator());
+        }
+        return Convert.convert(contentProperty.getField().getType(), value);
+    }
 
-	@Override
-	public CellData<String> convertToExcelData(Object object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
-		if (StringUtils.isNull(object)) {
-			return new CellData<>("");
-		}
-		ExcelDictFormat anno = getAnnotation(contentProperty.getField());
-		String type = anno.dictType();
-		String value = Convert.toStr(object);
-		String label;
-		if (StringUtils.isBlank(type)) {
-			label = ExcelUtils.convertByExp(value, anno.readConverterExp(), anno.separator());
-		} else {
-			label = ExcelUtils.convertDictByExp(value, type, anno.separator());
-		}
-		return new CellData<>(label);
-	}
+    @Override
+    public WriteCellData<String> convertToExcelData(Object object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
+        if (StringUtils.isNull(object)) {
+            return new WriteCellData<>("");
+        }
+        ExcelDictFormat anno = getAnnotation(contentProperty.getField());
+        String type = anno.dictType();
+        String value = Convert.toStr(object);
+        String label;
+        if (StringUtils.isBlank(type)) {
+            label = ExcelUtil.convertByExp(value, anno.readConverterExp(), anno.separator());
+        } else {
+            label = SpringUtils.getBean(DictService.class).getDictLabel(type, value, anno.separator());
+        }
+        return new WriteCellData<>(label);
+    }
 
-	private ExcelDictFormat getAnnotation(Field field) {
-		return AnnotationUtil.getAnnotation(field, ExcelDictFormat.class);
-	}
+    private ExcelDictFormat getAnnotation(Field field) {
+        return AnnotationUtil.getAnnotation(field, ExcelDictFormat.class);
+    }
 }

--
Gitblit v1.9.3