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
aad7e88e
Commit
aad7e88e
authored
Dec 03, 2025
by
王志超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 子工单分批流转逻辑处理
parent
5443ba39
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
71 additions
and
0 deletions
+71
-0
ChangeSubFlowBiz.java
...netease/mail/yanxuan/change/biz/biz/ChangeSubFlowBiz.java
+71
-0
No files found.
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/biz/ChangeSubFlowBiz.java
View file @
aad7e88e
...
...
@@ -10,6 +10,7 @@ import com.netease.mail.yanxuan.change.biz.service.ChangeSubFlowRecordService;
import
com.netease.mail.yanxuan.change.biz.service.ChangeSubFlowService
;
import
com.netease.mail.yanxuan.change.biz.service.rpc.FlowService
;
import
com.netease.mail.yanxuan.change.biz.service.rpc.IusService
;
import
com.netease.mail.yanxuan.change.biz.service.rpc.SupplierSendService
;
import
com.netease.mail.yanxuan.change.integration.flow.ius.IusRpcService
;
import
com.netease.mail.yanxuan.change.common.bean.CommonConstants
;
import
com.netease.mail.yanxuan.change.biz.util.PageUtils
;
...
...
@@ -18,9 +19,12 @@ import com.netease.mail.yanxuan.change.common.bean.ResponseCode;
import
com.netease.mail.yanxuan.change.common.enums.ChangeFlowEnum
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeResultEnum
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeSubFlowStatusEnum
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeSubjectEnum
;
import
com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum
;
import
com.netease.mail.yanxuan.change.common.enums.FileTypeEnum
;
import
com.netease.mail.yanxuan.change.common.enums.FlowOperationTypeEnum
;
import
com.netease.mail.yanxuan.change.common.enums.FlowxOperationEnum
;
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum
;
import
com.netease.mail.yanxuan.change.common.util.DateUtils
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
...
...
@@ -58,6 +62,9 @@ import javax.validation.Valid;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* @author TmindA
*/
@Component
@Slf4j
@RequiredArgsConstructor
...
...
@@ -77,6 +84,7 @@ public class ChangeSubFlowBiz {
private
final
IusService
iusService
;
private
final
AppConfig
appConfig
;
private
final
ChangeSubFlowFileService
changeSubFlowFileService
;
private
final
SupplierSendService
sendSupplierEmail
;
public
String
createAndSubmit
(
@Valid
ChangeSubFlowCreateReq
changeSubFlowCreateReq
)
{
...
...
@@ -413,6 +421,9 @@ public class ChangeSubFlowBiz {
log
.
info
(
"[handleSubFlowFinish] 子单完成,subFlowId:{}, result:{}"
,
subFlowRecord
.
getSubFlowId
(),
resultStatus
);
// 发送邮件
sendSubFlowFinishEmail
(
subFlowRecord
);
return
endNodeId
;
}
...
...
@@ -442,6 +453,9 @@ public class ChangeSubFlowBiz {
log
.
info
(
"[handleSubFlowCancel] 子单已取消,subFlowId:{}, reason:{}"
,
subFlowRecord
.
getSubFlowId
(),
req
.
getCancelReason
());
// 发送邮件
sendSubFlowFinishEmail
(
subFlowRecord
);
return
cancelNodeId
;
}
...
...
@@ -511,6 +525,63 @@ public class ChangeSubFlowBiz {
}
/**
* 发送子单完成/取消邮件
*
* @param subFlowRecord 子单记录
*/
private
void
sendSubFlowFinishEmail
(
ChangeSubFlowRecord
subFlowRecord
)
{
try
{
// 查询主单信息
ChangeRecord
mainRecord
=
changeRecordMapper
.
selectByPrimaryKey
(
subFlowRecord
.
getChangeRecordId
());
if
(
mainRecord
==
null
)
{
log
.
warn
(
"[sendSubFlowFinishEmail] 主单不存在,跳过发送邮件,changeRecordId:{}"
,
subFlowRecord
.
getChangeRecordId
());
return
;
}
// 收件人:变更负责人+所有变更行动人+变更管理QM
String
changeExecUserEmail
=
subFlowRecord
.
getChangeExecUserEmail
();
List
<
String
>
receiverList
=
Collections
.
singletonList
(
changeExecUserEmail
);
receiverList
.
add
(
mainRecord
.
getChangeCommander
());
receiverList
.
add
(
appConfig
.
getChangeManageQM
());
// 抄送人:所有变更行动人上一级LEADER+变更管理委员会
List
<
String
>
ccList
=
departmentLeaderBiz
.
getDepartmentLeaders
(
Collections
.
singletonList
(
changeExecUserEmail
));
ccList
.
add
(
appConfig
.
getChangeCommittee
());
// 构建邮件主题:【已完结】变更主体+变更内容+工单ID-子单ID
String
subjectParam
=
ChangeSubjectEnum
.
getChangeSubjectEnum
(
mainRecord
.
getChangeSubject
()).
getDesc
()
+
mainRecord
.
getChangeContent
()
+
mainRecord
.
getFlowId
()
+
"-"
+
subFlowRecord
.
getSubFlowId
();
// 构建邮件参数
HashMap
<
String
,
Object
>
emailMap
=
new
HashMap
<>();
emailMap
.
put
(
"changeId"
,
mainRecord
.
getFlowId
()
+
"-"
+
subFlowRecord
.
getSubFlowId
());
emailMap
.
put
(
"changeSubject"
,
ChangeSubjectEnum
.
getChangeSubjectEnum
(
mainRecord
.
getChangeSubject
()).
getDesc
());
emailMap
.
put
(
"flowUrl"
,
mainRecord
.
getFlowId
());
// 发送邮件
changeFlowBiz
.
qcSendEmail
(
receiverList
,
ccList
,
subjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_FINISH
,
emailMap
);
// 如果是供应商,再次发送供应商邮件
if
(
mainRecord
.
getCreateSource
().
equals
(
CreateSourceEnum
.
TONG_ZHOU
.
getType
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
mainRecord
.
getCreateSupplier
(),
subjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_FINISH
,
emailMap
);
}
// 如果是其他端发起但是是供应商变更,再次发送供应商邮件
if
(!
mainRecord
.
getCreateSource
().
equals
(
CreateSourceEnum
.
TONG_ZHOU
.
getType
())
&&
ChangeSubjectEnum
.
SUPPLIER
.
getType
().
equals
(
mainRecord
.
getChangeSubject
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
mainRecord
.
getChangeSupplier
(),
subjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_FINISH
,
emailMap
);
}
log
.
info
(
"[sendSubFlowFinishEmail] 子单邮件发送成功,subFlowId:{}"
,
subFlowRecord
.
getSubFlowId
());
}
catch
(
Exception
e
)
{
log
.
error
(
"[sendSubFlowFinishEmail] 子单邮件发送失败,subFlowId:{}"
,
subFlowRecord
.
getSubFlowId
(),
e
);
}
}
/**
* 根据变更行动工单ID查询详情
* 说明:展示内容和主单的detail一样,但行动项只展示该变更行动工单下绑定的行动项
*
...
...
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