Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
finance-manage
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
finance-oa
finance-manage
Commits
92c63012
Commit
92c63012
authored
Jul 23, 2020
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Excel支持分割字符串组内容
parent
5c6adb25
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
130 additions
and
49 deletions
+130
-49
ruoyi-admin/src/main/resources/application.yml
ruoyi-admin/src/main/resources/application.yml
+1
-1
ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java
...mmon/src/main/java/com/ruoyi/common/annotation/Excel.java
+5
-0
ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
...ommon/src/main/java/com/ruoyi/common/utils/DictUtils.java
+72
-15
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
...n/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+52
-33
No files found.
ruoyi-admin/src/main/resources/application.yml
View file @
92c63012
...
...
@@ -13,7 +13,7 @@ ruoyi:
# 获取ip地址开关
addressEnabled
:
false
# 验证码类型 math 数组计算 char 字符验证
captchaType
:
char
captchaType
:
math
# 开发环境配置
server
:
...
...
ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java
View file @
92c63012
...
...
@@ -39,6 +39,11 @@ public @interface Excel
*/
public
String
readConverterExp
()
default
""
;
/**
* 分隔符,读取字符串组内容
*/
public
String
separator
()
default
","
;
/**
* 导出类型(0数字 1字符串)
*/
...
...
ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
View file @
92c63012
...
...
@@ -14,6 +14,11 @@ import com.ruoyi.common.utils.spring.SpringUtils;
*/
public
class
DictUtils
{
/**
* 分隔符
*/
public
static
final
String
SEPARATOR
=
","
;
/**
* 设置字典缓存
*
...
...
@@ -51,21 +56,59 @@ public class DictUtils
*/
public
static
String
getDictLabel
(
String
dictType
,
String
dictValue
)
{
if
(
StringUtils
.
isNotEmpty
(
dictType
)
&&
StringUtils
.
isNotEmpty
(
dictValue
))
return
getDictLabel
(
dictType
,
dictValue
,
SEPARATOR
);
}
/**
* 根据字典类型和字典标签获取字典值
*
* @param dictType 字典类型
* @param dictLabel 字典标签
* @return 字典值
*/
public
static
String
getDictValue
(
String
dictType
,
String
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
(
S
ysDictData
dict
:
datas
)
for
(
S
tring
value
:
dictValue
.
split
(
separator
)
)
{
if
(
dictV
alue
.
equals
(
dict
.
getDictValue
()))
if
(
v
alue
.
equals
(
dict
.
getDictValue
()))
{
return
dict
.
getDictLabel
();
propertyString
.
append
(
dict
.
getDictLabel
()
+
separator
);
break
;
}
}
}
}
return
dictValue
;
else
{
for
(
SysDictData
dict
:
datas
)
{
if
(
dictValue
.
equals
(
dict
.
getDictValue
()))
{
return
dict
.
getDictLabel
();
}
}
}
return
StringUtils
.
stripEnd
(
propertyString
.
toString
(),
separator
);
}
/**
...
...
@@ -73,25 +116,39 @@ public class DictUtils
*
* @param dictType 字典类型
* @param dictLabel 字典标签
* @param separator 分隔符
* @return 字典值
*/
public
static
String
getDictValue
(
String
dictType
,
String
dictLabel
)
public
static
String
getDictValue
(
String
dictType
,
String
dictLabel
,
String
separator
)
{
if
(
StringUtils
.
isNotEmpty
(
dictType
)
&&
StringUtils
.
isNotEmpty
(
dictLabel
))
StringBuilder
propertyString
=
new
StringBuilder
();
List
<
SysDictData
>
datas
=
getDictCache
(
dictType
);
if
(
StringUtils
.
containsAny
(
separator
,
dictLabel
)
&&
StringUtils
.
isNotEmpty
(
datas
))
{
List
<
SysDictData
>
datas
=
getDictCache
(
dictType
);
if
(
StringUtils
.
isNotEmpty
(
datas
))
for
(
SysDictData
dict
:
datas
)
{
for
(
S
ysDictData
dict
:
datas
)
for
(
S
tring
label
:
dictLabel
.
split
(
separator
)
)
{
if
(
dictL
abel
.
equals
(
dict
.
getDictLabel
()))
if
(
l
abel
.
equals
(
dict
.
getDictLabel
()))
{
return
dict
.
getDictValue
();
propertyString
.
append
(
dict
.
getDictValue
()
+
separator
);
break
;
}
}
}
}
return
dictLabel
;
else
{
for
(
SysDictData
dict
:
datas
)
{
if
(
dictLabel
.
equals
(
dict
.
getDictLabel
()))
{
return
dict
.
getDictValue
();
}
}
}
return
StringUtils
.
stripEnd
(
propertyString
.
toString
(),
separator
);
}
/**
...
...
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
View file @
92c63012
...
...
@@ -271,11 +271,11 @@ public class ExcelUtil<T>
}
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 @@ public class ExcelUtil<T>
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 @@ public class ExcelUtil<T>
}
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 @@ public class ExcelUtil<T>
*
* @param propertyValue 参数值
* @param converterExp 翻译注解
* @param separator 分隔符
* @return 解析后值
* @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
))
{
for
(
String
value
:
propertyValue
.
split
(
separator
))
{
if
(
itemArray
[
0
].
equals
(
value
))
{
propertyString
.
append
(
itemArray
[
1
]
+
separator
);
break
;
}
}
}
else
{
String
[]
itemArray
=
item
.
split
(
"="
);
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 @@ public class ExcelUtil<T>
*
* @param propertyValue 参数值
* @param converterExp 翻译注解
* @param separator 分隔符
* @return 解析后值
* @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
))
{
for
(
String
value
:
propertyValue
.
split
(
separator
))
{
if
(
itemArray
[
1
].
equals
(
value
))
{
propertyString
.
append
(
itemArray
[
0
]
+
separator
);
break
;
}
}
}
else
{
String
[]
itemArray
=
item
.
split
(
"="
);
if
(
itemArray
[
1
].
equals
(
propertyValue
))
{
return
itemArray
[
0
];
}
}
}
catch
(
Exception
e
)
{
throw
e
;
}
return
propertyValue
;
return
StringUtils
.
stripEnd
(
propertyString
.
toString
(),
separator
);
}
/**
* 解析字典值
*
* @param dictType 字典类型
* @param dictValue 字典值
* @param dictType 字典类型
* @param separator 分隔符
* @return 字典标签
*/
public
static
String
convertDictByExp
(
String
dict
Type
,
String
dictValue
)
throws
Exception
public
static
String
convertDictByExp
(
String
dict
Value
,
String
dictType
,
String
separator
)
{
return
DictUtils
.
getDictLabel
(
dictType
,
dictValue
);
return
DictUtils
.
getDictLabel
(
dictType
,
dictValue
,
separator
);
}
/**
* 反向解析值字典值
*
* @param dictLabel 字典标签
* @param dictType 字典类型
* @param
dictValue 字典标签
* @param
separator 分隔符
* @return 字典值
*/
public
static
String
reverseDictByExp
(
String
dict
Type
,
String
dictLabel
)
throws
Exception
public
static
String
reverseDictByExp
(
String
dict
Label
,
String
dictType
,
String
separator
)
{
return
DictUtils
.
getDictValue
(
dictType
,
dictLabel
);
return
DictUtils
.
getDictValue
(
dictType
,
dictLabel
,
separator
);
}
/**
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment