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
37b2faef
Commit
37b2faef
authored
Jan 05, 2026
by
huyuchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
huych-电子档案批量导入第四次提交
parent
bd54c0d1
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
87 additions
and
56 deletions
+87
-56
TAttaInfo.java
...n/java/com/yifu/cloud/plus/v1/batch/entity/TAttaInfo.java
+13
-7
FileUploadController.java
.../cloud/plus/v1/batch/controller/FileUploadController.java
+2
-1
FileUploadService.java
...m/yifu/cloud/plus/v1/batch/service/FileUploadService.java
+4
-0
ElectronicArchiveImportServiceImpl.java
...atch/service/impl/ElectronicArchiveImportServiceImpl.java
+20
-16
FileUploadServiceImpl.java
...oud/plus/v1/batch/service/impl/FileUploadServiceImpl.java
+17
-2
TElectronicArchiveDetailServiceImpl.java
...tch/service/impl/TElectronicArchiveDetailServiceImpl.java
+31
-30
No files found.
yifu-batch/yifu-batch-api/src/main/java/com/yifu/cloud/plus/v1/batch/entity/TAttaInfo.java
View file @
37b2faef
...
@@ -61,13 +61,19 @@ public class TAttaInfo extends BaseEntity {
...
@@ -61,13 +61,19 @@ public class TAttaInfo extends BaseEntity {
@Length
(
max
=
20
,
message
=
"关系类型不能超过20个字符"
)
@Length
(
max
=
20
,
message
=
"关系类型不能超过20个字符"
)
@Schema
(
description
=
"关系类型 1 任务表附件 2 zip附件 3反馈表附件 4人员文件"
)
@Schema
(
description
=
"关系类型 1 任务表附件 2 zip附件 3反馈表附件 4人员文件"
)
private
String
relationType
;
private
String
relationType
;
/**
/**
* 实体id和关系类型共同确定附件所属
* 实体id和关系类型共同确定附件所属
*/
*/
@NotBlank
(
message
=
"实体id和关系类型共同确定附件所属不能为空"
)
@NotBlank
(
message
=
"实体id和关系类型共同确定附件所属不能为空"
)
@Length
(
max
=
32
,
message
=
"实体id和关系类型共同确定附件所属不能超过32个字符"
)
@Length
(
max
=
32
,
message
=
"实体id和关系类型共同确定附件所属不能超过32个字符"
)
@Schema
(
description
=
"实体id和关系类型共同确定附件所属"
)
@Schema
(
description
=
"实体id和关系类型共同确定附件所属"
)
private
String
domainId
;
private
String
domainId
;
/**
* 任务ID,用于区分同一个domainId下不同任务的附件
*/
@Length
(
max
=
32
,
message
=
"任务ID不能超过32个字符"
)
@Schema
(
description
=
"任务ID,用于区分同一个domainId下不同任务的附件"
)
private
String
taskId
;
/**
/**
* 状态 0可用 1不可用
* 状态 0可用 1不可用
*/
*/
...
...
yifu-batch/yifu-batch-biz/src/main/java/com/yifu/cloud/plus/v1/batch/controller/FileUploadController.java
View file @
37b2faef
...
@@ -149,7 +149,7 @@ public class FileUploadController {
...
@@ -149,7 +149,7 @@ public class FileUploadController {
if
(
Common
.
isEmpty
(
attas
))
{
if
(
Common
.
isEmpty
(
attas
))
{
return
new
R
<>(
attas
);
return
new
R
<>(
attas
);
}
}
for
(
TAttaInfo
atta:
attas
){
for
(
TAttaInfo
atta:
attas
){
URL
url
=
ossUtil
.
getObjectUrl
(
"yf-hr-efile-source"
,
atta
.
getAttaSrc
());
URL
url
=
ossUtil
.
getObjectUrl
(
"yf-hr-efile-source"
,
atta
.
getAttaSrc
());
atta
.
setAttaUrl
(
url
.
toString
().
replace
(
"http"
,
"https"
));
atta
.
setAttaUrl
(
url
.
toString
().
replace
(
"http"
,
"https"
));
}
}
...
@@ -218,6 +218,7 @@ public class FileUploadController {
...
@@ -218,6 +218,7 @@ public class FileUploadController {
attaInfo
.
setRelationType
(
type
);
attaInfo
.
setRelationType
(
type
);
attaInfo
.
setDomainId
(
CommonConstants
.
ZERO_STRING
);
// 临时设置为"0",后续更新
attaInfo
.
setDomainId
(
CommonConstants
.
ZERO_STRING
);
// 临时设置为"0",后续更新
attaInfo
.
setTaskId
(
CommonConstants
.
ZERO_STRING
);
// 临时设置为"0",后续更新
attaInfo
.
setStatus
(
CommonConstants
.
ZERO_STRING
);
// 0可用
attaInfo
.
setStatus
(
CommonConstants
.
ZERO_STRING
);
// 0可用
// 保存附件信息到数据库
// 保存附件信息到数据库
...
...
yifu-batch/yifu-batch-biz/src/main/java/com/yifu/cloud/plus/v1/batch/service/FileUploadService.java
View file @
37b2faef
...
@@ -20,8 +20,12 @@ public interface FileUploadService {
...
@@ -20,8 +20,12 @@ public interface FileUploadService {
R
<
TAttaInfo
>
uploadFileReturnAtta
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domainId
)
throws
IOException
;
R
<
TAttaInfo
>
uploadFileReturnAtta
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domainId
)
throws
IOException
;
R
<
TAttaInfo
>
uploadFileReturnAtta
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domainId
,
String
taskId
)
throws
IOException
;
R
<
T
>
uploadAsso
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domain
,
String
uploadType
);
R
<
T
>
uploadAsso
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domain
,
String
uploadType
);
R
<
T
>
uploadAsso
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domain
,
String
uploadType
,
String
taskId
);
/**
/**
* 检查文件是否存在
* 检查文件是否存在
*
*
...
...
yifu-batch/yifu-batch-biz/src/main/java/com/yifu/cloud/plus/v1/batch/service/impl/ElectronicArchiveImportServiceImpl.java
View file @
37b2faef
...
@@ -291,6 +291,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -291,6 +291,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
attaInfo
.
setAttaName
(
fileName
);
attaInfo
.
setAttaName
(
fileName
);
attaInfo
.
setRelationType
(
ArchiveConstants
.
ATTA_RELATION_TYPE_TASK
);
attaInfo
.
setRelationType
(
ArchiveConstants
.
ATTA_RELATION_TYPE_TASK
);
attaInfo
.
setDomainId
(
taskId
);
attaInfo
.
setDomainId
(
taskId
);
attaInfo
.
setTaskId
(
taskId
);
attaInfo
.
setAttaSrc
(
filePath
);
attaInfo
.
setAttaSrc
(
filePath
);
attaInfo
.
setAttaType
(
fileName
.
substring
(
fileName
.
lastIndexOf
(
'.'
)));
attaInfo
.
setAttaType
(
fileName
.
substring
(
fileName
.
lastIndexOf
(
'.'
)));
attaInfo
.
setStatus
(
ArchiveConstants
.
ATTA_STATUS_ENABLED
);
attaInfo
.
setStatus
(
ArchiveConstants
.
ATTA_STATUS_ENABLED
);
...
@@ -441,6 +442,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -441,6 +442,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
zipAtta
.
setAttaSize
(
fileSize
);
zipAtta
.
setAttaSize
(
fileSize
);
zipAtta
.
setRelationType
(
ArchiveConstants
.
ATTA_RELATION_TYPE_ZIP
);
zipAtta
.
setRelationType
(
ArchiveConstants
.
ATTA_RELATION_TYPE_ZIP
);
zipAtta
.
setDomainId
(
taskId
);
zipAtta
.
setDomainId
(
taskId
);
zipAtta
.
setTaskId
(
taskId
);
zipAtta
.
setStatus
(
ArchiveConstants
.
ATTA_STATUS_DISABLED
);
zipAtta
.
setStatus
(
ArchiveConstants
.
ATTA_STATUS_DISABLED
);
zipAtta
.
setAttaSrc
(
tempZipFile
.
getAbsolutePath
());
// 临时存储文件路径
zipAtta
.
setAttaSrc
(
tempZipFile
.
getAbsolutePath
());
// 临时存储文件路径
attaInfoService
.
save
(
zipAtta
);
attaInfoService
.
save
(
zipAtta
);
...
@@ -724,10 +726,10 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -724,10 +726,10 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
continue
;
continue
;
}
}
// 递归处理资料类型目录下的所有文件(包括子目录)
// 递归处理资料类型目录下的所有文件(包括子目录)
processDirectoryRecursively
(
subFile
,
detail
,
materialType
,
feedbackList
,
materialTypes
);
processDirectoryRecursively
(
subFile
,
detail
,
materialType
,
feedbackList
,
materialTypes
,
taskId
);
}
else
{
}
else
{
// 直接是文件,默认为存量类型
// 直接是文件,默认为存量类型
processFile
(
subFile
,
detail
,
ArchiveConstants
.
MATERIAL_TYPE_STOCK
,
feedbackList
,
materialTypes
);
processFile
(
subFile
,
detail
,
ArchiveConstants
.
MATERIAL_TYPE_STOCK
,
feedbackList
,
materialTypes
,
taskId
);
}
}
}
}
...
@@ -742,7 +744,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -742,7 +744,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
*/
*/
private
void
processDirectoryRecursively
(
File
directory
,
TElectronicArchiveDetail
detail
,
private
void
processDirectoryRecursively
(
File
directory
,
TElectronicArchiveDetail
detail
,
String
materialType
,
List
<
ArchiveFeedbackVO
>
feedbackList
,
String
materialType
,
List
<
ArchiveFeedbackVO
>
feedbackList
,
Set
<
String
>
materialTypes
)
{
Set
<
String
>
materialTypes
,
String
taskId
)
{
File
[]
files
=
directory
.
listFiles
();
File
[]
files
=
directory
.
listFiles
();
if
(
files
==
null
||
files
.
length
==
0
)
{
if
(
files
==
null
||
files
.
length
==
0
)
{
// 文件夹为空
// 文件夹为空
...
@@ -756,10 +758,10 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -756,10 +758,10 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
for
(
File
file
:
files
)
{
for
(
File
file
:
files
)
{
if
(
file
.
isDirectory
())
{
if
(
file
.
isDirectory
())
{
// 如果是子目录,递归处理
// 如果是子目录,递归处理
processDirectoryRecursively
(
file
,
detail
,
materialType
,
feedbackList
,
materialTypes
);
processDirectoryRecursively
(
file
,
detail
,
materialType
,
feedbackList
,
materialTypes
,
taskId
);
}
else
if
(
file
.
isFile
())
{
}
else
if
(
file
.
isFile
())
{
// 如果是文件,上传到阿里云并生成TAttaInfo记录
// 如果是文件,上传到阿里云并生成TAttaInfo记录
processFile
(
file
,
detail
,
materialType
,
feedbackList
,
materialTypes
);
processFile
(
file
,
detail
,
materialType
,
feedbackList
,
materialTypes
,
taskId
);
}
}
}
}
}
}
...
@@ -768,7 +770,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -768,7 +770,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
* 处理单个文件(上传到阿里云OSS,每个文件生成一条TAttaInfo记录)
* 处理单个文件(上传到阿里云OSS,每个文件生成一条TAttaInfo记录)
*/
*/
private
void
processFile
(
File
file
,
TElectronicArchiveDetail
detail
,
String
materialType
,
private
void
processFile
(
File
file
,
TElectronicArchiveDetail
detail
,
String
materialType
,
List
<
ArchiveFeedbackVO
>
feedbackList
,
Set
<
String
>
materialTypes
)
{
List
<
ArchiveFeedbackVO
>
feedbackList
,
Set
<
String
>
materialTypes
,
String
taskId
)
{
String
fileName
=
file
.
getName
();
String
fileName
=
file
.
getName
();
// 2. 校验文件格式
// 2. 校验文件格式
...
@@ -795,11 +797,13 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -795,11 +797,13 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
// 上传文件,uploadFileReturnAtta会自动生成TAttaInfo记录
// 上传文件,uploadFileReturnAtta会自动生成TAttaInfo记录
// domainId为电子档案详情表的id(detail.getId())
// domainId为电子档案详情表的id(detail.getId())
// taskId为任务表的id,用于区分同一个domainId下不同任务的附件
R
<
TAttaInfo
>
uploadResult
=
fileUploadService
.
uploadFileReturnAtta
(
R
<
TAttaInfo
>
uploadResult
=
fileUploadService
.
uploadFileReturnAtta
(
multipartFile
,
multipartFile
,
ossDirectory
,
ossDirectory
,
CommonConstants
.
FOUR_STRING
,
CommonConstants
.
FOUR_STRING
,
detail
.
getId
()
detail
.
getId
(),
taskId
);
);
if
(!
R
.
isSuccess
(
uploadResult
))
{
if
(!
R
.
isSuccess
(
uploadResult
))
{
...
@@ -819,7 +823,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -819,7 +823,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
feedbackList
.
add
(
feedback
);
feedbackList
.
add
(
feedback
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"上传文件失败:{},电子档案详情ID:{}
"
,
fileName
,
detail
.
getId
()
,
e
);
log
.
error
(
"上传文件失败:{},电子档案详情ID:{}
,任务ID:{}"
,
fileName
,
detail
.
getId
(),
taskId
,
e
);
ArchiveFeedbackVO
feedback
=
createFeedbackVO
(
detail
,
materialType
,
ArchiveFeedbackVO
feedback
=
createFeedbackVO
(
detail
,
materialType
,
ArchiveConstants
.
PROCESS_RESULT_FAILED
,
"文件上传异常:"
+
fileName
+
",原因:"
+
e
.
getMessage
());
ArchiveConstants
.
PROCESS_RESULT_FAILED
,
"文件上传异常:"
+
fileName
+
",原因:"
+
e
.
getMessage
());
feedbackList
.
add
(
feedback
);
feedbackList
.
add
(
feedback
);
...
@@ -1227,6 +1231,13 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -1227,6 +1231,13 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
.
last
(
CommonConstants
.
LAST_ONE_SQL
);
.
last
(
CommonConstants
.
LAST_ONE_SQL
);
TElectronicArchiveDetail
detail
=
detailService
.
getOne
(
wrapper
);
TElectronicArchiveDetail
detail
=
detailService
.
getOne
(
wrapper
);
// 创建任务,假删除任务
TElectronicArchiveTask
task
=
new
TElectronicArchiveTask
();
task
.
setTaskCode
(
"DZDAPL_SINGLE"
);
task
.
setUploadFileName
(
"单个上传"
);
task
.
setStatus
(
ArchiveConstants
.
TASK_STATUS_GENERATED
);
task
.
setDeleteFlag
(
CommonConstants
.
ONE_STRING
);
taskService
.
save
(
task
);
// 4. 如果不存在,创建新的明细
// 4. 如果不存在,创建新的明细
if
(
detail
==
null
)
{
if
(
detail
==
null
)
{
detail
=
new
TElectronicArchiveDetail
();
detail
=
new
TElectronicArchiveDetail
();
...
@@ -1244,14 +1255,6 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -1244,14 +1255,6 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
detail
.
setFileTown
(
empInfo
.
getFileTown
());
detail
.
setFileTown
(
empInfo
.
getFileTown
());
detailService
.
save
(
detail
);
detailService
.
save
(
detail
);
// 创建任务,假删除任务
TElectronicArchiveTask
task
=
new
TElectronicArchiveTask
();
task
.
setTaskCode
(
"DZDAPL_SINGLE"
);
task
.
setUploadFileName
(
"单个上传"
);
task
.
setStatus
(
ArchiveConstants
.
TASK_STATUS_GENERATED
);
task
.
setDeleteFlag
(
CommonConstants
.
ONE_STRING
);
taskService
.
save
(
task
);
// 建立任务和档案详情的关联关系
// 建立任务和档案详情的关联关系
TTaskArchiveRelation
relation
=
new
TTaskArchiveRelation
();
TTaskArchiveRelation
relation
=
new
TTaskArchiveRelation
();
relation
.
setTaskId
(
task
.
getId
());
relation
.
setTaskId
(
task
.
getId
());
...
@@ -1290,6 +1293,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
...
@@ -1290,6 +1293,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
// 更新domainId
// 更新domainId
attaInfo
.
setDomainId
(
detail
.
getId
());
attaInfo
.
setDomainId
(
detail
.
getId
());
attaInfo
.
setTaskId
(
task
.
getId
());
boolean
updateSuccess
=
attaInfoService
.
updateById
(
attaInfo
);
boolean
updateSuccess
=
attaInfoService
.
updateById
(
attaInfo
);
if
(
updateSuccess
)
{
if
(
updateSuccess
)
{
...
...
yifu-batch/yifu-batch-biz/src/main/java/com/yifu/cloud/plus/v1/batch/service/impl/FileUploadServiceImpl.java
View file @
37b2faef
...
@@ -44,6 +44,11 @@ public class FileUploadServiceImpl implements FileUploadService {
...
@@ -44,6 +44,11 @@ public class FileUploadServiceImpl implements FileUploadService {
@Override
@Override
public
R
<
TAttaInfo
>
uploadFileReturnAtta
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domainId
)
throws
IOException
{
public
R
<
TAttaInfo
>
uploadFileReturnAtta
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domainId
)
throws
IOException
{
return
uploadFileReturnAtta
(
file
,
filePath
,
type
,
domainId
,
null
);
}
@Override
public
R
<
TAttaInfo
>
uploadFileReturnAtta
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domainId
,
String
taskId
)
throws
IOException
{
if
(
null
==
file
)
{
if
(
null
==
file
)
{
return
R
.
failed
(
"文件删除异常,请重新上传!"
);
return
R
.
failed
(
"文件删除异常,请重新上传!"
);
}
}
...
@@ -91,6 +96,7 @@ public class FileUploadServiceImpl implements FileUploadService {
...
@@ -91,6 +96,7 @@ public class FileUploadServiceImpl implements FileUploadService {
attaInfo
.
setRelationType
(
type
);
attaInfo
.
setRelationType
(
type
);
try
{
try
{
attaInfo
.
setDomainId
(
domainId
);
attaInfo
.
setDomainId
(
domainId
);
attaInfo
.
setTaskId
(
taskId
);
Set
<
String
>
dbAuthsSet
=
new
HashSet
<>();
Set
<
String
>
dbAuthsSet
=
new
HashSet
<>();
Collection
<?
extends
GrantedAuthority
>
authorities
=
AuthorityUtils
Collection
<?
extends
GrantedAuthority
>
authorities
=
AuthorityUtils
...
@@ -197,17 +203,26 @@ public class FileUploadServiceImpl implements FileUploadService {
...
@@ -197,17 +203,26 @@ public class FileUploadServiceImpl implements FileUploadService {
**/
**/
@Override
@Override
public
R
uploadAsso
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domain
,
String
uploadType
){
public
R
uploadAsso
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domain
,
String
uploadType
){
return
getR
(
file
,
filePath
,
type
,
domain
,
uploadType
);
return
uploadAsso
(
file
,
filePath
,
type
,
domain
,
uploadType
,
null
);
}
@Override
public
R
uploadAsso
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domain
,
String
uploadType
,
String
taskId
){
return
getR
(
file
,
filePath
,
type
,
domain
,
uploadType
,
taskId
);
}
}
public
R
getR
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domain
,
String
uploadType
)
{
public
R
getR
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domain
,
String
uploadType
)
{
return
getR
(
file
,
filePath
,
type
,
domain
,
uploadType
,
null
);
}
public
R
getR
(
MultipartFile
file
,
String
filePath
,
String
type
,
String
domain
,
String
uploadType
,
String
taskId
)
{
maxLimit
=
configLimitMapper
.
getSysConfigLimitByKey
(
"UPLOAD_MAX_LIMIT"
);
maxLimit
=
configLimitMapper
.
getSysConfigLimitByKey
(
"UPLOAD_MAX_LIMIT"
);
if
(
atomicInteger
.
incrementAndGet
()
<=
maxLimit
){
if
(
atomicInteger
.
incrementAndGet
()
<=
maxLimit
){
try
{
try
{
if
(
CommonConstants
.
ZERO_STRING
.
equals
(
uploadType
)){
if
(
CommonConstants
.
ZERO_STRING
.
equals
(
uploadType
)){
return
uploadImg
(
file
,
filePath
,
type
,
domain
);
return
uploadImg
(
file
,
filePath
,
type
,
domain
);
}
else
if
(
CommonConstants
.
ONE_STRING
.
equals
(
uploadType
)){
}
else
if
(
CommonConstants
.
ONE_STRING
.
equals
(
uploadType
)){
return
uploadFileReturnAtta
(
file
,
filePath
,
type
,
domain
);
return
uploadFileReturnAtta
(
file
,
filePath
,
type
,
domain
,
taskId
);
}
}
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
log
.
error
(
"附件上传异常:"
,
e
);
log
.
error
(
"附件上传异常:"
,
e
);
...
...
yifu-batch/yifu-batch-biz/src/main/java/com/yifu/cloud/plus/v1/batch/service/impl/TElectronicArchiveDetailServiceImpl.java
View file @
37b2faef
...
@@ -109,9 +109,10 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -109,9 +109,10 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
continue
;
continue
;
}
}
// 查询该任务上传的附件(domainId为明细ID,
附件是在处理ZIP时关联到明细的
)
// 查询该任务上传的附件(domainId为明细ID,
taskId为任务ID,用于区分同一个domainId下不同任务的附件
)
List
<
TAttaInfo
>
taskAttachments
=
attaInfoService
.
list
(
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
List
<
TAttaInfo
>
taskAttachments
=
attaInfoService
.
list
(
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
.
eq
(
TAttaInfo:
:
getDomainId
,
id
)
.
eq
(
TAttaInfo:
:
getDomainId
,
id
)
.
eq
(
TAttaInfo:
:
getTaskId
,
relation
.
getTaskId
())
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_PER
)
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_PER
)
.
eq
(
TAttaInfo:
:
getStatus
,
ArchiveConstants
.
ATTA_STATUS_ENABLED
));
.
eq
(
TAttaInfo:
:
getStatus
,
ArchiveConstants
.
ATTA_STATUS_ENABLED
));
...
@@ -364,7 +365,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -364,7 +365,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
// 查询该明细下所有可用附件
// 查询该明细下所有可用附件
List
<
TAttaInfo
>
allAttaList
=
attaInfoService
.
list
(
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
List
<
TAttaInfo
>
allAttaList
=
attaInfoService
.
list
(
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
.
eq
(
TAttaInfo:
:
getDomainId
,
detail
.
getId
())
.
eq
(
TAttaInfo:
:
getDomainId
,
detail
.
getId
())
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_
ZIP
)
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_
PER
)
.
eq
(
TAttaInfo:
:
getStatus
,
ArchiveConstants
.
ATTA_STATUS_ENABLED
));
.
eq
(
TAttaInfo:
:
getStatus
,
ArchiveConstants
.
ATTA_STATUS_ENABLED
));
if
(
CollUtil
.
isEmpty
(
allAttaList
))
{
if
(
CollUtil
.
isEmpty
(
allAttaList
))
{
...
@@ -419,7 +420,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -419,7 +420,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
// 查询该明细下指定资料类型的附件(状态为可用)
// 查询该明细下指定资料类型的附件(状态为可用)
List
<
TAttaInfo
>
attaList
=
attaInfoService
.
list
(
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
List
<
TAttaInfo
>
attaList
=
attaInfoService
.
list
(
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
.
eq
(
TAttaInfo:
:
getDomainId
,
detail
.
getId
())
.
eq
(
TAttaInfo:
:
getDomainId
,
detail
.
getId
())
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_
ZIP
)
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_
PER
)
.
eq
(
TAttaInfo:
:
getStatus
,
ArchiveConstants
.
ATTA_STATUS_ENABLED
)
.
eq
(
TAttaInfo:
:
getStatus
,
ArchiveConstants
.
ATTA_STATUS_ENABLED
)
.
like
(
TAttaInfo:
:
getAttaSrc
,
request
.
getMaterialType
()));
// 附件路径中包含资料类型
.
like
(
TAttaInfo:
:
getAttaSrc
,
request
.
getMaterialType
()));
// 附件路径中包含资料类型
...
@@ -632,7 +633,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -632,7 +633,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
}
}
// 校验附件关系类型是否为ZIP附件
// 校验附件关系类型是否为ZIP附件
if
(!
ArchiveConstants
.
ATTA_RELATION_TYPE_
ZIP
.
equals
(
atta
.
getRelationType
()))
{
if
(!
ArchiveConstants
.
ATTA_RELATION_TYPE_
PER
.
equals
(
atta
.
getRelationType
()))
{
return
R
.
failed
(
"附件【"
+
atta
.
getAttaName
()
+
"】不是电子档案附件"
);
return
R
.
failed
(
"附件【"
+
atta
.
getAttaName
()
+
"】不是电子档案附件"
);
}
}
...
@@ -676,7 +677,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -676,7 +677,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
// 6. 检查该资料类型下是否还有其他可用附件
// 6. 检查该资料类型下是否还有其他可用附件
LambdaQueryWrapper
<
TAttaInfo
>
attaWrapper
=
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
LambdaQueryWrapper
<
TAttaInfo
>
attaWrapper
=
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
.
eq
(
TAttaInfo:
:
getDomainId
,
request
.
getDetailId
())
.
eq
(
TAttaInfo:
:
getDomainId
,
request
.
getDetailId
())
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_
ZIP
)
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_
PER
)
.
eq
(
TAttaInfo:
:
getStatus
,
ArchiveConstants
.
ATTA_STATUS_ENABLED
)
.
eq
(
TAttaInfo:
:
getStatus
,
ArchiveConstants
.
ATTA_STATUS_ENABLED
)
.
like
(
TAttaInfo:
:
getAttaSrc
,
"/"
+
request
.
getMaterialType
()
+
"/"
);
.
like
(
TAttaInfo:
:
getAttaSrc
,
"/"
+
request
.
getMaterialType
()
+
"/"
);
long
remainingCount
=
attaInfoService
.
count
(
attaWrapper
);
long
remainingCount
=
attaInfoService
.
count
(
attaWrapper
);
...
@@ -770,7 +771,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -770,7 +771,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
// 用于存储需要导出的档案及其附件
// 用于存储需要导出的档案及其附件
Map
<
String
,
ArchiveDownloadInfo
>
downloadMap
=
new
LinkedHashMap
<>();
Map
<
String
,
ArchiveDownloadInfo
>
downloadMap
=
new
LinkedHashMap
<>();
try
{
try
{
// 1. 校验请求并查询档案信息
// 1. 校验请求并查询档案信息
for
(
ArchiveSelectedExportRequestVO
request
:
requestList
)
{
for
(
ArchiveSelectedExportRequestVO
request
:
requestList
)
{
...
@@ -785,7 +786,6 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -785,7 +786,6 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
// 2. 检查是否有可导出的档案
// 2. 检查是否有可导出的档案
if
(
downloadMap
.
isEmpty
())
{
if
(
downloadMap
.
isEmpty
())
{
log
.
warn
(
"没有可导出的档案"
);
response
.
setContentType
(
"application/json;charset=UTF-8"
);
response
.
setContentType
(
"application/json;charset=UTF-8"
);
response
.
getWriter
().
write
(
"{\"code\":1,\"msg\":\"没有可导出的档案\"}"
);
response
.
getWriter
().
write
(
"{\"code\":1,\"msg\":\"没有可导出的档案\"}"
);
return
;
return
;
...
@@ -873,14 +873,13 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -873,14 +873,13 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
// 5. 构建文件夹名称:项目编码-姓名-身份证
// 5. 构建文件夹名称:项目编码-姓名-身份证
String
folderName
=
detail
.
getDeptNo
()
+
"-"
+
detail
.
getEmpName
()
+
"-"
+
detail
.
getEmpIdcard
();
String
folderName
=
detail
.
getDeptNo
()
+
"-"
+
detail
.
getEmpName
()
+
"-"
+
detail
.
getEmpIdcard
();
// 6. 按资料类型查询附件
// 6. 按资料类型查询附件
Map
<
String
,
List
<
TAttaInfo
>>
materialTypeAttaMap
=
new
LinkedHashMap
<>();
Map
<
String
,
List
<
TAttaInfo
>>
materialTypeAttaMap
=
new
LinkedHashMap
<>();
for
(
String
materialType
:
request
.
getMaterialTypes
())
{
for
(
String
materialType
:
request
.
getMaterialTypes
())
{
// 校验资料类型是否有效
// 校验资料类型是否有效
if
(!
isValidMaterialType
(
materialType
))
{
if
(!
isValidMaterialType
(
materialType
))
{
log
.
warn
(
"资料类型无效,跳过:{}"
,
materialType
);
continue
;
continue
;
}
}
...
@@ -888,31 +887,18 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -888,31 +887,18 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
// 通过附件路径匹配资料类型和任务
// 通过附件路径匹配资料类型和任务
List
<
TAttaInfo
>
attaList
=
attaInfoService
.
list
(
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
List
<
TAttaInfo
>
attaList
=
attaInfoService
.
list
(
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
.
eq
(
TAttaInfo:
:
getDomainId
,
request
.
getDetailId
())
.
eq
(
TAttaInfo:
:
getDomainId
,
request
.
getDetailId
())
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_ZIP
)
.
eq
(
TAttaInfo:
:
getTaskId
,
request
.
getTaskId
())
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_PER
)
.
eq
(
TAttaInfo:
:
getStatus
,
ArchiveConstants
.
ATTA_STATUS_ENABLED
)
.
eq
(
TAttaInfo:
:
getStatus
,
ArchiveConstants
.
ATTA_STATUS_ENABLED
)
.
like
(
TAttaInfo:
:
getAttaSrc
,
materialType
));
// 附件路径中包含资料类型
.
like
(
TAttaInfo:
:
getAttaSrc
,
materialType
));
// 附件路径中包含资料类型
// 过滤附件:只保留属于指定任务的附件
// 方法:通过创建时间范围过滤(任务创建时间之后的附件)
List
<
TAttaInfo
>
taskAttaList
=
new
ArrayList
<>();
for
(
TAttaInfo
atta
:
attaList
)
{
// 简单判断:附件创建时间在任务创建时间之后
if
(
atta
.
getCreateTime
()
!=
null
&&
task
.
getCreateTime
()
!=
null
&&
!
atta
.
getCreateTime
().
isBefore
(
task
.
getCreateTime
()))
{
taskAttaList
.
add
(
atta
);
}
}
// 如果该资料类型下有附件,添加到Map中
// 如果该资料类型下有附件,添加到Map中
if
(
CollUtil
.
isNotEmpty
(
taskA
ttaList
))
{
if
(
CollUtil
.
isNotEmpty
(
a
ttaList
))
{
materialTypeAttaMap
.
put
(
materialType
,
taskA
ttaList
);
materialTypeAttaMap
.
put
(
materialType
,
a
ttaList
);
// 添加成功的反馈
// 添加成功的反馈
feedbackList
.
add
(
createSelectedExportSuccessFeedbackVO
(
detail
,
task
,
materialType
));
feedbackList
.
add
(
createSelectedExportSuccessFeedbackVO
(
detail
,
task
,
materialType
));
}
else
{
}
else
{
// 添加失败的反馈
log
.
warn
(
"该资料类型下没有可用的附件,明细ID:{},任务ID:{},资料类型:{}"
,
request
.
getDetailId
(),
request
.
getTaskId
(),
materialType
);
feedbackList
.
add
(
createSelectedExportFeedbackVOWithDetail
(
detail
,
task
,
materialType
,
feedbackList
.
add
(
createSelectedExportFeedbackVOWithDetail
(
detail
,
task
,
materialType
,
"该资料类型下没有可用的附件"
));
"该资料类型下没有可用的附件"
));
}
}
...
@@ -927,8 +913,22 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -927,8 +913,22 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
downloadInfo
.
setMaterialTypeAttaMap
(
materialTypeAttaMap
);
downloadInfo
.
setMaterialTypeAttaMap
(
materialTypeAttaMap
);
downloadMap
.
put
(
folderName
,
downloadInfo
);
downloadMap
.
put
(
folderName
,
downloadInfo
);
}
else
{
}
else
{
Map
<
String
,
List
<
TAttaInfo
>>
targetMap
=
downloadInfo
.
getMaterialTypeAttaMap
();
// 合并资料类型附件
// 合并资料类型附件
downloadInfo
.
getMaterialTypeAttaMap
().
putAll
(
materialTypeAttaMap
);
for
(
Map
.
Entry
<
String
,
List
<
TAttaInfo
>>
entry
:
materialTypeAttaMap
.
entrySet
())
{
String
key
=
entry
.
getKey
();
List
<
TAttaInfo
>
sourceValue
=
entry
.
getValue
();
if
(
targetMap
.
containsKey
(
key
))
{
// 如果key已存在,合并两个List
List
<
TAttaInfo
>
targetValue
=
targetMap
.
get
(
key
);
targetValue
.
addAll
(
sourceValue
);
materialTypeAttaMap
.
put
(
key
,
targetValue
);
}
downloadInfo
.
getMaterialTypeAttaMap
().
putAll
(
materialTypeAttaMap
);
}
}
}
// 设置资料类型列表
// 设置资料类型列表
...
@@ -1020,7 +1020,8 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -1020,7 +1020,8 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
if
(
feedback
.
getEmpName
().
equals
(
detail
.
getEmpName
())
&&
if
(
feedback
.
getEmpName
().
equals
(
detail
.
getEmpName
())
&&
feedback
.
getEmpIdcard
().
equals
(
detail
.
getEmpIdcard
())
&&
feedback
.
getEmpIdcard
().
equals
(
detail
.
getEmpIdcard
())
&&
feedback
.
getDeptNo
().
equals
(
detail
.
getDeptNo
())
&&
feedback
.
getDeptNo
().
equals
(
detail
.
getDeptNo
())
&&
materialTypes
.
contains
(
feedback
.
getMaterialType
()))
{
materialTypes
.
contains
(
feedback
.
getMaterialType
())
&&
Common
.
isEmpty
(
feedback
.
getFailReason
()))
{
feedback
.
setDownloadStatus
(
status
);
feedback
.
setDownloadStatus
(
status
);
feedback
.
setFailReason
(
failReason
);
feedback
.
setFailReason
(
failReason
);
}
}
...
@@ -1162,7 +1163,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -1162,7 +1163,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
// 1. 查询该明细下所有可用附件
// 1. 查询该明细下所有可用附件
List
<
TAttaInfo
>
allAttaList
=
attaInfoService
.
list
(
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
List
<
TAttaInfo
>
allAttaList
=
attaInfoService
.
list
(
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
.
eq
(
TAttaInfo:
:
getDomainId
,
detail
.
getId
())
.
eq
(
TAttaInfo:
:
getDomainId
,
detail
.
getId
())
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_
ZIP
)
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_
PER
)
.
eq
(
TAttaInfo:
:
getStatus
,
ArchiveConstants
.
ATTA_STATUS_ENABLED
));
.
eq
(
TAttaInfo:
:
getStatus
,
ArchiveConstants
.
ATTA_STATUS_ENABLED
));
// 2. 如果没有附件,添加失败反馈
// 2. 如果没有附件,添加失败反馈
...
@@ -1294,7 +1295,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
...
@@ -1294,7 +1295,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
// 2. 查询该明细下所有的附件(包括可用和不可用的)
// 2. 查询该明细下所有的附件(包括可用和不可用的)
List
<
TAttaInfo
>
attachments
=
attaInfoService
.
list
(
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
List
<
TAttaInfo
>
attachments
=
attaInfoService
.
list
(
Wrappers
.<
TAttaInfo
>
lambdaQuery
()
.
eq
(
TAttaInfo:
:
getDomainId
,
id
)
.
eq
(
TAttaInfo:
:
getDomainId
,
id
)
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_
ZIP
));
.
eq
(
TAttaInfo:
:
getRelationType
,
ArchiveConstants
.
ATTA_RELATION_TYPE_
PER
));
// 3. 删除所有附件并删除OSS文件
// 3. 删除所有附件并删除OSS文件
int
attachmentSuccessCount
=
0
;
int
attachmentSuccessCount
=
0
;
...
...
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