Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
dataDeclaration
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
黄夏豪
dataDeclaration
Commits
bb635a88
提交
bb635a88
authored
5月 21, 2021
作者:
xc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[excel导入]添加备注模板
上级
696cd8b3
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
314 行增加
和
188 行删除
+314
-188
ExcelController.java
...java/com/tykj/model_layer/controller/ExcelController.java
+1
-1
ExcelErrorVo.java
...ain/java/com/tykj/model_layer/entity/vo/ExcelErrorVo.java
+5
-2
ExcelVo.java
src/main/java/com/tykj/model_layer/entity/vo/ExcelVo.java
+1
-0
ExcelData.java
src/main/java/com/tykj/model_layer/excel/ExcelData.java
+271
-180
ExcelRemarks.java
src/main/java/com/tykj/model_layer/excel/ExcelRemarks.java
+22
-0
Template.java
src/main/java/com/tykj/model_layer/excel/Template.java
+4
-5
application.yml
src/main/resources/application.yml
+10
-0
没有找到文件。
src/main/java/com/tykj/model_layer/controller/ExcelController.java
浏览文件 @
bb635a88
...
...
@@ -30,7 +30,7 @@ public class ExcelController {
@PostMapping
(
"/import"
)
public
ResponseEntity
importExcel
(){
//@RequestParam int id
int
id
=
1
4
;
int
id
=
1
5
;
return
excelData
.
getExcelData
(
id
);
}
...
...
src/main/java/com/tykj/model_layer/entity/vo/ExcelErrorVo.java
浏览文件 @
bb635a88
...
...
@@ -10,7 +10,10 @@ import java.util.List;
@NoArgsConstructor
@Data
public
class
ExcelErrorVo
{
private
String
fileName
;
List
<
String
>
result
;
private
String
fileName
;
//文件名字
private
String
uintName
;
//本单位名字
private
String
tel
;
//本单位联系方式
private
String
buildTel
;
//承建单位联系方式
List
<
String
>
result
;
//预览有问题的文件结果
}
src/main/java/com/tykj/model_layer/entity/vo/ExcelVo.java
浏览文件 @
bb635a88
...
...
@@ -12,6 +12,7 @@ public class ExcelVo {
private
Integer
total
;
private
Integer
successNum
;
private
Integer
errorNum
;
private
Integer
importNum
;
private
List
<
ExcelErrorVo
>
list
;
}
src/main/java/com/tykj/model_layer/excel/ExcelData.java
浏览文件 @
bb635a88
...
...
@@ -81,93 +81,125 @@ public class ExcelData {
return
ResultUtil
.
failed
(
"文件路径不是文件夹!"
);
}
File
[]
dataFiles
=
file
.
listFiles
();
if
(
dataFiles
==
null
||
dataFiles
.
length
==
0
){
excelLogService
.
save
(
new
ExcelLog
(
"导入失败"
,
"文件路径下没有文件"
,
""
));
return
ResultUtil
.
failed
(
"
文件路径下没有
文件!"
);
return
ResultUtil
.
failed
(
"
没有待导入
文件!"
);
}
//找到需要判断唯一值的规则
List
<
Rule
>
ruleList
=
ruleService
.
findAll
().
stream
().
filter
(
rule1
->
rule1
.
getCompare
()
==
2
).
collect
(
Collectors
.
toList
());
Rule
rule
=
new
Rule
();
if
(
ruleList
.
size
()
>
0
){
rule
=
ruleList
.
get
(
0
);
}
List
<
String
>
ruleKeyList
=
ruleList
.
stream
().
map
(
Rule:
:
getRuleKey
).
collect
(
Collectors
.
toList
());
String
successFileNameList
=
""
;
String
errorFileNameList
=
""
;
String
errorReason
=
""
;
int
total
=
dataFiles
.
length
;
int
total
=
0
;
percent
=
0
;
for
(
File
dataFile
:
dataFiles
){
List
<
Map
<
String
,
Object
>>
mapList
=
new
ArrayList
<>();
//取模板,如果有模板文件传过来就解析模板文件并保存,否则就读本地模板
Map
<
String
,
int
[]>
indexMap
=
getIndenxMap
(
null
);
if
(
indexMap
.
isEmpty
()){
excelLogService
.
save
(
new
ExcelLog
(
"导入失败"
,
"没有模板文件"
,
""
));
return
ResultUtil
.
failed
(
"没有模板文件导入失败!"
);
}
//取数据
FileInputStream
dataFis
=
new
FileInputStream
(
dataFile
);
Workbook
dataWb
=
null
;
String
fileName
=
dataFile
.
getName
();
if
(
fileName
.
endsWith
(
"xls"
))
{
dataWb
=
new
HSSFWorkbook
(
dataFis
);
}
else
if
(
fileName
.
endsWith
(
"xlsx"
))
{
dataWb
=
new
XSSFWorkbook
(
dataFis
);
}
else
{
errorFileNameList
=
errorFileNameList
+
"["
+
fileName
+
"]"
;
errorReason
=
"不是excel文件或保存失败"
;
dataFile
.
renameTo
(
new
File
(
errorPath
+
fileName
));
continue
;
}
for
(
int
i
=
0
;
i
<
dataWb
.
getNumberOfSheets
();
i
++){
Sheet
sheet1
=
dataWb
.
getSheetAt
(
i
);
if
(
"引用表(请勿改动)"
.
equals
(
sheet1
.
getSheetName
())){
try
{
//取模板,如果有模板文件传过来就解析模板文件并保存,否则就读本地模板
Template
template
=
new
Template
();
String
tem
=
template
.
getTemplate
(
"template.txt"
);
Map
<
String
,
int
[]>
indexMap
=
JSON
.
parseObject
(
tem
,
new
TypeReference
<
Map
<
String
,
int
[]>>(){});
if
(
indexMap
.
isEmpty
()){
excelLogService
.
save
(
new
ExcelLog
(
"导入失败"
,
"没有模板文件"
,
""
));
return
ResultUtil
.
failed
(
"没有模板文件导入失败!"
);
}
String
remarkTemplateString
=
template
.
getTemplate
(
"remarksTemplate.txt"
);
List
<
ExcelRemarks
>
remarksTemplateList
=
JSON
.
parseObject
(
remarkTemplateString
,
new
TypeReference
<
List
<
ExcelRemarks
>>(){});
//取数据
FileInputStream
dataFis
=
new
FileInputStream
(
dataFile
);
Workbook
dataWb
=
null
;
if
(
fileName
.
endsWith
(
"xls"
))
{
dataWb
=
new
HSSFWorkbook
(
dataFis
);
}
else
if
(
fileName
.
endsWith
(
"xlsx"
))
{
dataWb
=
new
XSSFWorkbook
(
dataFis
);
}
else
{
errorFileNameList
=
errorFileNameList
+
"["
+
fileName
+
"]"
;
errorReason
=
"不是excel文件或保存失败"
;
dataFile
.
renameTo
(
new
File
(
errorPath
+
fileName
));
continue
;
}
Map
<
String
,
Object
>
objectMap
=
new
HashMap
<>();
String
className
=
null
;
for
(
String
key
:
indexMap
.
keySet
()){
int
[]
value
=
indexMap
.
get
(
key
);
int
dataRow
=
value
[
0
];
int
dataCell
=
value
[
1
];
String
[]
classArray
=
key
.
split
(
"[.]"
);
className
=
classArray
[
0
];
if
(
dataMap
.
get
(
className
)
!=
null
&&
dataMap
.
get
(
className
).
keySet
().
contains
(
classArray
[
1
])){
objectMap
.
put
(
classArray
[
1
],
sheet1
.
getRow
(
dataRow
).
getCell
(
dataCell
).
getStringCellValue
());
for
(
int
i
=
0
;
i
<
dataWb
.
getNumberOfSheets
();
i
++){
Sheet
sheet1
=
dataWb
.
getSheetAt
(
i
);
if
(
"引用表(请勿改动)"
.
equals
(
sheet1
.
getSheetName
())){
continue
;
}
if
(
Objects
.
equals
(
key
,
rule
.
getRuleKey
())){
//查询数据库是否有相同网络名称,有就更新
List
<
QueryCondition
>
queryConditions
=
new
ArrayList
<>();
QueryCondition
queryCondition
=
new
QueryCondition
();
queryCondition
.
setName
(
classArray
[
1
]);
queryCondition
.
setType
(
"="
);
queryCondition
.
setValue
(
sheet1
.
getRow
(
dataRow
).
getCell
(
dataCell
).
getStringCellValue
());
queryConditions
.
add
(
queryCondition
);
List
<
Map
<
String
,
Object
>>
list
=
modelService
.
complexQuery
(
className
,
null
,
queryConditions
);
if
(
list
!=
null
&&
list
.
size
()
>
0
){
Object
object
=
list
.
get
(
0
).
get
(
"id"
);
objectMap
.
put
(
"id"
,
object
);
Map
<
String
,
Object
>
objectMap
=
new
HashMap
<>();
String
className
=
null
;
//取模板位置数据
for
(
String
key
:
indexMap
.
keySet
()){
int
[]
value
=
indexMap
.
get
(
key
);
int
dataRow
=
value
[
0
];
int
dataCell
=
value
[
1
];
String
[]
classArray
=
key
.
split
(
"[.]"
);
className
=
classArray
[
0
];
Row
row
=
sheet1
.
getRow
(
dataRow
);
row
.
getCell
(
dataCell
).
setCellType
(
CellType
.
STRING
);
if
(
dataMap
.
get
(
className
)
!=
null
&&
dataMap
.
get
(
className
).
keySet
().
contains
(
classArray
[
1
])){
objectMap
.
put
(
classArray
[
1
],
row
.
getCell
(
dataCell
).
getStringCellValue
());
}
if
(
ruleKeyList
.
contains
(
key
)){
//查询数据库是否有相同网络名称,有就更新
List
<
QueryCondition
>
queryConditions
=
new
ArrayList
<>();
QueryCondition
queryCondition
=
new
QueryCondition
();
queryCondition
.
setName
(
classArray
[
1
]);
queryCondition
.
setType
(
"="
);
queryCondition
.
setValue
(
row
.
getCell
(
dataCell
).
getStringCellValue
());
queryConditions
.
add
(
queryCondition
);
List
<
Map
<
String
,
Object
>>
list
=
modelService
.
complexQuery
(
className
,
null
,
queryConditions
);
if
(
list
!=
null
&&
list
.
size
()
>
0
){
Object
object
=
list
.
get
(
0
).
get
(
"id"
);
objectMap
.
put
(
"id"
,
object
);
}
}
}
//取备注模板数据,并判断是否需要替换原数据
for
(
ExcelRemarks
remark
:
remarksTemplateList
){
int
[]
value
=
remark
.
getLocation
();
int
dataRow
=
value
[
0
];
int
dataCell
=
value
[
1
];
Row
row
=
sheet1
.
getRow
(
dataRow
);
row
.
getCell
(
dataCell
).
setCellType
(
CellType
.
STRING
);
String
[]
classArray
=
remark
.
getClassName
().
split
(
"[.]"
);
Object
templateData
=
objectMap
.
get
(
classArray
[
1
]);
if
(
String
.
valueOf
(
templateData
).
contains
(
remark
.
getRemark
())){
String
remarkData
=
row
.
getCell
(
dataCell
).
getStringCellValue
();
if
(
"append"
.
equals
(
remark
.
getType
())){
Object
temData
=
objectMap
.
get
(
classArray
[
1
])
==
null
?
""
:
objectMap
.
get
(
classArray
[
1
]);
remarkData
=
temData
+
remark
.
getJointMark
()
+
remarkData
;
objectMap
.
put
(
classArray
[
1
],
temData
);
}
objectMap
.
put
(
classArray
[
1
],
remarkData
);
}
}
if
(!
objectMap
.
isEmpty
()){
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
result
.
put
(
className
,
objectMap
);
System
.
out
.
println
(
result
);
mapList
.
add
(
result
);
}
}
if
(!
objectMap
.
isEmpty
()){
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
result
.
put
(
className
,
objectMap
);
System
.
out
.
println
(
result
);
mapList
.
add
(
result
);
}
}
int
re
=
modelService
.
putValueByEntityNameList
(
mapList
);
if
(
re
==
0
){
successFileNameList
=
successFileNameList
+
"["
+
fileName
+
"]"
;
dataFile
.
renameTo
(
new
File
(
successPath
+
fileName
));
}
else
{
int
re
=
modelService
.
putValueByEntityNameList
(
mapList
);
if
(
re
==
0
){
successFileNameList
=
successFileNameList
+
"["
+
fileName
+
"]"
;
dataFile
.
renameTo
(
new
File
(
successPath
+
fileName
));
}
else
{
errorFileNameList
=
errorFileNameList
+
"["
+
fileName
+
"]"
;
errorReason
=
"不是excel文件或保存失败"
;
dataFile
.
renameTo
(
new
File
(
errorPath
+
fileName
));
}
total
=
total
+
1
;
}
catch
(
Exception
e
){
e
.
printStackTrace
();
errorFileNameList
=
errorFileNameList
+
"["
+
fileName
+
"]"
;
errorReason
=
"不是excel文件或保存失败"
;
dataFile
.
renameTo
(
new
File
(
errorPath
+
fileName
));
continue
;
}
total
=
total
-
1
;
}
percent
=
total
/
dataFiles
.
length
*
1.0
;
if
(!
""
.
equals
(
errorFileNameList
)){
...
...
@@ -205,12 +237,18 @@ public class ExcelData {
int
total
=
0
;
boolean
isSuccess
=
true
;
try
{
Map
<
String
,
int
[]>
indexMap
=
getIndenxMap
(
null
);
Template
template
=
new
Template
();
String
tem
=
template
.
getTemplate
(
"template.txt"
);
Map
<
String
,
int
[]>
indexMap
=
JSON
.
parseObject
(
tem
,
new
TypeReference
<
Map
<
String
,
int
[]>>(){});
if
(
indexMap
.
isEmpty
()){
return
ResultUtil
.
failed
(
"没有excle模板!"
);
}
File
file
=
new
File
(
path
);
File
[]
dataFiles
=
file
.
listFiles
();
if
(
dataFiles
==
null
){
return
ResultUtil
.
failed
(
"文件夹为空!"
);
}
total
=
dataFiles
.
length
;
//用于判断excel内容是否符合选项
...
...
@@ -222,135 +260,171 @@ public class ExcelData {
//取所有字段的引用map<字段名,引用列表>
Map
<
String
,
List
<
Quote
>>
he
=
modelHelper
.
getQuoteList
(
className
);
for
(
File
dataFile
:
dataFiles
){
FileInputStream
dataFis
=
new
FileInputStream
(
dataFile
);
Workbook
wb
=
null
;
String
fileName
=
dataFile
.
getName
();
if
(
fileName
.
endsWith
(
"xls"
))
{
wb
=
new
HSSFWorkbook
(
dataFis
);
}
else
if
(
fileName
.
endsWith
(
"xlsx"
))
{
wb
=
new
XSSFWorkbook
(
dataFis
);
}
Map
<
String
,
List
<
String
>>
map
=
new
HashMap
<>();
Map
<
String
,
String
>
content
=
new
HashMap
<>();
isSuccess
=
true
;
String
tel
=
null
;
//联系方式
String
unitName
=
null
;
//联系方式
String
buildTel
=
null
;
//承建单位
List
<
String
>
result
=
new
ArrayList
<>();
Map
<
String
,
String
>
networkName
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
wb
.
getNumberOfSheets
();
i
++){
Sheet
sheet1
=
wb
.
getSheetAt
(
i
);
if
(
"引用表(请勿改动)"
.
equals
(
sheet1
.
getSheetName
())){
continue
;
}
if
(
sheet1
==
null
){
continue
;
}
String
sameNet
=
null
;
for
(
String
key
:
indexMap
.
keySet
()){
//key=className.property
int
[]
value
=
indexMap
.
get
(
key
);
int
dataRow
=
value
[
0
];
int
dataCell
=
value
[
1
];
String
data
=
sheet1
.
getRow
(
dataRow
).
getCell
(
dataCell
).
getStringCellValue
();
try
{
FileInputStream
dataFis
=
new
FileInputStream
(
dataFile
);
Workbook
wb
=
null
;
//判断是否是两个相同的sheet
if
(
content
.
get
(
sheet1
.
getSheetName
())
==
null
||
content
.
get
(
sheet1
.
getSheetName
()).
isEmpty
())
{
content
.
put
(
sheet1
.
getSheetName
(),
data
);
}
else
{
String
con
=
content
.
get
(
sheet1
.
getSheetName
());
content
.
put
(
sheet1
.
getSheetName
(),
con
+
data
);
if
(
fileName
.
endsWith
(
"xls"
))
{
wb
=
new
HSSFWorkbook
(
dataFis
);
}
else
if
(
fileName
.
endsWith
(
"xlsx"
))
{
wb
=
new
XSSFWorkbook
(
dataFis
);
}
Map
<
String
,
List
<
String
>>
map
=
new
HashMap
<>();
Map
<
String
,
List
<
String
>>
sheetNameMap
=
new
HashMap
<>();
Map
<
String
,
String
>
content
=
new
HashMap
<>();
Map
<
String
,
String
>
networkName
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
wb
.
getNumberOfSheets
();
i
++){
Sheet
sheet1
=
wb
.
getSheetAt
(
i
);
if
(
"引用表(请勿改动)"
.
equals
(
sheet1
.
getSheetName
())){
continue
;
}
if
(
sheet1
==
null
){
continue
;
}
//判断引用
String
propertyName
=
key
.
split
(
"[.]"
)[
1
];
List
<
Quote
>
quotes
=
he
.
get
(
propertyName
);
String
sameNet
=
null
;
String
sanmeNetName
=
""
;
Row
row
=
null
;
for
(
String
key
:
indexMap
.
keySet
()){
//key=className.property
int
[]
value
=
indexMap
.
get
(
key
);
int
dataRow
=
value
[
0
];
int
dataCell
=
value
[
1
];
row
=
sheet1
.
getRow
(
dataRow
);
row
.
getCell
(
dataCell
).
setCellType
(
CellType
.
STRING
);
String
data
=
row
.
getCell
(
dataCell
).
getStringCellValue
();
// TODO: 21-5-21
if
(
"diaoyan.unit_contact"
.
equals
(
key
)
&&
tel
==
null
){
tel
=
data
;
}
if
(
"diaoyan.contractor_contact_information"
.
equals
(
key
)
&&
buildTel
==
null
){
buildTel
=
data
;
}
if
(
"diaoyan.name_of_user"
.
equals
(
key
)
&&
unitName
==
null
){
unitName
=
data
;
}
//判断是否是两个相同的sheet
if
(
content
.
get
(
sheet1
.
getSheetName
())
==
null
||
content
.
get
(
sheet1
.
getSheetName
()).
isEmpty
())
{
content
.
put
(
sheet1
.
getSheetName
(),
data
);
}
else
{
String
con
=
content
.
get
(
sheet1
.
getSheetName
());
content
.
put
(
sheet1
.
getSheetName
(),
con
+
data
);
}
//判断引用
String
propertyName
=
key
.
split
(
"[.]"
)[
1
];
List
<
Quote
>
quotes
=
he
.
get
(
propertyName
);
// System.out.println("引用");
// System.out.println(JSON.toJSONString(quotes));
if
(
quotes
!=
null
&&
quotes
.
size
()
>
0
){
boolean
isQuote
=
true
;
for
(
Quote
quote
:
quotes
){
if
(
Objects
.
equals
(
data
,
quote
.
getValue
())){
isQuote
=
false
;
break
;
if
(
quotes
!=
null
&&
quotes
.
size
()
>
0
){
boolean
isQuote
=
true
;
for
(
Quote
quote
:
quotes
){
if
(
Objects
.
equals
(
data
,
quote
.
getValue
())){
isQuote
=
false
;
break
;
}
}
if
(
isQuote
){
int
k
=
result
.
size
()
+
1
;
result
.
add
(
k
+
".\""
+
sheet1
.
getSheetName
()
+
"\"第"
+
(
dataRow
+
1
)
+
"行第"
+
(
dataCell
+
1
)
+
"列不符合规则"
);
isSuccess
=
false
;
}
}
if
(
isQuote
){
int
k
=
result
.
size
()
+
1
;
System
.
out
.
println
();
System
.
out
.
println
(
JSON
.
toJSONString
(
quotes
));
result
.
add
(
k
+
"."
+
sheet1
.
getSheetName
()
+
data
+
"不符合引用规则"
);
isSuccess
=
false
;
}
}
//正则规则判断
List
<
Rule
>
ruleList
=
rules
.
stream
().
filter
(
rule1
->
rule1
.
getRuleKey
().
equals
(
key
)).
collect
(
Collectors
.
toList
());
if
(!
ruleList
.
isEmpty
())
{
Rule
rule
=
ruleList
.
get
(
0
);
//判断同一个文件里所有sheet中该字段是否相同
if
(
rule
.
getCompare
()
==
1
)
{
if
(
map
.
get
(
rule
.
getName
())==
null
||
map
.
get
(
rule
.
getName
()).
isEmpty
())
{
List
<
String
>
list
=
new
ArrayList
<>();
list
.
add
(
data
);
map
.
put
(
rule
.
getName
(),
list
);
}
else
{
map
.
get
(
rule
.
getName
()).
add
(
data
);
//正则规则判断
List
<
Rule
>
ruleList
=
rules
.
stream
().
filter
(
rule1
->
rule1
.
getRuleKey
().
equals
(
key
)).
collect
(
Collectors
.
toList
());
if
(!
ruleList
.
isEmpty
())
{
Rule
rule
=
ruleList
.
get
(
0
);
//判断同一个文件里所有sheet中该字段是否相同
if
(
rule
.
getCompare
()
==
1
)
{
if
(
map
.
get
(
rule
.
getName
())==
null
||
map
.
get
(
rule
.
getName
()).
isEmpty
())
{
List
<
String
>
list
=
new
ArrayList
<>();
list
.
add
(
data
);
List
<
String
>
list1
=
new
ArrayList
<>();
list1
.
add
(
sheet1
.
getSheetName
());
map
.
put
(
rule
.
getName
(),
list
);
sheetNameMap
.
put
(
rule
.
getName
(),
list1
);
}
else
{
if
(!
map
.
get
(
rule
.
getName
()).
contains
(
data
)){
map
.
get
(
rule
.
getName
()).
add
(
data
);
}
}
}
else
if
(
rule
.
getCompare
()
==
2
){
//判断统一文件中该字段是否唯一
if
(
networkName
.
keySet
().
contains
(
data
))
{
sameNet
=
networkName
.
get
(
data
);
}
sanmeNetName
=
rule
.
getName
();
networkName
.
put
(
data
,
sheet1
.
getSheetName
());
}
}
else
if
(
rule
.
getCompare
()
==
2
){
//判断统一文件中该字段是否唯一
if
(
networkName
.
keySet
().
contains
(
data
))
{
sameNet
=
networkName
.
get
(
data
);
Pattern
p
=
Pattern
.
compile
(
rule
.
getRule
());
Matcher
m
=
p
.
matcher
(
data
);
if
(!
m
.
matches
())
{
//不符合
int
k
=
result
.
size
()
+
1
;
result
.
add
(
k
+
".\""
+
sheet1
.
getSheetName
()
+
"\"第"
+
(
dataRow
+
1
)
+
"行第"
+
(
dataCell
+
1
)
+
"列不符合规则"
);
isSuccess
=
false
;
}
networkName
.
put
(
data
,
sheet1
.
getSheetName
());
}
Pattern
p
=
Pattern
.
compile
(
rule
.
getRule
());
Matcher
m
=
p
.
matcher
(
data
);
if
(!
m
.
matches
())
{
//不符合
int
k
=
result
.
size
()
+
1
;
result
.
add
(
k
+
"."
+
sheet1
.
getSheetName
()
+
rule
.
getName
()
+
"不符合正则规则"
);
isSuccess
=
false
;
}
}
}
if
(
sameNet
!=
null
){
String
now
=
content
.
get
(
sheet1
.
getSheetName
())
;
String
last
=
content
.
get
(
sameNet
);
int
k
=
result
.
size
()
+
1
;
if
(
Objects
.
equals
(
now
,
last
))
{
result
.
add
(
k
+
"."
+
sameNet
+
"与"
+
sheet1
.
getSheetName
()
+
"存在相同表
"
);
}
else
{
result
.
add
(
k
+
"."
+
sameNet
+
"与"
+
sheet1
.
getSheetName
()
+
"不同网络之间,网络名重名"
)
;
if
(
sameNet
!=
null
){
String
now
=
content
.
get
(
sheet1
.
getSheetName
());
String
last
=
content
.
get
(
sameNet
);
int
k
=
result
.
size
()
+
1
;
if
(
Objects
.
equals
(
now
,
last
)){
result
.
add
(
k
+
".\""
+
sameNet
+
"\"与\""
+
sheet1
.
getSheetName
()
+
"\"存在内容相同表"
)
;
}
else
{
result
.
add
(
k
+
".\""
+
sameNet
+
"\"与\""
+
sheet1
.
getSheetName
()
+
"\"的\""
+
sanmeNetName
+
"\"重名
"
);
}
isSuccess
=
false
;
}
isSuccess
=
false
;
}
}
if
(!
map
.
isEmpty
()){
for
(
String
key
:
map
.
keySet
()){
List
<
String
>
list
=
map
.
get
(
key
);
if
(
1
<
new
HashSet
<
Object
>(
list
).
size
()){
if
(!
map
.
isEmpty
()
&&
map
.
size
()
>
1
){
for
(
String
key
:
map
.
keySet
()){
List
<
String
>
list
=
sheetNameMap
.
get
(
key
);
String
sheetName
=
""
;
for
(
String
s
:
list
){
sheetName
=
"\""
+
s
+
"\""
;
}
//不是全部相同
int
k
=
result
.
size
()
+
1
;
result
.
add
(
k
+
"."
+
key
+
"在同一文件里
数据不同"
);
result
.
add
(
k
+
"."
+
sheetName
+
"中\""
+
key
+
"\"的
数据不同"
);
isSuccess
=
false
;
}
}
}
if
(
isSuccess
){
dataFile
.
renameTo
(
new
File
(
tmpPath
+
fileName
));
successNum
=
successNum
+
1
;
if
(
isSuccess
){
dataFile
.
renameTo
(
new
File
(
tmpPath
+
fileName
));
successNum
=
successNum
+
1
;
}
else
{
}
else
{
// dataFile.renameTo(new File(errorPath + fileName));
errorNum
=
errorNum
+
1
;
excelVos
.
add
(
new
ExcelErrorVo
(
fileName
,
unitName
,
tel
,
buildTel
,
result
));
}
}
catch
(
Exception
e
){
e
.
printStackTrace
();
errorNum
=
errorNum
+
1
;
excelVos
.
add
(
new
ExcelErrorVo
(
fileName
,
result
));
int
k
=
result
.
size
()
+
1
;
result
.
add
(
k
+
"."
+
"不是模板文件或读文件失败"
);
excelVos
.
add
(
new
ExcelErrorVo
(
fileName
,
unitName
,
tel
,
buildTel
,
result
));
}
}
}
catch
(
IO
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ResultUtil
.
failed
(
"预览失败!"
);
}
ExcelVo
excelVo
=
new
ExcelVo
(
total
,
successNum
,
errorNum
,
excelVos
);
File
[]
successFile
=
new
File
(
tmpPath
).
listFiles
();
int
importNum
=
successFile
==
null
?
0
:
successFile
.
length
;
ExcelVo
excelVo
=
new
ExcelVo
(
total
,
successNum
,
errorNum
,
importNum
,
excelVos
);
return
ResultUtil
.
success
(
excelVo
,
"预览成功"
);
}
...
...
@@ -361,6 +435,7 @@ public class ExcelData {
*/
public
Map
<
String
,
int
[]>
getIndenxMap
(
MultipartFile
file
)
throws
IOException
{
Map
<
String
,
int
[]>
indexMap
=
new
HashMap
<>();
List
<
ExcelRemarks
>
remarksList
=
new
ArrayList
<>();
if
(
file
!=
null
){
String
fileName
=
file
.
getResource
().
getFilename
();
InputStream
fis
=
null
;
...
...
@@ -378,27 +453,43 @@ public class ExcelData {
row
=
sheet
.
getRow
(
index
);
for
(
int
i
=
row
.
getFirstCellNum
();
i
<
row
.
getLastCellNum
();
++
i
)
{
row
.
getCell
(
i
).
setCellType
(
CellType
.
STRING
);
String
data
=
row
.
getCell
(
i
).
getStringCellValue
();
if
(
row
.
getCell
(
i
)
!=
null
&&
data
.
contains
(
"$"
))
{
if
(
row
.
getCell
(
i
)
!=
null
&&
row
.
getCell
(
i
).
getStringCellValue
().
contains
(
"$"
))
{
//{className.propertyName=[1,2]}
String
type
=
row
.
getCell
(
i
).
getStringCellValue
().
substring
(
1
);
int
[]
idenx
=
new
int
[
2
];
idenx
[
0
]
=
row
.
getRowNum
();
idenx
[
1
]
=
i
;
indexMap
.
put
(
type
,
idenx
);
String
type
=
null
;
if
(
data
.
contains
(
"*"
)){
//备注内容,data=$A.name*备注*insert*其他
String
[]
re
=
data
.
split
(
"[*]"
);
if
(
re
.
length
>
3
){
type
=
re
[
0
].
substring
(
1
);
remarksList
.
add
(
new
ExcelRemarks
(
type
,
re
[
1
],
re
[
2
],
re
[
3
],
idenx
));
}
}
else
{
//{className.propertyName=[1,2]},data=$A.name
type
=
data
.
substring
(
1
);
indexMap
.
put
(
type
.
trim
(),
idenx
);
}
}
}
}
Template
template
=
new
Template
();
template
.
saveTemplate
(
JSON
.
toJSONString
(
indexMap
));
}
else
{
Template
template
=
new
Template
();
String
tem
=
template
.
getTemplate
();
if
(
tem
.
isEmpty
()){
return
indexMap
;
}
indexMap
=
JSON
.
parseObject
(
tem
,
new
TypeReference
<
Map
<
String
,
int
[]>>(){});
template
.
saveTemplate
(
JSON
.
toJSONString
(
indexMap
),
"template.txt"
);
template
.
saveTemplate
(
JSON
.
toJSONString
(
remarksList
),
"remarksTemplate.txt"
);
}
// else {
// Template template = new Template();
// String tem = template.getTemplate();
// if (tem.isEmpty()){
// return indexMap;
// }
// indexMap = JSON.parseObject(tem, new TypeReference<Map<String, int[]>>(){});
// }
return
indexMap
;
}
...
...
@@ -436,7 +527,7 @@ public class ExcelData {
}
public
ResponseEntity
findPrecen
(){
return
ResultUtil
.
success
(
percent
,
"
保存
成功"
);
return
ResultUtil
.
success
(
percent
,
"
查询
成功"
);
}
}
src/main/java/com/tykj/model_layer/excel/ExcelRemarks.java
0 → 100644
浏览文件 @
bb635a88
package
com
.
tykj
.
model_layer
.
excel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@AllArgsConstructor
@NoArgsConstructor
@Data
public
class
ExcelRemarks
{
@ApiModelProperty
(
"表名.字段名"
)
private
String
className
;
@ApiModelProperty
(
"备注标识"
)
private
String
remark
;
@ApiModelProperty
(
"连接方式"
)
private
String
type
;
@ApiModelProperty
(
"连接字符"
)
private
String
jointMark
;
@ApiModelProperty
(
"备注位置"
)
private
int
[]
location
;
}
src/main/java/com/tykj/model_layer/excel/Template.java
浏览文件 @
bb635a88
...
...
@@ -4,14 +4,13 @@ import java.io.*;
import
java.util.Properties
;
public
class
Template
{
private
String
path
=
System
.
getProperty
(
"user.dir"
)
+
"/template.txt"
;
/**
* 把模板数据保存在txt文件中
* @param data 模板json数据;{className.propertyName:[1,2]}
* key为类名.属性名,value为该属性在模板excel中的位置[行,列]
*/
public
void
saveTemplate
(
String
data
){
public
void
saveTemplate
(
String
data
,
String
fileName
){
String
path
=
System
.
getProperty
(
"user.dir"
)
+
"/"
+
fileName
;
Properties
properties
=
new
Properties
();
try
{
System
.
out
.
println
(
path
);
...
...
@@ -34,8 +33,8 @@ public class Template {
* 前端没有传模板的时候,读取本地模板
* @return
*/
public
String
getTemplate
(){
String
pathname
=
path
;
public
String
getTemplate
(
String
fileName
){
String
pathname
=
System
.
getProperty
(
"user.dir"
)
+
"/"
+
fileName
;
try
{
String
result
=
""
;
FileReader
fileReader
=
null
;
...
...
src/main/resources/application.yml
浏览文件 @
bb635a88
...
...
@@ -4,6 +4,16 @@ spring:
password
:
Huang123+
url
:
jdbc:mysql://47.106.142.73:3306/dataTest?useSSL=false&serverTimezone=GMT%2b8&characterEncoding=utf-8&nullCatalogMeansCurrent=true
driver-class-name
:
com.mysql.cj.jdbc.Driver
hikari
:
read-only
:
false
connection-timeout
:
60000
idle-timeout
:
60000
validation-timeout
:
3000
max-lifetime
:
60000
login-timeout
:
5
maximum-pool-size
:
60
minimum-idle
:
10
jpa
:
show-sql
:
true
hibernate
:
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论