Commit 3912b07f by “zcwang”

modify: 执行节点邮件接收优化

parent 1aef8275
Pipeline #45042 passed with stages
in 2 minutes 0 seconds
...@@ -103,7 +103,6 @@ import com.netease.mail.yanxuan.change.integration.item.meta.SpuTO; ...@@ -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.BatchQuerySpuInfoParam;
import com.netease.mail.yanxuan.change.integration.item.param.CommonIdsParamQuery; 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.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.controller.communal.AjaxResponse;
import com.netease.yanxuan.flowx.sdk.meta.dto.base.FlowDataDTO; import com.netease.yanxuan.flowx.sdk.meta.dto.base.FlowDataDTO;
import com.netease.yanxuan.flowx.sdk.meta.dto.base.UserBaseDTO; import com.netease.yanxuan.flowx.sdk.meta.dto.base.UserBaseDTO;
...@@ -302,7 +301,7 @@ public class ChangeFlowBiz { ...@@ -302,7 +301,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);
buildAndSendEmail.buildAndSendEmail(changeRecord, changeExecRecords, changeType, changeCommander, changeFlowCreateReq); buildAndSendEmail.buildAndSendEmailCreate(changeRecord, changeExecRecords, changeType, changeCommander, changeFlowCreateReq);
return flowId; return flowId;
} }
// 如果发起人≠变更负责人,停留在变更申请提交节点,发送邮件 // 如果发起人≠变更负责人,停留在变更申请提交节点,发送邮件
...@@ -576,51 +575,7 @@ public class ChangeFlowBiz { ...@@ -576,51 +575,7 @@ public class ChangeFlowBiz {
} }
log.debug("[CHANGE_FLOW_SUBMIT] changeFiles:{}, uploadFiles:{}, allFiles:{}", JSON.toJSONString(changeFiles), log.debug("[CHANGE_FLOW_SUBMIT] changeFiles:{}, uploadFiles:{}, allFiles:{}", JSON.toJSONString(changeFiles),
JSON.toJSONString(uploadFiles), JSON.toJSONString(allFiles)); JSON.toJSONString(uploadFiles), JSON.toJSONString(allFiles));
HashMap<String, Object> param = new HashMap<>(); buildAndSendEmail.buildAndSendEmailSubmit(changeRecord, changeExecRecords);
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);
}
return submitNode; return submitNode;
case CHANGE_FLOW_CONFIRM: case CHANGE_FLOW_CONFIRM:
Integer changeResult = changeFlowSubmitReq.getChangeResult(); Integer changeResult = changeFlowSubmitReq.getChangeResult();
......
...@@ -18,5 +18,20 @@ import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCreateReq; ...@@ -18,5 +18,20 @@ import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCreateReq;
*/ */
public interface BuildAndSendEmail { 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
...@@ -22,12 +22,14 @@ import com.netease.mail.yanxuan.change.biz.biz.ChangeFlowBiz; ...@@ -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.config.AppConfig;
import com.netease.mail.yanxuan.change.biz.service.BuildAndSendEmail; 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.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.IusService;
import com.netease.mail.yanxuan.change.biz.service.rpc.SupplierSendService; 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.ChangeSubjectEnum;
import com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum; 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.ChangeExecRecord;
import com.netease.mail.yanxuan.change.dal.entity.ChangeRecord; 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.req.ChangeFlowCreateReq;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeFlowExecVO; 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.email.enums.EmailTemplateEnum;
...@@ -60,9 +62,12 @@ public class BuildAndSendEmailImpl implements BuildAndSendEmail { ...@@ -60,9 +62,12 @@ public class BuildAndSendEmailImpl implements BuildAndSendEmail {
@Autowired @Autowired
private SupplierSendService sendSupplierEmail; private SupplierSendService sendSupplierEmail;
@Autowired
private ChangeConfigService changeConfigService;
@Override @Override
@Async("buildAndSendEmail") @Async("buildAndSendEmailCreate")
public void buildAndSendEmail(ChangeRecord changeRecord, List<ChangeExecRecord> changeExecRecords, StringBuilder changeType, String changeCommander, ChangeFlowCreateReq changeFlowCreateReq) { public void buildAndSendEmailCreate(ChangeRecord changeRecord, List<ChangeExecRecord> changeExecRecords, StringBuilder changeType, String changeCommander, ChangeFlowCreateReq changeFlowCreateReq) {
HashMap<String, Object> param = new HashMap<>(); HashMap<String, Object> param = new HashMap<>();
param.put("changeId", changeRecord.getFlowId()); param.put("changeId", changeRecord.getFlowId());
param.put("changeSubject", ChangeSubjectEnum.getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc()); param.put("changeSubject", ChangeSubjectEnum.getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc());
...@@ -98,7 +103,7 @@ public class BuildAndSendEmailImpl implements BuildAndSendEmail { ...@@ -98,7 +103,7 @@ public class BuildAndSendEmailImpl implements BuildAndSendEmail {
} }
d.setChangeExecUser(execUserName + d.getChangeExecUser()); d.setChangeExecUser(execUserName + d.getChangeExecUser());
}); });
log.debug("[buildAndSendEmail] changeExecUserList:{}, dataList:{}", JSON.toJSONString(changeExecUserList), log.debug("[buildAndSendEmailCreate] changeExecUserList:{}, dataList:{}", JSON.toJSONString(changeExecUserList),
JSON.toJSONString(dataList)); JSON.toJSONString(dataList));
param.put("dataList", dataList); param.put("dataList", dataList);
String subjectParam = ChangeSubjectEnum.getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc() + changeType String subjectParam = ChangeSubjectEnum.getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc() + changeType
...@@ -127,4 +132,82 @@ public class BuildAndSendEmailImpl implements BuildAndSendEmail { ...@@ -127,4 +132,82 @@ public class BuildAndSendEmailImpl implements BuildAndSendEmail {
EmailTemplateEnum.YX_QC_CHANGE_EXECUTE, param); 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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment