From 59edca8fcaa79a00e6f7f2325b9c81067208d691 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期四, 20 六月 2024 10:06:17 +0800
Subject: [PATCH] update 优化 snailjob 客户端端口随主应用漂移端口
---
ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java | 37 ++++++++++++++++++++-----------------
1 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java
index 52bfebc..b3f68ed 100644
--- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java
+++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java
@@ -5,7 +5,9 @@
import cn.hutool.core.util.EnumUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
-import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.metadata.FieldCache;
+import com.alibaba.excel.metadata.FieldWrapper;
+import com.alibaba.excel.util.ClassUtils;
import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
@@ -18,6 +20,7 @@
import org.dromara.common.core.service.DictService;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StreamUtils;
+import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.annotation.ExcelEnumFormat;
@@ -83,42 +86,39 @@
Sheet sheet = writeSheetHolder.getSheet();
// 寮�濮嬭缃笅鎷夋 HSSFWorkbook
DataValidationHelper helper = sheet.getDataValidationHelper();
- Field[] fields = writeWorkbookHolder.getClazz().getDeclaredFields();
Workbook workbook = writeWorkbookHolder.getWorkbook();
- int length = fields.length;
- for (int i = 0; i < length; i++) {
+ FieldCache fieldCache = ClassUtils.declaredFields(writeWorkbookHolder.getClazz(), writeWorkbookHolder);
+ for (Map.Entry<Integer, FieldWrapper> entry : fieldCache.getSortedFieldMap().entrySet()) {
+ Integer index = entry.getKey();
+ FieldWrapper wrapper = entry.getValue();
+ Field field = wrapper.getField();
// 寰幆瀹炰綋涓殑姣忎釜灞炴��
// 鍙�夌殑涓嬫媺鍊�
List<String> options = new ArrayList<>();
- if (fields[i].isAnnotationPresent(ExcelDictFormat.class)) {
+ if (field.isAnnotationPresent(ExcelDictFormat.class)) {
// 濡傛灉鎸囧畾浜咢ExcelDictFormat锛屽垯浣跨敤瀛楀吀鐨勯�昏緫
- ExcelDictFormat format = fields[i].getDeclaredAnnotation(ExcelDictFormat.class);
+ ExcelDictFormat format = field.getDeclaredAnnotation(ExcelDictFormat.class);
String dictType = format.dictType();
String converterExp = format.readConverterExp();
- if (StrUtil.isNotBlank(dictType)) {
+ if (StringUtils.isNotBlank(dictType)) {
// 濡傛灉浼犻�掍簡瀛楀吀鍚嶏紝鍒欎緷鎹瓧鍏稿缓绔嬩笅鎷�
Collection<String> values = Optional.ofNullable(dictService.getAllDictByDictType(dictType))
.orElseThrow(() -> new ServiceException(String.format("瀛楀吀 %s 涓嶅瓨鍦�", dictType)))
.values();
options = new ArrayList<>(values);
- } else if (StrUtil.isNotBlank(converterExp)) {
+ } else if (StringUtils.isNotBlank(converterExp)) {
// 濡傛灉鎸囧畾浜嗙‘鍒囩殑鍊硷紝鍒欑洿鎺ヨВ鏋愮‘鍒囩殑鍊�
- options = StrUtil.split(converterExp, format.separator(), true, true);
+ List<String> strList = StringUtils.splitList(converterExp, format.separator());
+ options = StreamUtils.toList(strList, s -> StringUtils.split(s, "=")[1]);
}
- } else if (fields[i].isAnnotationPresent(ExcelEnumFormat.class)) {
+ } else if (field.isAnnotationPresent(ExcelEnumFormat.class)) {
// 鍚﹀垯濡傛灉鎸囧畾浜咢ExcelEnumFormat锛屽垯浣跨敤鏋氫妇鐨勯�昏緫
- ExcelEnumFormat format = fields[i].getDeclaredAnnotation(ExcelEnumFormat.class);
+ ExcelEnumFormat format = field.getDeclaredAnnotation(ExcelEnumFormat.class);
List<Object> values = EnumUtil.getFieldValues(format.enumClass(), format.textField());
options = StreamUtils.toList(values, String::valueOf);
}
if (ObjectUtil.isNotEmpty(options)) {
// 浠呭綋涓嬫媺鍙�夐」涓嶄负绌烘椂鎵ц
- // 鑾峰彇鍒椾笅鏍囷紝榛樿涓哄綋鍓嶅惊鐜鏁�
- int index = i;
- if (fields[i].isAnnotationPresent(ExcelProperty.class)) {
- // 濡傛灉鎸囧畾浜嗗垪涓嬫爣锛屼互鎸囧畾鐨勪负涓�
- index = fields[i].getDeclaredAnnotation(ExcelProperty.class).index();
- }
if (options.size() > 20) {
// 杩欓噷闄愬埗濡傛灉鍙�夐」澶т簬20锛屽垯浣跨敤棰濆琛ㄥ舰寮�
dropDownWithSheet(helper, workbook, sheet, index, options);
@@ -128,6 +128,9 @@
}
}
}
+ if (CollUtil.isEmpty(dropDownOptions)) {
+ return;
+ }
dropDownOptions.forEach(everyOptions -> {
// 濡傛灉浼犻�掍簡涓嬫媺妗嗛�夋嫨鍣ㄥ弬鏁�
if (!everyOptions.getNextOptions().isEmpty()) {
--
Gitblit v1.9.3