From 0e484efe9bf541e3134093ae785091c67e684c80 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期四, 23 七月 2020 19:09:08 +0800
Subject: [PATCH] Excel支持分割字符串组内容
---
src/main/java/com/ruoyi/common/utils/DictUtils.java | 101 +++++++++++++++++++-----
src/main/java/com/ruoyi/framework/aspectj/lang/annotation/Excel.java | 5 +
src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java | 87 +++++++++++++--------
3 files changed, 137 insertions(+), 56 deletions(-)
diff --git a/src/main/java/com/ruoyi/common/utils/DictUtils.java b/src/main/java/com/ruoyi/common/utils/DictUtils.java
index 5e97f53..2b7249e 100644
--- a/src/main/java/com/ruoyi/common/utils/DictUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/DictUtils.java
@@ -15,6 +15,11 @@
public class DictUtils
{
/**
+ * 鍒嗛殧绗�
+ */
+ public static final String SEPARATOR = ",";
+
+ /**
* 璁剧疆瀛楀吀缂撳瓨
*
* @param key 鍙傛暟閿�
@@ -51,21 +56,7 @@
*/
public static String getDictLabel(String dictType, String dictValue)
{
- if (StringUtils.isNotEmpty(dictType) && StringUtils.isNotEmpty(dictValue))
- {
- List<SysDictData> datas = getDictCache(dictType);
- if (StringUtils.isNotEmpty(datas))
- {
- for (SysDictData dict : datas)
- {
- if (dictValue.equals(dict.getDictValue()))
- {
- return dict.getDictLabel();
- }
- }
- }
- }
- return dictValue;
+ return getDictLabel(dictType, dictValue, SEPARATOR);
}
/**
@@ -77,21 +68,87 @@
*/
public static String getDictValue(String dictType, String dictLabel)
{
- if (StringUtils.isNotEmpty(dictType) && StringUtils.isNotEmpty(dictLabel))
+ return getDictValue(dictType, dictLabel, SEPARATOR);
+ }
+
+ /**
+ * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏稿�艰幏鍙栧瓧鍏告爣绛�
+ *
+ * @param dictType 瀛楀吀绫诲瀷
+ * @param dictValue 瀛楀吀鍊�
+ * @param separator 鍒嗛殧绗�
+ * @return 瀛楀吀鏍囩
+ */
+ public static String getDictLabel(String dictType, String dictValue, String separator)
+ {
+ StringBuilder propertyString = new StringBuilder();
+ List<SysDictData> datas = getDictCache(dictType);
+
+ if (StringUtils.containsAny(separator, dictValue) && StringUtils.isNotEmpty(datas))
{
- List<SysDictData> datas = getDictCache(dictType);
- if (StringUtils.isNotEmpty(datas))
+ for (SysDictData dict : datas)
{
- for (SysDictData dict : datas)
+ for (String value : dictValue.split(separator))
{
- if (dictLabel.equals(dict.getDictLabel()))
+ if (value.equals(dict.getDictValue()))
{
- return dict.getDictValue();
+ propertyString.append(dict.getDictLabel() + separator);
+ break;
}
}
}
}
- return dictLabel;
+ else
+ {
+ for (SysDictData dict : datas)
+ {
+ if (dictValue.equals(dict.getDictValue()))
+ {
+ return dict.getDictLabel();
+ }
+ }
+ }
+ return StringUtils.stripEnd(propertyString.toString(), separator);
+ }
+
+ /**
+ * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏告爣绛捐幏鍙栧瓧鍏稿��
+ *
+ * @param dictType 瀛楀吀绫诲瀷
+ * @param dictLabel 瀛楀吀鏍囩
+ * @param separator 鍒嗛殧绗�
+ * @return 瀛楀吀鍊�
+ */
+ public static String getDictValue(String dictType, String dictLabel, String separator)
+ {
+ StringBuilder propertyString = new StringBuilder();
+ List<SysDictData> datas = getDictCache(dictType);
+
+ if (StringUtils.containsAny(separator, dictLabel) && StringUtils.isNotEmpty(datas))
+ {
+ for (SysDictData dict : datas)
+ {
+ for (String label : dictLabel.split(separator))
+ {
+ if (label.equals(dict.getDictLabel()))
+ {
+ propertyString.append(dict.getDictValue() + separator);
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ for (SysDictData dict : datas)
+ {
+ if (dictLabel.equals(dict.getDictLabel()))
+ {
+ return dict.getDictValue();
+ }
+ }
+ }
+ return StringUtils.stripEnd(propertyString.toString(), separator);
}
/**
diff --git a/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
index b64e93e..573b99d 100644
--- a/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+++ b/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -271,11 +271,11 @@
}
else if (StringUtils.isNotEmpty(attr.readConverterExp()))
{
- val = reverseByExp(Convert.toStr(val), attr.readConverterExp());
+ val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator());
}
else if (StringUtils.isNotEmpty(attr.dictType()))
{
- val = reverseDictByExp(attr.dictType(), Convert.toStr(val));
+ val = reverseDictByExp(Convert.toStr(val), attr.dictType(), attr.separator());
}
ReflectUtils.invokeSetter(entity, propertyName, val);
}
@@ -534,6 +534,7 @@
Object value = getTargetValue(vo, field, attr);
String dateFormat = attr.dateFormat();
String readConverterExp = attr.readConverterExp();
+ String separator = attr.separator();
String dictType = attr.dictType();
if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value))
{
@@ -541,11 +542,11 @@
}
else if (StringUtils.isNotEmpty(readConverterExp) && StringUtils.isNotNull(value))
{
- cell.setCellValue(convertByExp(Convert.toStr(value), readConverterExp));
+ cell.setCellValue(convertByExp(Convert.toStr(value), readConverterExp, separator));
}
else if (StringUtils.isNotEmpty(dictType))
{
- cell.setCellValue(convertDictByExp(dictType, Convert.toStr(value)));
+ cell.setCellValue(convertDictByExp(Convert.toStr(value), dictType, separator));
}
else
{
@@ -623,28 +624,36 @@
*
* @param propertyValue 鍙傛暟鍊�
* @param converterExp 缈昏瘧娉ㄨВ
+ * @param separator 鍒嗛殧绗�
* @return 瑙f瀽鍚庡��
- * @throws Exception
*/
- public static String convertByExp(String propertyValue, String converterExp) throws Exception
+ public static String convertByExp(String propertyValue, String converterExp, String separator)
{
- try
+ StringBuilder propertyString = new StringBuilder();
+ String[] convertSource = converterExp.split(",");
+ for (String item : convertSource)
{
- String[] convertSource = converterExp.split(",");
- for (String item : convertSource)
+ String[] itemArray = item.split("=");
+ if (StringUtils.containsAny(separator, propertyValue))
{
- String[] itemArray = item.split("=");
+ for (String value : propertyValue.split(separator))
+ {
+ if (itemArray[0].equals(value))
+ {
+ propertyString.append(itemArray[1] + separator);
+ break;
+ }
+ }
+ }
+ else
+ {
if (itemArray[0].equals(propertyValue))
{
return itemArray[1];
}
}
}
- catch (Exception e)
- {
- throw e;
- }
- return propertyValue;
+ return StringUtils.stripEnd(propertyString.toString(), separator);
}
/**
@@ -652,52 +661,62 @@
*
* @param propertyValue 鍙傛暟鍊�
* @param converterExp 缈昏瘧娉ㄨВ
+ * @param separator 鍒嗛殧绗�
* @return 瑙f瀽鍚庡��
- * @throws Exception
*/
- public static String reverseByExp(String propertyValue, String converterExp) throws Exception
+ public static String reverseByExp(String propertyValue, String converterExp, String separator)
{
- try
+ StringBuilder propertyString = new StringBuilder();
+ String[] convertSource = converterExp.split(",");
+ for (String item : convertSource)
{
- String[] convertSource = converterExp.split(",");
- for (String item : convertSource)
+ String[] itemArray = item.split("=");
+ if (StringUtils.containsAny(separator, propertyValue))
{
- String[] itemArray = item.split("=");
+ for (String value : propertyValue.split(separator))
+ {
+ if (itemArray[1].equals(value))
+ {
+ propertyString.append(itemArray[0] + separator);
+ break;
+ }
+ }
+ }
+ else
+ {
if (itemArray[1].equals(propertyValue))
{
return itemArray[0];
}
}
}
- catch (Exception e)
- {
- throw e;
- }
- return propertyValue;
+ return StringUtils.stripEnd(propertyString.toString(), separator);
}
-
+
/**
* 瑙f瀽瀛楀吀鍊�
*
- * @param dictType 瀛楀吀绫诲瀷
* @param dictValue 瀛楀吀鍊�
+ * @param dictType 瀛楀吀绫诲瀷
+ * @param separator 鍒嗛殧绗�
* @return 瀛楀吀鏍囩
*/
- public static String convertDictByExp(String dictType, String dictValue) throws Exception
+ public static String convertDictByExp(String dictValue, String dictType, String separator)
{
- return DictUtils.getDictLabel(dictType, dictValue);
+ return DictUtils.getDictLabel(dictType, dictValue, separator);
}
/**
* 鍙嶅悜瑙f瀽鍊煎瓧鍏稿��
*
+ * @param dictLabel 瀛楀吀鏍囩
* @param dictType 瀛楀吀绫诲瀷
- * @param dictValue 瀛楀吀鏍囩
+ * @param separator 鍒嗛殧绗�
* @return 瀛楀吀鍊�
*/
- public static String reverseDictByExp(String dictType, String dictLabel) throws Exception
+ public static String reverseDictByExp(String dictLabel, String dictType, String separator)
{
- return DictUtils.getDictValue(dictType, dictLabel);
+ return DictUtils.getDictValue(dictType, dictLabel, separator);
}
/**
@@ -906,4 +925,4 @@
}
return val;
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/ruoyi/framework/aspectj/lang/annotation/Excel.java b/src/main/java/com/ruoyi/framework/aspectj/lang/annotation/Excel.java
index 39c92a6..fed6f19 100644
--- a/src/main/java/com/ruoyi/framework/aspectj/lang/annotation/Excel.java
+++ b/src/main/java/com/ruoyi/framework/aspectj/lang/annotation/Excel.java
@@ -40,6 +40,11 @@
public String readConverterExp() default "";
/**
+ * 鍒嗛殧绗︼紝璇诲彇瀛楃涓茬粍鍐呭
+ */
+ public String separator() default ",";
+
+ /**
* 瀵煎嚭绫诲瀷锛�0鏁板瓧 1瀛楃涓诧級
*/
public ColumnType cellType() default ColumnType.STRING;
--
Gitblit v1.9.3