Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yanxuan-qc-change-system
Overview
Overview
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
yx-qc-change-flow
yanxuan-qc-change-system
Commits
867b210b
Commit
867b210b
authored
Dec 15, 2025
by
王志超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 变更配置导出
parent
60fef344
Pipeline
#86925
passed with stages
in 1 minute 33 seconds
Changes
7
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
404 additions
and
0 deletions
+404
-0
ChangeConfigExportCallback.java
...nxuan/change/biz/callback/ChangeConfigExportCallback.java
+158
-0
DESExportService.java
...ase/mail/yanxuan/change/biz/service/DESExportService.java
+19
-0
NeedFileEnum.java
...etease/mail/yanxuan/change/common/enums/NeedFileEnum.java
+5
-0
ChangeConfigQueryReq.java
...nxuan/change/dal/meta/model/req/ChangeConfigQueryReq.java
+9
-0
ChangeConfigExcelDTO.java
...anxuan/change/integration/excel/ChangeConfigExcelDTO.java
+51
-0
ChangeConfigExcelVo.java
...yanxuan/change/integration/excel/ChangeConfigExcelVo.java
+130
-0
ChangeConfigController.java
...yanxuan/change/web/controller/ChangeConfigController.java
+32
-0
No files found.
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/callback/ChangeConfigExportCallback.java
0 → 100644
View file @
867b210b
package
com
.
netease
.
mail
.
yanxuan
.
change
.
biz
.
callback
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.alibaba.fastjson.JSON
;
import
com.google.common.base.Joiner
;
import
com.netease.mail.dp.des.process.api.entity.CallbackQueryReq
;
import
com.netease.mail.dp.des.process.api.entity.ExcelCell
;
import
com.netease.mail.dp.des.process.api.entity.ExcelTitle
;
import
com.netease.mail.dp.des.starter.callback.DesCallbackService
;
import
com.netease.mail.yanxuan.change.biz.service.change.ChangeTypeService
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeLevelEnum
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeSubjectEnum
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeCommanderEnum
;
import
com.netease.mail.yanxuan.change.common.enums.NeedFileEnum
;
import
com.netease.mail.yanxuan.change.common.util.DateUtils
;
import
com.netease.mail.yanxuan.change.common.util.ExcelUtil
;
import
com.netease.mail.yanxuan.change.dal.entity.ChangeType
;
import
com.netease.mail.yanxuan.change.dal.mapper.ChangeConfigMapper
;
import
com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeConfigPo
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeConfigQueryReq
;
import
com.netease.mail.yanxuan.change.integration.excel.ChangeConfigExcelDTO
;
import
com.netease.mail.yanxuan.change.integration.excel.ChangeConfigExcelVo
;
import
lombok.extern.slf4j.Slf4j
;
/**
* 变更配置导出回调
*/
@Slf4j
@Component
public
class
ChangeConfigExportCallback
implements
DesCallbackService
{
@Autowired
private
ChangeConfigMapper
changeConfigMapper
;
@Autowired
private
ChangeTypeService
changeTypeService
;
@Override
public
ExcelTitle
queryExcelTitle
(
CallbackQueryReq
req
)
{
log
.
info
(
"[op: change config export callback queryExcelTitle] req={}"
,
JSON
.
toJSONString
(
req
));
ChangeConfigQueryReq
query
=
JSON
.
parseObject
(
req
.
getParamJson
(),
ChangeConfigQueryReq
.
class
);
List
<
ChangeConfigPo
>
list
=
changeConfigMapper
.
selectChangeConfigPo
(
query
);
ExcelTitle
excelTitle
=
ExcelUtil
.
fetchExceltile
(
ChangeConfigExcelVo
.
class
);
excelTitle
.
setTotal
((
long
)
list
.
size
());
log
.
info
(
"[op: change config export callback queryExcelTitle] result={}"
,
JSON
.
toJSONString
(
excelTitle
));
return
excelTitle
;
}
@Override
public
List
<
List
<
ExcelCell
>>
queryExcelData
(
CallbackQueryReq
req
)
{
log
.
info
(
"[op: change config export callback queryExcelData] req={}"
,
JSON
.
toJSONString
(
req
));
ChangeConfigQueryReq
query
=
JSON
.
parseObject
(
req
.
getParamJson
(),
ChangeConfigQueryReq
.
class
);
query
.
setOffset
(
req
.
getOffset
());
query
.
setLimit
(
req
.
getLimit
());
List
<
ChangeConfigExcelDTO
>
list
=
getExportList
(
query
);
log
.
debug
(
"[op: change config export callback queryExcelData] size:{}"
,
list
.
size
());
return
list
.
stream
().
map
(
ChangeConfigExcelVo:
:
init
).
collect
(
Collectors
.
toList
());
}
@Override
public
com
.
netease
.
mail
.
dp
.
des
.
process
.
api
.
entity
.
PivotTable
queryPivotTable
(
CallbackQueryReq
req
)
{
// 不需要透视表,返回null
return
null
;
}
private
List
<
ChangeConfigExcelDTO
>
getExportList
(
ChangeConfigQueryReq
query
)
{
List
<
ChangeConfigPo
>
changeConfigPos
=
changeConfigMapper
.
selectChangeConfigPo
(
query
);
// 处理执行部门格式
changeConfigPos
.
forEach
(
i
->
{
if
(
StringUtils
.
isNotBlank
(
i
.
getParticipateChangeExecDepartment
()))
{
String
replaceDep
=
i
.
getParticipateChangeExecDepartment
().
replace
(
"["
,
""
).
replace
(
"]"
,
""
).
replace
(
" "
,
""
);
List
<
String
>
depList
=
Arrays
.
stream
(
replaceDep
.
split
(
","
))
.
filter
(
StringUtils:
:
isNotBlank
)
.
distinct
()
.
collect
(
Collectors
.
toList
());
i
.
setParticipateChangeExecDepartment
(
Joiner
.
on
(
","
).
join
(
depList
));
}
});
return
changeConfigPos
.
stream
().
map
(
po
->
{
ChangeConfigExcelDTO
dto
=
new
ChangeConfigExcelDTO
();
dto
.
setId
(
po
.
getId
());
// 变更主体
if
(
po
.
getChangeSubject
()
!=
null
)
{
dto
.
setChangeSubject
(
ChangeSubjectEnum
.
getChangeSubjectEnum
(
po
.
getChangeSubject
())
!=
null
?
ChangeSubjectEnum
.
getChangeSubjectEnum
(
po
.
getChangeSubject
()).
getDesc
()
:
""
);
}
// 变更类型
String
parentChangeType
=
""
;
String
sonChangeType
=
""
;
if
(
po
.
getParentChangeClassId
()
!=
null
&&
po
.
getSonChangeClassId
()
!=
null
)
{
ChangeType
parentType
=
changeTypeService
.
getChangeTypeById
(
po
.
getParentChangeClassId
().
longValue
());
ChangeType
sonType
=
changeTypeService
.
getChangeTypeById
(
po
.
getSonChangeClassId
().
longValue
());
if
(
parentType
!=
null
)
{
parentChangeType
=
parentType
.
getTypeName
();
}
if
(
sonType
!=
null
)
{
sonChangeType
=
sonType
.
getTypeName
();
}
}
dto
.
setParentChangeType
(
parentChangeType
);
dto
.
setSonChangeType
(
sonChangeType
);
// 变更等级
if
(
po
.
getChangeLevel
()
!=
null
)
{
dto
.
setChangeLevel
(
ChangeLevelEnum
.
getByType
(
po
.
getChangeLevel
()));
}
dto
.
setChangeDepartment
(
po
.
getChangeDepartment
());
dto
.
setParticipateChangeExecDepartment
(
po
.
getParticipateChangeExecDepartment
());
// 变更负责人类型
if
(
po
.
getChangeCommanderType
()
!=
null
)
{
ChangeCommanderEnum
commanderEnum
=
ChangeCommanderEnum
.
getChangeCommanderEnum
(
po
.
getChangeCommanderType
());
dto
.
setChangeCommanderType
(
commanderEnum
!=
null
?
commanderEnum
.
getName
()
:
""
);
}
dto
.
setChangeCommander
(
po
.
getChangeCommander
());
// 是否需要资料
if
(
po
.
getNeedFile
()
!=
null
)
{
String
needFileDesc
=
""
;
for
(
NeedFileEnum
needFileEnum
:
NeedFileEnum
.
values
())
{
if
(
needFileEnum
.
getStatus
().
equals
(
po
.
getNeedFile
()))
{
needFileDesc
=
needFileEnum
.
getDesc
();
break
;
}
}
dto
.
setNeedFile
(
needFileDesc
);
}
dto
.
setCreator
(
po
.
getCreator
());
// 时间格式化
if
(
po
.
getCreateTime
()
!=
null
)
{
dto
.
setCreateTime
(
DateUtils
.
parseLongToString
(
po
.
getCreateTime
(),
DateUtils
.
DATE_TIME_FORMAT
));
}
if
(
po
.
getUpdateTime
()
!=
null
)
{
dto
.
setUpdateTime
(
DateUtils
.
parseLongToString
(
po
.
getUpdateTime
(),
DateUtils
.
DATE_TIME_FORMAT
));
}
return
dto
;
}).
collect
(
Collectors
.
toList
());
}
}
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/service/DESExportService.java
View file @
867b210b
...
...
@@ -18,6 +18,7 @@ import com.netease.mail.dp.des.interaction.api.req.TaskReq;
import
com.netease.mail.dp.des.starter.client.DesClient
;
import
com.netease.mail.yanxuan.change.biz.config.AppConfig
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowRequest
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeConfigQueryReq
;
/**
* @Author zcwang
...
...
@@ -49,4 +50,21 @@ public class DESExportService {
log
.
info
(
"create task result: {}"
,
desResult
);
return
desResult
;
}
public
String
changeConfigExport
(
ChangeConfigQueryReq
query
,
String
uid
,
String
serviceCode
)
{
TaskReq
taskReq
=
new
TaskReq
();
taskReq
.
setUserEmail
(
uid
);
taskReq
.
setProductCode
(
serviceCode
);
taskReq
.
setFileName
(
"变更配置列表导出"
);
taskReq
.
setTaskType
(
TaskType
.
BIVARIATE
);
taskReq
.
setDataType
(
DataType
.
CALLBACK
);
CallbackQueryParam
callbackQueryParam
=
new
CallbackQueryParam
();
callbackQueryParam
.
setParamJson
(
JSON
.
toJSONString
(
query
));
callbackQueryParam
.
setCallbackBeanName
(
"changeConfigExportCallback"
);
callbackQueryParam
.
setLimit
(
appConfig
.
getExportLimit
());
taskReq
.
setCallbackQueryParam
(
callbackQueryParam
);
String
desResult
=
desClient
.
addTask
(
taskReq
);
log
.
info
(
"create change config export task result: {}"
,
desResult
);
return
desResult
;
}
}
\ No newline at end of file
yanxuan-qc-change-system-common/src/main/java/com/netease/mail/yanxuan/change/common/enums/NeedFileEnum.java
View file @
867b210b
...
...
@@ -26,4 +26,8 @@ public enum NeedFileEnum {
public
Integer
getStatus
()
{
return
status
;
}
public
String
getDesc
()
{
return
desc
;
}
}
\ No newline at end of file
yanxuan-qc-change-system-dal/src/main/java/com/netease/mail/yanxuan/change/dal/meta/model/req/ChangeConfigQueryReq.java
View file @
867b210b
...
...
@@ -45,5 +45,14 @@ public class ChangeConfigQueryReq {
*/
private
Long
updateTime
;
/**
* 分页偏移量(导出使用)
*/
private
Long
offset
;
/**
* 分页限制(导出使用)
*/
private
Long
limit
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/excel/ChangeConfigExcelDTO.java
0 → 100644
View file @
867b210b
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
excel
;
import
cn.afterturn.easypoi.excel.annotation.Excel
;
import
lombok.Data
;
/**
* 变更配置导出DTO
*/
@Data
public
class
ChangeConfigExcelDTO
{
@Excel
(
name
=
"配置ID"
)
private
Long
id
;
@Excel
(
name
=
"变更主体"
)
private
String
changeSubject
;
@Excel
(
name
=
"一级变更类型"
)
private
String
parentChangeType
;
@Excel
(
name
=
"二级变更类型"
)
private
String
sonChangeType
;
@Excel
(
name
=
"变更等级"
)
private
String
changeLevel
;
@Excel
(
name
=
"变更负责部门"
)
private
String
changeDepartment
;
@Excel
(
name
=
"变更执行部门"
)
private
String
participateChangeExecDepartment
;
@Excel
(
name
=
"变更负责人类型"
)
private
String
changeCommanderType
;
@Excel
(
name
=
"变更负责人"
)
private
String
changeCommander
;
@Excel
(
name
=
"是否需要资料"
)
private
String
needFile
;
@Excel
(
name
=
"创建人"
)
private
String
creator
;
@Excel
(
name
=
"创建时间"
)
private
String
createTime
;
@Excel
(
name
=
"更新时间"
)
private
String
updateTime
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/excel/ChangeConfigExcelVo.java
0 → 100644
View file @
867b210b
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
excel
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.netease.mail.dp.des.common.api.enums.ExcelCellType
;
import
com.netease.mail.dp.des.process.api.entity.ExcelCell
;
import
com.netease.mail.yanxuan.change.common.anno.ExcelTitleName
;
import
lombok.Data
;
/**
* 变更配置导出VO
*/
@Data
public
class
ChangeConfigExcelVo
{
@ExcelTitleName
(
title
=
"配置ID"
,
order
=
1
)
private
Long
id
;
@ExcelTitleName
(
title
=
"变更主体"
,
order
=
2
)
private
String
changeSubject
;
@ExcelTitleName
(
title
=
"一级变更类型"
,
order
=
3
)
private
String
parentChangeType
;
@ExcelTitleName
(
title
=
"二级变更类型"
,
order
=
4
)
private
String
sonChangeType
;
@ExcelTitleName
(
title
=
"变更等级"
,
order
=
5
)
private
String
changeLevel
;
@ExcelTitleName
(
title
=
"变更负责部门"
,
order
=
6
)
private
String
changeDepartment
;
@ExcelTitleName
(
title
=
"变更执行部门"
,
order
=
7
)
private
String
participateChangeExecDepartment
;
@ExcelTitleName
(
title
=
"变更负责人类型"
,
order
=
8
)
private
String
changeCommanderType
;
@ExcelTitleName
(
title
=
"变更负责人"
,
order
=
9
)
private
String
changeCommander
;
@ExcelTitleName
(
title
=
"是否需要资料"
,
order
=
10
)
private
String
needFile
;
@ExcelTitleName
(
title
=
"创建人"
,
order
=
11
)
private
String
creator
;
@ExcelTitleName
(
title
=
"创建时间"
,
order
=
12
)
private
String
createTime
;
@ExcelTitleName
(
title
=
"更新时间"
,
order
=
13
)
private
String
updateTime
;
public
static
List
<
ExcelCell
>
init
(
ChangeConfigExcelDTO
dto
)
{
List
<
ExcelCell
>
cells
=
new
ArrayList
<>();
ExcelCell
excelCell
;
// 1. 配置ID
excelCell
=
new
ExcelCell
();
excelCell
.
setCellType
(
ExcelCellType
.
TEXT
);
excelCell
.
setValue
(
dto
.
getId
()
!=
null
?
dto
.
getId
().
toString
()
:
""
);
cells
.
add
(
excelCell
);
// 2. 变更主体
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeSubject
()
!=
null
?
dto
.
getChangeSubject
()
:
""
);
cells
.
add
(
excelCell
);
// 3. 一级变更类型
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getParentChangeType
()
!=
null
?
dto
.
getParentChangeType
()
:
""
);
cells
.
add
(
excelCell
);
// 4. 二级变更类型
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getSonChangeType
()
!=
null
?
dto
.
getSonChangeType
()
:
""
);
cells
.
add
(
excelCell
);
// 5. 变更等级
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeLevel
()
!=
null
?
dto
.
getChangeLevel
()
:
""
);
cells
.
add
(
excelCell
);
// 6. 变更负责部门
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeDepartment
()
!=
null
?
dto
.
getChangeDepartment
()
:
""
);
cells
.
add
(
excelCell
);
// 7. 变更执行部门
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getParticipateChangeExecDepartment
()
!=
null
?
dto
.
getParticipateChangeExecDepartment
()
:
""
);
cells
.
add
(
excelCell
);
// 8. 变更负责人类型
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeCommanderType
()
!=
null
?
dto
.
getChangeCommanderType
()
:
""
);
cells
.
add
(
excelCell
);
// 9. 变更负责人
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeCommander
()
!=
null
?
dto
.
getChangeCommander
()
:
""
);
cells
.
add
(
excelCell
);
// 10. 是否需要资料
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getNeedFile
()
!=
null
?
dto
.
getNeedFile
()
:
""
);
cells
.
add
(
excelCell
);
// 11. 创建人
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getCreator
()
!=
null
?
dto
.
getCreator
()
:
""
);
cells
.
add
(
excelCell
);
// 12. 创建时间
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getCreateTime
()
!=
null
?
dto
.
getCreateTime
()
:
""
);
cells
.
add
(
excelCell
);
// 13. 更新时间
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getUpdateTime
()
!=
null
?
dto
.
getUpdateTime
()
:
""
);
cells
.
add
(
excelCell
);
return
cells
;
}
}
yanxuan-qc-change-system-web/src/main/java/com/netease/mail/yanxuan/change/web/controller/ChangeConfigController.java
View file @
867b210b
...
...
@@ -3,6 +3,7 @@ package com.netease.mail.yanxuan.change.web.controller;
import
com.netease.mail.yanxuan.change.common.bean.AjaxResult
;
import
com.netease.mail.yanxuan.change.biz.service.change.AdminChangeConfigService
;
import
com.netease.mail.yanxuan.change.biz.service.DESExportService
;
import
com.netease.mail.yanxuan.change.common.bean.RequestLocalBean
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeConfigDeleteReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeConfigQueryReq
;
...
...
@@ -31,6 +32,9 @@ public class ChangeConfigController {
@Autowired
private
FlowRpcSupplierSendService
supplierSendService
;
@Autowired
private
DESExportService
desExportService
;
/**
* 通过参数查询配置模板
* @return
...
...
@@ -134,4 +138,32 @@ public class ChangeConfigController {
//return supplierSendService.queryByConditionForQc(req); 暂用模拟数据
return
listAjaxResponse
;
}
/**
* 导出变更配置列表
*
* @return
*/
@GetMapping
(
"/export"
)
public
AjaxResult
<
String
>
export
(
@RequestParam
(
name
=
"changeDepartment"
,
required
=
false
)
String
changeDepartment
,
@RequestParam
(
name
=
"changeExecDepartment"
,
required
=
false
)
String
changeExecDepartment
,
@RequestParam
(
name
=
"parentChangeClassId"
,
required
=
false
)
Integer
parentChangeClassId
,
@RequestParam
(
name
=
"sonChangeClassId"
,
required
=
false
)
Integer
sonChangeClassId
,
@RequestParam
(
name
=
"changeLevel"
,
required
=
false
)
Integer
changeLevel
,
@RequestParam
(
name
=
"createTime"
,
required
=
false
)
Long
createTime
,
@RequestParam
(
name
=
"endTime"
,
required
=
false
)
Long
endTime
,
@RequestParam
(
name
=
"serviceCode"
)
String
serviceCode
)
{
ChangeConfigQueryReq
req
=
new
ChangeConfigQueryReq
();
req
.
setChangeDepartment
(
changeDepartment
);
req
.
setChangeExecDepartment
(
changeExecDepartment
);
req
.
setParentChangeClassId
(
parentChangeClassId
);
req
.
setSonChangeClassId
(
sonChangeClassId
);
req
.
setChangeLevel
(
changeLevel
);
req
.
setCreateTime
(
createTime
);
req
.
setUpdateTime
(
endTime
);
String
uid
=
RequestLocalBean
.
getUid
();
String
result
=
desExportService
.
changeConfigExport
(
req
,
uid
,
serviceCode
);
return
AjaxResult
.
success
(
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