Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
Y
yifu-mvp
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fangxinjiang
yifu-mvp
Commits
1188e096
Commit
1188e096
authored
Jan 13, 2026
by
huyuchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
huych-入职确认信息编辑提交
parent
8251d9da
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
50 additions
and
32 deletions
+50
-32
ElectronicArchiveImportServiceImpl.java
...atch/service/impl/ElectronicArchiveImportServiceImpl.java
+50
-32
No files found.
yifu-batch/yifu-batch-biz/src/main/java/com/yifu/cloud/plus/v1/batch/service/impl/ElectronicArchiveImportServiceImpl.java
View file @
1188e096
...
...
@@ -47,6 +47,8 @@ import java.io.IOException;
import
java.io.InputStream
;
import
java.util.*
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -1232,44 +1234,60 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
*/
private
Map
<
String
,
String
>
parseIdCardAndName
(
String
folderName
)
{
Map
<
String
,
String
>
result
=
new
HashMap
<>();
if
(
folderName
==
null
||
folderName
.
trim
().
isEmpty
())
{
return
result
;
}
// 统一处理全角和半角横线
folderName
=
folderName
.
replace
(
"—"
,
"-"
);
// 尝试用-分隔
if
(
folderName
.
contains
(
"-"
)
||
folderName
.
contains
(
"—"
))
{
String
[]
parts
;
// 身份证正则表达式:18位,前17位为数字,最后一位可以是数字或X(大小写)
String
idCardPattern
=
"\\d{17}[\\dXx]"
;
// 情况1:包含分隔符"-"
if
(
folderName
.
contains
(
"-"
))
{
parts
=
folderName
.
split
(
"-"
);
}
else
{
parts
=
folderName
.
split
(
"—"
);
}
String
[]
parts
=
folderName
.
split
(
"-"
);
if
(
parts
.
length
==
2
)
{
// 判断哪个是身份证号(18位数字)
if
(
parts
[
0
].
matches
(
"\\d{18}"
))
{
result
.
put
(
"idCard"
,
parts
[
0
]);
result
.
put
(
"name"
,
parts
[
1
]);
}
else
if
(
parts
[
1
].
matches
(
"\\d{18}"
))
{
result
.
put
(
"name"
,
parts
[
0
]);
result
.
put
(
"idCard"
,
parts
[
1
]);
String
part1
=
parts
[
0
].
trim
();
String
part2
=
parts
[
1
].
trim
();
if
(
part1
.
matches
(
idCardPattern
))
{
result
.
put
(
"idCard"
,
part1
.
toUpperCase
());
// 统一转为大写
result
.
put
(
"name"
,
part2
);
}
else
if
(
part2
.
matches
(
idCardPattern
))
{
result
.
put
(
"name"
,
part1
);
result
.
put
(
"idCard"
,
part2
.
toUpperCase
());
}
}
}
else
{
// 尝试提取18位身份证号
int
idCardStart
=
-
1
;
for
(
int
i
=
0
;
i
<=
folderName
.
length
()
-
18
;
i
++)
{
String
sub
=
folderName
.
substring
(
i
,
i
+
18
);
if
(
sub
.
matches
(
"\\d{18}"
))
{
idCardStart
=
i
;
break
;
return
result
;
}
// 情况2:无分隔符,直接拼接
// 使用正则表达式查找身份证号
Pattern
pattern
=
Pattern
.
compile
(
idCardPattern
);
Matcher
matcher
=
pattern
.
matcher
(
folderName
);
if
(
matcher
.
find
())
{
String
idCard
=
matcher
.
group
().
toUpperCase
();
int
start
=
matcher
.
start
();
int
end
=
matcher
.
end
();
// 提取姓名部分(身份证前后部分合并)
String
name
;
if
(
start
==
0
)
{
// 身份证在开头
name
=
folderName
.
substring
(
end
).
trim
();
}
else
if
(
end
==
folderName
.
length
())
{
// 身份证在结尾
name
=
folderName
.
substring
(
0
,
start
).
trim
();
}
else
{
// 身份证在中间(理论上不应该出现,但处理一下)
name
=
(
folderName
.
substring
(
0
,
start
)
+
folderName
.
substring
(
end
)).
trim
();
}
if
(
idCardStart
>=
0
)
{
String
idCard
=
folderName
.
substring
(
idCardStart
,
idCardStart
+
18
);
String
name
=
folderName
.
substring
(
0
,
idCardStart
)
+
folderName
.
substring
(
idCardStart
+
18
);
result
.
put
(
"idCard"
,
idCard
);
result
.
put
(
"name"
,
name
);
}
}
return
result
;
}
...
...
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