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
bc372a3e
Commit
bc372a3e
authored
Dec 15, 2025
by
王志超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 取消变更
parent
7b7ba380
Pipeline
#86902
passed with stages
in 1 minute 37 seconds
Changes
2
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
25 additions
and
15 deletions
+25
-15
ChangeFlowBiz.java
...om/netease/mail/yanxuan/change/biz/biz/ChangeFlowBiz.java
+20
-14
FlowxOperationEnum.java
.../mail/yanxuan/change/common/enums/FlowxOperationEnum.java
+5
-1
No files found.
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/biz/ChangeFlowBiz.java
View file @
bc372a3e
...
...
@@ -858,17 +858,24 @@ public class ChangeFlowBiz {
}
// 工单流转
Map
<
String
,
Object
>
content
=
buildFlowContent
(
FlowOperationTypeEnum
.
REFUSE
);
Map
<
String
,
Object
>
cancelParamMap
=
new
HashMap
<>();
cancelParamMap
.
put
(
"type"
,
FlowTransitionType
.
TYPE_REJECTED
);
String
nextNodeId
=
flowService
.
submitFlowWithParamMap
(
String
.
valueOf
(
flowId
),
flowDataDTO
,
uid
,
ChangeFlowEnum
.
NEW_CHANGE_FLOW
.
getTopoId
(),
JSON
.
toJSONString
(
content
),
cancelParamMap
,
FlowxOperationEnum
.
APPROVE_FAIL
.
getName
(),
"取消工单"
,
changeRecord
.
getCreateTime
());
log
.
info
(
"[cancel] flowId:{}, nextNodeId:{}"
,
flowId
,
nextNodeId
);
String
nextNodeId
=
flowService
.
submitFlow
(
String
.
valueOf
(
flowId
),
flowDataDTO
,
uid
,
ChangeFlowEnum
.
NEW_CHANGE_FLOW
.
getTopoId
(),
JSON
.
toJSONString
(
content
),
false
,
FlowxOperationEnum
.
CANCEL
.
getName
(),
"取消变更"
,
changeRecord
.
getCreateTime
());
// 填充更新数据
changeRecord
.
setFlowNode
(
nextNodeId
);
changeRecord
.
setState
(
ChangeStatusEnum
.
CANCEL
.
getStatus
());
changeRecord
.
setCancelReason
(
req
.
getCancelReason
());
changeRecord
.
setUpdateTime
(
DateUtils
.
getCurrentTime
());
// 取消所有行动工单,并获取所有子工单列表(用于后续获取行动人邮箱)
List
<
ChangeSubFlowRecord
>
allSubFlows
=
cancelAllSubFlows
(
changeRecord
.
getId
(),
req
.
getCancelReason
(),
uid
);
// 立即更新主工单状态,确保状态正确,不被后续邮件服务阻塞
Boolean
updateResult
=
changeFlowService
.
updateRecord
(
changeRecord
);
log
.
info
(
"[cancel] 主工单状态已更新,flowId:{}, state:{}, updateResult:{}"
,
flowId
,
ChangeStatusEnum
.
CANCEL
.
getStatus
(),
updateResult
);
try
{
Map
<
String
,
Object
>
cancelMap
=
new
HashMap
<>();
cancelMap
.
put
(
"changeId"
,
changeRecord
.
getFlowId
());
cancelMap
.
put
(
"changeSubject"
,
ChangeSubjectEnum
.
getChangeSubjectEnum
(
changeRecord
.
getChangeSubject
()).
getDesc
());
...
...
@@ -877,9 +884,6 @@ public class ChangeFlowBiz {
cancelMap
.
put
(
"changeCommander"
,
user
==
null
?
changeRecord
.
getChangeCommander
()
:
user
.
getName
());
cancelMap
.
put
(
"cancelReason"
,
changeRecord
.
getCancelReason
());
// 取消所有行动工单,并获取所有子工单列表(用于后续获取行动人邮箱)
List
<
ChangeSubFlowRecord
>
allSubFlows
=
cancelAllSubFlows
(
changeRecord
.
getId
(),
req
.
getCancelReason
(),
uid
);
// 从行动工单获取行动人邮箱(去重)
List
<
String
>
userEmailList
=
extractExecUserEmailsFromSubFlows
(
allSubFlows
);
...
...
@@ -907,7 +911,12 @@ public class ChangeFlowBiz {
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
.
getChangeSupplier
(),
cancelSubjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_SUBMIT_CANCEL
,
cancelMap
);
}
return
changeFlowService
.
updateRecord
(
changeRecord
);
}
catch
(
Exception
e
)
{
// 邮件发送失败不影响主流程,只记录日志
log
.
error
(
"[cancel] 发送取消邮件失败,flowId:{}, error:{}"
,
flowId
,
e
.
getMessage
(),
e
);
}
return
updateResult
;
}
/**
...
...
@@ -944,13 +953,10 @@ public class ChangeFlowBiz {
// 构建提交内容
Map
<
String
,
Object
>
subFlowContent
=
buildFlowContent
(
FlowOperationTypeEnum
.
REFUSE
);
Map
<
String
,
Object
>
subFlowCancelParamMap
=
new
HashMap
<>();
subFlowCancelParamMap
.
put
(
"type"
,
FlowTransitionType
.
TYPE_REJECTED
);
// 流转子工单到结束节点
String
subFlowCancelNodeId
=
flowService
.
submitFlow
(
subFlowRecord
.
getSubFlowId
(),
subFlowDataDTO
,
uid
,
ChangeFlowEnum
.
CHANGE_SUB_FLOW
.
getTopoId
(),
JSON
.
toJSONString
(
subFlowContent
),
false
,
FlowxOperationEnum
.
APPROVE_FAI
L
.
getName
(),
"主工单取消,取消行动工单"
,
subFlowRecord
.
getCreateTime
());
FlowxOperationEnum
.
CANCE
L
.
getName
(),
"主工单取消,取消行动工单"
,
subFlowRecord
.
getCreateTime
());
// 更新子工单状态为已取消
subFlowRecord
.
setSubFlowNode
(
subFlowCancelNodeId
);
...
...
yanxuan-qc-change-system-common/src/main/java/com/netease/mail/yanxuan/change/common/enums/FlowxOperationEnum.java
View file @
bc372a3e
...
...
@@ -31,7 +31,11 @@ public enum FlowxOperationEnum {
/**
* 系统自动提交
*/
SYSTEM
(
7
,
"系统自动提交工单"
);
SYSTEM
(
7
,
"系统自动提交工单"
),
/**
* 取消变更
*/
CANCEL
(
8
,
"取消变更"
);
/**
* 类型
...
...
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