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
f60dee3f
Commit
f60dee3f
authored
Jan 07, 2026
by
huyuchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
huych-电子档案批量导入第五次提交
parent
3ab15459
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
16 deletions
+26
-16
ElectronicArchiveImportServiceImpl.java
...atch/service/impl/ElectronicArchiveImportServiceImpl.java
+26
-16
No files found.
yifu-batch/yifu-batch-biz/src/main/java/com/yifu/cloud/plus/v1/batch/service/impl/ElectronicArchiveImportServiceImpl.java
View file @
f60dee3f
...
@@ -559,15 +559,16 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -559,15 +559,16 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
// 获取ZIP包的根目录(第一级目录,身份证+姓名目录)
// 获取ZIP包的根目录(第一级目录,身份证+姓名目录)
File
[]
zipRootDirs
=
tempDir
.
listFiles
(
File:
:
isDirectory
);
File
[]
zipRootDirs
=
tempDir
.
listFiles
(
File:
:
isDirectory
);
Map
<
String
,
File
>
zipDirMap
=
new
HashMap
<>();
Map
<
String
,
List
<
File
>
>
zipDirMap
=
new
HashMap
<>();
if
(
zipRootDirs
!=
null
&&
zipRootDirs
.
length
>
0
)
{
if
(
zipRootDirs
!=
null
&&
zipRootDirs
.
length
>
0
)
{
// 将ZIP中的目录按照 身份证_姓名 建立映射
// 将ZIP中的目录按照 身份证_姓名 建立映射
,支持同一个人有多个文件夹
for
(
File
personDir
:
zipRootDirs
)
{
for
(
File
personDir
:
zipRootDirs
)
{
String
dirName
=
personDir
.
getName
();
String
dirName
=
personDir
.
getName
();
Map
<
String
,
String
>
idNameMap
=
parseIdCardAndName
(
dirName
);
Map
<
String
,
String
>
idNameMap
=
parseIdCardAndName
(
dirName
);
if
(!
idNameMap
.
isEmpty
()
&&
idNameMap
.
containsKey
(
"idCard"
)
&&
idNameMap
.
containsKey
(
"name"
))
{
if
(!
idNameMap
.
isEmpty
()
&&
idNameMap
.
containsKey
(
"idCard"
)
&&
idNameMap
.
containsKey
(
"name"
))
{
String
uniqueKey
=
idNameMap
.
get
(
"idCard"
)
+
"_"
+
idNameMap
.
get
(
"name"
);
String
uniqueKey
=
idNameMap
.
get
(
"idCard"
)
+
"_"
+
idNameMap
.
get
(
"name"
);
zipDirMap
.
put
(
uniqueKey
,
personDir
);
// 使用List存储,支持同一个人有多个文件夹
zipDirMap
.
computeIfAbsent
(
uniqueKey
,
k
->
new
ArrayList
<>()).
add
(
personDir
);
}
}
}
}
}
}
...
@@ -583,19 +584,22 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -583,19 +584,22 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
String
uniqueKey
=
detail
.
getEmpIdcard
()
+
"_"
+
detail
.
getEmpName
();
String
uniqueKey
=
detail
.
getEmpIdcard
()
+
"_"
+
detail
.
getEmpName
();
// 检查ZIP中是否存在该人员的目录
// 检查ZIP中是否存在该人员的目录
File
personDir
=
zipDirMap
.
get
(
uniqueKey
);
List
<
File
>
personDirs
=
zipDirMap
.
get
(
uniqueKey
);
if
(
personDir
==
null
)
{
if
(
personDir
s
==
null
||
personDirs
.
isEmpty
()
)
{
// ZIP中没有该人员的文件夹,记录为跳过
// ZIP中没有该人员的文件夹,记录为跳过
personProcessResultMap
.
put
(
uniqueKey
,
ArchiveConstants
.
PROCESS_RESULT_SKIP
);
personProcessResultMap
.
put
(
uniqueKey
,
ArchiveConstants
.
PROCESS_RESULT_SKIP
);
personFailReasonMap
.
put
(
uniqueKey
,
"压缩包中未找到对应文件夹,跳过处理"
);
personFailReasonMap
.
put
(
uniqueKey
,
"压缩包中未找到对应文件夹,跳过处理"
);
personMaterialTypesMap
.
put
(
uniqueKey
,
new
ArrayList
<>());
personMaterialTypesMap
.
put
(
uniqueKey
,
new
ArrayList
<>());
}
else
{
}
else
{
// ZIP中存在该人员的文件夹,处理其附件
// ZIP中存在该人员的文件夹,处理其附件
(可能有多个文件夹)
List
<
String
>
materialTypes
=
new
ArrayList
<>();
List
<
String
>
materialTypes
=
new
ArrayList
<>();
List
<
String
>
failReasons
=
new
ArrayList
<>();
List
<
String
>
failReasons
=
new
ArrayList
<>();
processPersonDirectoryWithResult
(
personDir
,
detail
,
materialTypes
,
failReasons
,
taskId
);
// 遍历该人员的所有文件夹
for
(
File
personDir
:
personDirs
)
{
processPersonDirectoryWithResult
(
personDir
,
detail
,
materialTypes
,
failReasons
,
taskId
);
}
personMaterialTypesMap
.
put
(
uniqueKey
,
materialTypes
);
personMaterialTypesMap
.
put
(
uniqueKey
,
materialTypes
);
...
@@ -836,6 +840,9 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -836,6 +840,9 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
// 用于记录该人员的所有资料类型
// 用于记录该人员的所有资料类型
Set
<
String
>
materialTypesSet
=
new
HashSet
<>();
Set
<
String
>
materialTypesSet
=
new
HashSet
<>();
// 收集直接文件(作为存量类型处理)
List
<
File
>
stockFiles
=
new
ArrayList
<>();
// 遍历第三级,按资料类型分组处理所有文件
// 遍历第三级,按资料类型分组处理所有文件
for
(
File
subFile
:
subFiles
)
{
for
(
File
subFile
:
subFiles
)
{
...
@@ -866,15 +873,18 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -866,15 +873,18 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
failReasons
.
add
(
materialType
+
":"
+
result
);
failReasons
.
add
(
materialType
+
":"
+
result
);
}
}
}
else
{
}
else
{
// 直接是文件,默认为存量类型,按单个文件处理
// 直接是文件,收集起来统一作为存量类型处理
List
<
File
>
singleFileList
=
new
ArrayList
<>();
stockFiles
.
add
(
subFile
);
singleFileList
.
add
(
subFile
);
}
String
result
=
processMaterialTypeFilesWithResult
(
singleFileList
,
detail
,
ArchiveConstants
.
MATERIAL_TYPE_STOCK
,
taskId
);
}
if
(
"success"
.
equals
(
result
))
{
materialTypesSet
.
add
(
ArchiveConstants
.
MATERIAL_TYPE_STOCK
);
// 统一处理所有直接文件(存量类型)
}
else
{
if
(!
stockFiles
.
isEmpty
())
{
failReasons
.
add
(
ArchiveConstants
.
MATERIAL_TYPE_STOCK
+
":"
+
result
);
String
result
=
processMaterialTypeFilesWithResult
(
stockFiles
,
detail
,
ArchiveConstants
.
MATERIAL_TYPE_STOCK
,
taskId
);
}
if
(
"success"
.
equals
(
result
))
{
materialTypesSet
.
add
(
ArchiveConstants
.
MATERIAL_TYPE_STOCK
);
}
else
{
failReasons
.
add
(
ArchiveConstants
.
MATERIAL_TYPE_STOCK
+
":"
+
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