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
3912b07f
Commit
3912b07f
authored
Feb 08, 2023
by
“zcwang”
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
modify: 执行节点邮件接收优化
parent
1aef8275
Pipeline
#45042
passed with stages
in 2 minutes 0 seconds
Changes
3
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
106 additions
and
51 deletions
+106
-51
ChangeFlowBiz.java
...om/netease/mail/yanxuan/change/biz/biz/ChangeFlowBiz.java
+2
-47
BuildAndSendEmail.java
...se/mail/yanxuan/change/biz/service/BuildAndSendEmail.java
+17
-1
BuildAndSendEmailImpl.java
...anxuan/change/biz/service/impl/BuildAndSendEmailImpl.java
+87
-3
No files found.
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/biz/ChangeFlowBiz.java
View file @
3912b07f
...
...
@@ -103,7 +103,6 @@ import com.netease.mail.yanxuan.change.integration.item.meta.SpuTO;
import
com.netease.mail.yanxuan.change.integration.item.param.BatchQuerySpuInfoParam
;
import
com.netease.mail.yanxuan.change.integration.item.param.CommonIdsParamQuery
;
import
com.netease.mail.yanxuan.change.integration.qc.meta.QcCategoryVO
;
import
com.netease.mail.yanxuan.change.integration.todo.ChangeExecuteEmailDTO
;
import
com.netease.yanxuan.flowx.sdk.meta.controller.communal.AjaxResponse
;
import
com.netease.yanxuan.flowx.sdk.meta.dto.base.FlowDataDTO
;
import
com.netease.yanxuan.flowx.sdk.meta.dto.base.UserBaseDTO
;
...
...
@@ -302,7 +301,7 @@ public class ChangeFlowBiz {
changeRecord
.
setState
(
ChangeStatusEnum
.
IN
.
getStatus
());
changeRecord
.
setUpdateTime
(
DateUtils
.
getCurrentTime
());
changeFlowService
.
updateRecord
(
changeRecord
);
buildAndSendEmail
.
buildAndSendEmail
(
changeRecord
,
changeExecRecords
,
changeType
,
changeCommander
,
changeFlowCreateReq
);
buildAndSendEmail
.
buildAndSendEmail
Create
(
changeRecord
,
changeExecRecords
,
changeType
,
changeCommander
,
changeFlowCreateReq
);
return
flowId
;
}
// 如果发起人≠变更负责人,停留在变更申请提交节点,发送邮件
...
...
@@ -576,51 +575,7 @@ public class ChangeFlowBiz {
}
log
.
debug
(
"[CHANGE_FLOW_SUBMIT] changeFiles:{}, uploadFiles:{}, allFiles:{}"
,
JSON
.
toJSONString
(
changeFiles
),
JSON
.
toJSONString
(
uploadFiles
),
JSON
.
toJSONString
(
allFiles
));
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
());
param
.
put
(
"dataList"
,
changeExecRecords
);
ChangeConfigPo
changeConfigPoV1
=
changeConfigService
.
queryInfoPo
(
changeRecord
.
getParentChangeClassId
(),
changeRecord
.
getSonChangeClassId
());
StringBuilder
changeTypeV1
=
new
StringBuilder
();
try
{
changeTypeV1
.
append
(
changeConfigPoV1
.
getChangeTypes
().
get
(
0
).
getTypeName
());
changeTypeV1
.
append
(
changeConfigPoV1
.
getChangeTypes
().
get
(
1
).
getTypeName
());
}
catch
(
Exception
e
)
{
log
.
error
(
"queryInfoPo error:{}"
,
JSON
.
toJSONString
(
changeConfigPoV1
));
}
String
subjectParam
=
ChangeSubjectEnum
.
getChangeSubjectEnum
(
changeRecord
.
getChangeSubject
()).
getDesc
()
+
changeTypeV1
+
changeRecord
.
getFlowId
().
toString
();
// 负责人
String
changeCommander
=
changeRecord
.
getChangeCommander
();
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
(
changeRecord
.
getCreateSource
().
equals
(
CreateSourceEnum
.
TONG_ZHOU
.
getType
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
.
getCreateSupplier
(),
subjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
}
// 如果是其他端发起但是是供应商变更,再次发送供应商邮件
if
(!
changeRecord
.
getCreateSource
().
equals
(
CreateSourceEnum
.
TONG_ZHOU
.
getType
())
&&
ChangeSubjectEnum
.
SUPPLIER
.
getType
().
equals
(
changeRecord
.
getChangeSubject
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
.
getChangeSupplier
(),
subjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
}
buildAndSendEmail
.
buildAndSendEmailSubmit
(
changeRecord
,
changeExecRecords
);
return
submitNode
;
case
CHANGE_FLOW_CONFIRM:
Integer
changeResult
=
changeFlowSubmitReq
.
getChangeResult
();
...
...
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/service/BuildAndSendEmail.java
View file @
3912b07f
...
...
@@ -18,5 +18,20 @@ import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCreateReq;
*/
public
interface
BuildAndSendEmail
{
void
buildAndSendEmail
(
ChangeRecord
changeRecord
,
List
<
ChangeExecRecord
>
changeExecRecords
,
StringBuilder
changeType
,
String
changeCommander
,
ChangeFlowCreateReq
changeFlowCreateReq
);
/**
* 创建工单,创建人=变更负责人,组装提交数据,并发送邮件
* @param changeRecord
* @param changeExecRecords
* @param changeType
* @param changeCommander
* @param changeFlowCreateReq
*/
void
buildAndSendEmailCreate
(
ChangeRecord
changeRecord
,
List
<
ChangeExecRecord
>
changeExecRecords
,
StringBuilder
changeType
,
String
changeCommander
,
ChangeFlowCreateReq
changeFlowCreateReq
);
/**
* 提交工单,变更确认节点,组装提交数据,并发送邮件
* @param changeRecord
* @param changeExecRecords
*/
void
buildAndSendEmailSubmit
(
ChangeRecord
changeRecord
,
List
<
ChangeExecRecord
>
changeExecRecords
);
}
\ No newline at end of file
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/service/impl/BuildAndSendEmailImpl.java
View file @
3912b07f
...
...
@@ -22,12 +22,14 @@ 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.change.ChangeConfigService
;
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.po.ChangeConfigPo
;
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
;
...
...
@@ -60,9 +62,12 @@ public class BuildAndSendEmailImpl implements BuildAndSendEmail {
@Autowired
private
SupplierSendService
sendSupplierEmail
;
@Autowired
private
ChangeConfigService
changeConfigService
;
@Override
@Async
(
"buildAndSendEmail"
)
public
void
buildAndSendEmail
(
ChangeRecord
changeRecord
,
List
<
ChangeExecRecord
>
changeExecRecords
,
StringBuilder
changeType
,
String
changeCommander
,
ChangeFlowCreateReq
changeFlowCreateReq
)
{
@Async
(
"buildAndSendEmail
Create
"
)
public
void
buildAndSendEmail
Create
(
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
());
...
...
@@ -98,7 +103,7 @@ public class BuildAndSendEmailImpl implements BuildAndSendEmail {
}
d
.
setChangeExecUser
(
execUserName
+
d
.
getChangeExecUser
());
});
log
.
debug
(
"[buildAndSendEmail] changeExecUserList:{}, dataList:{}"
,
JSON
.
toJSONString
(
changeExecUserList
),
log
.
debug
(
"[buildAndSendEmail
Create
] changeExecUserList:{}, dataList:{}"
,
JSON
.
toJSONString
(
changeExecUserList
),
JSON
.
toJSONString
(
dataList
));
param
.
put
(
"dataList"
,
dataList
);
String
subjectParam
=
ChangeSubjectEnum
.
getChangeSubjectEnum
(
changeRecord
.
getChangeSubject
()).
getDesc
()
+
changeType
...
...
@@ -127,4 +132,82 @@ public class BuildAndSendEmailImpl implements BuildAndSendEmail {
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
}
}
@Override
@Async
(
"buildAndSendEmailSubmit"
)
public
void
buildAndSendEmailSubmit
(
ChangeRecord
changeRecord
,
List
<
ChangeExecRecord
>
changeExecRecords
)
{
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
());
});
log
.
debug
(
"[buildAndSendEmailSubmit] changeExecUserList:{}, dataList:{}"
,
JSON
.
toJSONString
(
changeExecUserList
),
JSON
.
toJSONString
(
dataList
));
param
.
put
(
"dataList"
,
dataList
);
ChangeConfigPo
changeConfigPoV1
=
changeConfigService
.
queryInfoPo
(
changeRecord
.
getParentChangeClassId
(),
changeRecord
.
getSonChangeClassId
());
StringBuilder
changeTypeV1
=
new
StringBuilder
();
try
{
changeTypeV1
.
append
(
changeConfigPoV1
.
getChangeTypes
().
get
(
0
).
getTypeName
());
changeTypeV1
.
append
(
changeConfigPoV1
.
getChangeTypes
().
get
(
1
).
getTypeName
());
}
catch
(
Exception
e
)
{
log
.
error
(
"queryInfoPo error:{}"
,
JSON
.
toJSONString
(
changeConfigPoV1
));
}
String
subjectParam
=
ChangeSubjectEnum
.
getChangeSubjectEnum
(
changeRecord
.
getChangeSubject
()).
getDesc
()
+
changeTypeV1
+
changeRecord
.
getFlowId
().
toString
();
// 负责人
String
changeCommander
=
changeRecord
.
getChangeCommander
();
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
(
changeRecord
.
getCreateSource
().
equals
(
CreateSourceEnum
.
TONG_ZHOU
.
getType
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
.
getCreateSupplier
(),
subjectParam
,
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
}
// 如果是其他端发起但是是供应商变更,再次发送供应商邮件
if
(!
changeRecord
.
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