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
d0439b78
Commit
d0439b78
authored
Feb 07, 2023
by
“zcwang”
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
modify: 执行节点邮件接收优化
parent
60f83a09
Pipeline
#45030
passed with stages
in 1 minute 45 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
151 additions
and
61 deletions
+151
-61
ChangeFlowBiz.java
...om/netease/mail/yanxuan/change/biz/biz/ChangeFlowBiz.java
+5
-61
BuildAndSendEmail.java
...se/mail/yanxuan/change/biz/service/BuildAndSendEmail.java
+23
-0
BuildAndSendEmailImpl.java
...anxuan/change/biz/service/impl/BuildAndSendEmailImpl.java
+123
-0
No files found.
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/biz/ChangeFlowBiz.java
View file @
d0439b78
...
@@ -37,6 +37,7 @@ import com.github.pagehelper.PageHelper;
...
@@ -37,6 +37,7 @@ import com.github.pagehelper.PageHelper;
import
com.github.pagehelper.PageInfo
;
import
com.github.pagehelper.PageInfo
;
import
com.netease.mail.yanxuan.change.biz.config.AppConfig
;
import
com.netease.mail.yanxuan.change.biz.config.AppConfig
;
import
com.netease.mail.yanxuan.change.biz.meta.exception.ExceptionFactory
;
import
com.netease.mail.yanxuan.change.biz.meta.exception.ExceptionFactory
;
import
com.netease.mail.yanxuan.change.biz.service.BuildAndSendEmail
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFileService
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFileService
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFlowExecService
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFlowExecService
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFlowService
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFlowService
;
...
@@ -171,6 +172,9 @@ public class ChangeFlowBiz {
...
@@ -171,6 +172,9 @@ public class ChangeFlowBiz {
@Autowired
@Autowired
private
QCService
qcService
;
private
QCService
qcService
;
@Autowired
private
BuildAndSendEmail
buildAndSendEmail
;
public
String
createAndSubmit
(
ChangeFlowCreateReq
changeFlowCreateReq
)
{
public
String
createAndSubmit
(
ChangeFlowCreateReq
changeFlowCreateReq
)
{
String
uid
=
RequestLocalBean
.
getUid
();
String
uid
=
RequestLocalBean
.
getUid
();
String
name
=
RequestLocalBean
.
getName
();
String
name
=
RequestLocalBean
.
getName
();
...
@@ -298,67 +302,7 @@ public class ChangeFlowBiz {
...
@@ -298,67 +302,7 @@ public class ChangeFlowBiz {
changeRecord
.
setState
(
ChangeStatusEnum
.
IN
.
getStatus
());
changeRecord
.
setState
(
ChangeStatusEnum
.
IN
.
getStatus
());
changeRecord
.
setUpdateTime
(
DateUtils
.
getCurrentTime
());
changeRecord
.
setUpdateTime
(
DateUtils
.
getCurrentTime
());
changeFlowService
.
updateRecord
(
changeRecord
);
changeFlowService
.
updateRecord
(
changeRecord
);
HashMap
<
String
,
Object
>
param
=
new
HashMap
<>();
buildAndSendEmail
.
buildAndSendEmail
(
changeRecord
,
changeExecRecords
,
changeType
,
changeCommander
,
changeFlowCreateReq
);
param
.
put
(
"changeId"
,
changeRecord
.
getFlowId
());
param
.
put
(
"changeSubject"
,
ChangeSubjectEnum
.
getChangeSubjectEnum
(
changeRecord
.
getChangeSubject
()).
getDesc
());
param
.
put
(
"changeContent"
,
changeRecord
.
getChangeContent
());
param
.
put
(
"changeReason"
,
changeRecord
.
getChangeReason
());
IusUserInfoRsp
user
=
iusService
.
queryUserInfo
(
changeRecord
.
getChangeCommander
());
param
.
put
(
"changeCommander"
,
user
==
null
?
changeRecord
.
getChangeCommander
()
:
user
.
getName
());
param
.
put
(
"changeCommanderEmail"
,
changeRecord
.
getChangeCommander
());
param
.
put
(
"flowUrl"
,
changeRecord
.
getFlowId
());
List
<
ChangeExecuteEmailDTO
>
dataList
=
new
ArrayList
<>();
changeExecRecords
.
forEach
(
i
->
{
ChangeExecuteEmailDTO
changeExecuteEmailDTO
=
new
ChangeExecuteEmailDTO
();
changeExecuteEmailDTO
.
setChangeExecDepartment
(
i
.
getChangeExecDepartment
());
changeExecuteEmailDTO
.
setChangeExecUser
(
i
.
getChangeExecUserEmail
());
changeExecuteEmailDTO
.
setChangeRiskDesc
(
i
.
getChangeRiskDesc
());
changeExecuteEmailDTO
.
setChangeExecProject
(
i
.
getChangeExecProject
());
changeExecuteEmailDTO
.
setChangeChecking
(
i
.
getChangeChecking
());
dataList
.
add
(
changeExecuteEmailDTO
);
});
// 邮件附件执行人改为名字+邮箱格式,没有的话兜底邮箱
List
<
String
>
changeExecUserList
=
dataList
.
stream
().
map
(
ChangeExecuteEmailDTO:
:
getChangeExecUser
).
collect
(
Collectors
.
toList
());
List
<
IusUserInfoRsp
>
iusUserInfoRsps
=
iusService
.
queryUserListInfo
(
UserQueryDTO
.
builder
().
uids
(
changeExecUserList
).
build
());
dataList
.
forEach
(
d
->
{
Optional
<
IusUserInfoRsp
>
anyExeUser
=
iusUserInfoRsps
.
stream
().
filter
(
ius
->
ius
.
getUid
().
equals
(
d
.
getChangeExecUser
())).
findAny
();
String
execUserName
;
if
(
anyExeUser
.
isPresent
())
{
execUserName
=
anyExeUser
.
get
().
getName
();
}
else
{
// 批量查询没查到的人名,通过全量查询单独再查一次
IusUserInfoRsp
iusUserInfo
=
iusService
.
queryUserInfo
(
d
.
getChangeExecUser
());
execUserName
=
iusUserInfo
==
null
||
StringUtils
.
isBlank
(
user
.
getName
())
?
""
:
user
.
getName
();
}
d
.
setChangeExecUser
(
execUserName
+
d
.
getChangeExecUser
());
});
param
.
put
(
"dataList"
,
dataList
);
String
subjectParam
=
ChangeSubjectEnum
.
getChangeSubjectEnum
(
changeRecord
.
getChangeSubject
()).
getDesc
()
+
changeType
+
changeRecord
.
getFlowId
().
toString
();
List
<
ChangeFlowExecVO
>
changeFlowExecRecord
=
changeFlowExecService
.
getChangeFlowExecRecord
(
changeRecord
.
getId
());
List
<
String
>
execUserEmailList
=
changeFlowExecRecord
.
stream
().
map
(
ChangeFlowExecVO:
:
getChangeExecUserEmail
)
.
collect
(
Collectors
.
toList
());
// 获取指定人的上级部门主管邮箱
List
<
String
>
ccList
=
getDepartmentInfo
(
execUserEmailList
);
// 变更执行,抄送:所有变更行动人上一级LEADER,变更负责人、变更转交人(如有)
ccList
.
add
(
changeCommander
);
// 变更执行,收件人:所有变更行动人+变更管理QM(cuiyixian@corp.netease.com)
execUserEmailList
.
add
(
appConfig
.
getChangeManageQM
());
qcSendEmail
(
execUserEmailList
,
ccList
,
subjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
// 如果是供应商,再次发送供应商邮件
if
(
changeFlowCreateReq
.
getCreateSource
().
equals
(
CreateSourceEnum
.
TONG_ZHOU
.
getType
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
.
getCreateSupplier
(),
subjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
}
// 如果是其他端发起但是是供应商变更,再次发送供应商邮件
if
(!
changeFlowCreateReq
.
getCreateSource
().
equals
(
CreateSourceEnum
.
TONG_ZHOU
.
getType
())
&&
ChangeSubjectEnum
.
SUPPLIER
.
getType
().
equals
(
changeRecord
.
getChangeSubject
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
.
getChangeSupplier
(),
subjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
}
return
flowId
;
return
flowId
;
}
}
// 如果发起人≠变更负责人,停留在变更申请提交节点,发送邮件
// 如果发起人≠变更负责人,停留在变更申请提交节点,发送邮件
...
...
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/service/BuildAndSendEmail.java
0 → 100644
View file @
d0439b78
/**
* @(#)buildAndSendEmail.java, 2023/2/7.
* <p/>
* Copyright 2023 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package
com
.
netease
.
mail
.
yanxuan
.
change
.
biz
.
service
;
import
java.util.List
;
import
com.netease.mail.yanxuan.change.dal.entity.ChangeExecRecord
;
import
com.netease.mail.yanxuan.change.dal.entity.ChangeRecord
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCreateReq
;
/**
* @Author zcwang
* @Date 2023/2/7
*/
public
interface
BuildAndSendEmail
{
void
buildAndSendEmail
(
ChangeRecord
changeRecord
,
List
<
ChangeExecRecord
>
changeExecRecords
,
StringBuilder
changeType
,
String
changeCommander
,
ChangeFlowCreateReq
changeFlowCreateReq
);
}
\ No newline at end of file
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/service/impl/BuildAndSendEmailImpl.java
0 → 100644
View file @
d0439b78
/**
* @(#)BuildAndSendEmailImpl.java, 2023/2/7.
* <p/>
* Copyright 2023 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package
com
.
netease
.
mail
.
yanxuan
.
change
.
biz
.
service
.
impl
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
com.netease.mail.yanxuan.change.biz.biz.ChangeFlowBiz
;
import
com.netease.mail.yanxuan.change.biz.config.AppConfig
;
import
com.netease.mail.yanxuan.change.biz.service.BuildAndSendEmail
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFlowExecService
;
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.common.enums.ChangeSubjectEnum
;
import
com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum
;
import
com.netease.mail.yanxuan.change.dal.entity.ChangeExecRecord
;
import
com.netease.mail.yanxuan.change.dal.entity.ChangeRecord
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCreateReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeFlowExecVO
;
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum
;
import
com.netease.mail.yanxuan.change.integration.flow.UserQueryDTO
;
import
com.netease.mail.yanxuan.change.integration.flow.ius.rsp.IusUserInfoRsp
;
import
com.netease.mail.yanxuan.change.integration.todo.ChangeExecuteEmailDTO
;
/**
* @Author zcwang
* @Date 2023/2/7
*/
public
class
BuildAndSendEmailImpl
implements
BuildAndSendEmail
{
@Autowired
private
IusService
iusService
;
@Autowired
private
ChangeFlowExecService
changeFlowExecService
;
@Autowired
private
ChangeFlowBiz
changeFlowBiz
;
@Autowired
private
AppConfig
appConfig
;
@Autowired
private
SupplierSendService
sendSupplierEmail
;
@Override
@Async
(
"buildAndSendEmail"
)
public
void
buildAndSendEmail
(
ChangeRecord
changeRecord
,
List
<
ChangeExecRecord
>
changeExecRecords
,
StringBuilder
changeType
,
String
changeCommander
,
ChangeFlowCreateReq
changeFlowCreateReq
)
{
HashMap
<
String
,
Object
>
param
=
new
HashMap
<>();
param
.
put
(
"changeId"
,
changeRecord
.
getFlowId
());
param
.
put
(
"changeSubject"
,
ChangeSubjectEnum
.
getChangeSubjectEnum
(
changeRecord
.
getChangeSubject
()).
getDesc
());
param
.
put
(
"changeContent"
,
changeRecord
.
getChangeContent
());
param
.
put
(
"changeReason"
,
changeRecord
.
getChangeReason
());
IusUserInfoRsp
user
=
iusService
.
queryUserInfo
(
changeRecord
.
getChangeCommander
());
param
.
put
(
"changeCommander"
,
user
==
null
?
changeRecord
.
getChangeCommander
()
:
user
.
getName
());
param
.
put
(
"changeCommanderEmail"
,
changeRecord
.
getChangeCommander
());
param
.
put
(
"flowUrl"
,
changeRecord
.
getFlowId
());
List
<
ChangeExecuteEmailDTO
>
dataList
=
new
ArrayList
<>();
changeExecRecords
.
forEach
(
i
->
{
ChangeExecuteEmailDTO
changeExecuteEmailDTO
=
new
ChangeExecuteEmailDTO
();
changeExecuteEmailDTO
.
setChangeExecDepartment
(
i
.
getChangeExecDepartment
());
changeExecuteEmailDTO
.
setChangeExecUser
(
i
.
getChangeExecUserEmail
());
changeExecuteEmailDTO
.
setChangeRiskDesc
(
i
.
getChangeRiskDesc
());
changeExecuteEmailDTO
.
setChangeExecProject
(
i
.
getChangeExecProject
());
changeExecuteEmailDTO
.
setChangeChecking
(
i
.
getChangeChecking
());
dataList
.
add
(
changeExecuteEmailDTO
);
});
// 邮件附件执行人改为名字+邮箱格式,没有的话兜底邮箱
List
<
String
>
changeExecUserList
=
dataList
.
stream
().
map
(
ChangeExecuteEmailDTO:
:
getChangeExecUser
).
collect
(
Collectors
.
toList
());
List
<
IusUserInfoRsp
>
iusUserInfoRsps
=
iusService
.
queryUserListInfo
(
UserQueryDTO
.
builder
().
uids
(
changeExecUserList
).
build
());
dataList
.
forEach
(
d
->
{
Optional
<
IusUserInfoRsp
>
anyExeUser
=
iusUserInfoRsps
.
stream
().
filter
(
ius
->
ius
.
getUid
().
equals
(
d
.
getChangeExecUser
())).
findAny
();
String
execUserName
;
if
(
anyExeUser
.
isPresent
())
{
execUserName
=
anyExeUser
.
get
().
getName
();
}
else
{
// 批量查询没查到的人名,通过全量查询单独再查一次
IusUserInfoRsp
iusUserInfo
=
iusService
.
queryUserInfo
(
d
.
getChangeExecUser
());
execUserName
=
iusUserInfo
==
null
||
StringUtils
.
isBlank
(
user
.
getName
())
?
""
:
user
.
getName
();
}
d
.
setChangeExecUser
(
execUserName
+
d
.
getChangeExecUser
());
});
param
.
put
(
"dataList"
,
dataList
);
String
subjectParam
=
ChangeSubjectEnum
.
getChangeSubjectEnum
(
changeRecord
.
getChangeSubject
()).
getDesc
()
+
changeType
+
changeRecord
.
getFlowId
().
toString
();
List
<
ChangeFlowExecVO
>
changeFlowExecRecord
=
changeFlowExecService
.
getChangeFlowExecRecord
(
changeRecord
.
getId
());
List
<
String
>
execUserEmailList
=
changeFlowExecRecord
.
stream
().
map
(
ChangeFlowExecVO:
:
getChangeExecUserEmail
)
.
collect
(
Collectors
.
toList
());
// 获取指定人的上级部门主管邮箱
List
<
String
>
ccList
=
changeFlowBiz
.
getDepartmentInfo
(
execUserEmailList
);
// 变更执行,抄送:所有变更行动人上一级LEADER,变更负责人、变更转交人(如有)
ccList
.
add
(
changeCommander
);
// 变更执行,收件人:所有变更行动人+变更管理QM(cuiyixian@corp.netease.com)
execUserEmailList
.
add
(
appConfig
.
getChangeManageQM
());
changeFlowBiz
.
qcSendEmail
(
execUserEmailList
,
ccList
,
subjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
// 如果是供应商,再次发送供应商邮件
if
(
changeFlowCreateReq
.
getCreateSource
().
equals
(
CreateSourceEnum
.
TONG_ZHOU
.
getType
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
.
getCreateSupplier
(),
subjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
}
// 如果是其他端发起但是是供应商变更,再次发送供应商邮件
if
(!
changeFlowCreateReq
.
getCreateSource
().
equals
(
CreateSourceEnum
.
TONG_ZHOU
.
getType
())
&&
ChangeSubjectEnum
.
SUPPLIER
.
getType
().
equals
(
changeRecord
.
getChangeSubject
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
.
getChangeSupplier
(),
subjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
}
}
}
\ No newline at end of file
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