Commit 8da827c6 by “zcwang”

modify:邮件发送

parent a738bffe
......@@ -245,6 +245,7 @@ public class ChangeFlowBiz {
}
// 更新节点id
changeRecord.setFlowNode(ChangeFlowEnum.CHANGE_FLOW_EXE.getNodeId());
changeRecord.setState(ChangeStatusEnum.IN.getStatus());
changeRecord.setUpdateTime(DateUtils.getCurrentTime());
changeFlowService.updateRecord(changeRecord);
HashMap<String, Object> param = new HashMap<>();
......@@ -256,10 +257,25 @@ public class ChangeFlowBiz {
param.put("changeCommanderEmail", changeRecord.getChangeCommander());
param.put("flowUrl", changeRecord.getFlowId());
param.put("dataList", changeExecRecords);
qcSendEmail(changeCommander, changeRecord.getId().toString(), EmailTemplateEnum.YX_QC_CHANGE_EXECUTE, param);
ChangeConfigPo changeConfigPo = changeConfigService.queryInfoPo(parentChangeClassId, sonChangeClassId);
StringBuilder changeType = new StringBuilder("");
try {
changeType.append(changeConfigPo.getChangeTypes().get(0).getTypeName());
} catch (Exception e) {
log.error("queryInfoPo error:{}", JSON.toJSONString(changeConfigPo));
}
try {
changeType.append(changeConfigPo.getChangeTypes().get(1).getTypeName());
} catch (Exception e) {
log.error("queryInfoPo error:{}", JSON.toJSONString(changeConfigPo));
}
String subjectParam = changeRecord.getChangeSubject() + changeType.toString()
+ changeRecord.getId().toString();
qcSendEmail(changeCommander, subjectParam, EmailTemplateEnum.YX_QC_CHANGE_EXECUTE, param);
// 如果是供应商,再次发送供应商邮件
if (changeFlowCreateReq.getCreateSource().equals(CreateSourceEnum.QC.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord, EmailTemplateEnum.YX_QC_CHANGE_EXECUTE, param);
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), subjectParam,
EmailTemplateEnum.YX_QC_CHANGE_EXECUTE, param);
}
return flowId;
}
......@@ -281,10 +297,12 @@ public class ChangeFlowBiz {
}
param.put("changeType", changeType.toString());
param.put("flowUrl", changeRecord.getFlowId());
qcSendEmail(changeCommander, changeRecord.getId().toString(), EmailTemplateEnum.YX_QC_CHANGE_RELEASE_FLOW, param);
String subjectParam = changeRecord.getId().toString();
qcSendEmail(changeCommander, subjectParam, EmailTemplateEnum.YX_QC_CHANGE_RELEASE_FLOW, param);
// 如果是供应商,再次发送供应商邮件
if (changeFlowCreateReq.getCreateSource().equals(CreateSourceEnum.QC.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord, EmailTemplateEnum.YX_QC_CHANGE_RELEASE_FLOW, param);
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), subjectParam,
EmailTemplateEnum.YX_QC_CHANGE_RELEASE_FLOW, param);
}
return flowId;
}
......@@ -404,7 +422,7 @@ public class ChangeFlowBiz {
changeRecord.setChangeProfit(changeFlowCreateReq.getChangeProfit());
changeRecord.setChangeProfitDesc(changeFlowCreateReq.getChangeProfitDesc());
changeRecord.setChangeConfirmResultTime(changeFlowCreateReq.getChangeConfirmResultTime());
changeRecord.setState(ChangeStatusEnum.IN.getStatus());
changeRecord.setState(ChangeStatusEnum.WAIT.getStatus());
// 变更结论
changeRecord.setCreateSource(changeFlowCreateReq.getCreateSource());
changeRecord.setCreateSupplier(changeFlowCreateReq.getChangeSupplier());
......@@ -479,6 +497,7 @@ public class ChangeFlowBiz {
ChangeFlowEnum.CHANGE_FLOW_SUBMIT.getTopoId(), JSON.toJSONString(content), true);
// 更新工单数据
changeRecord.setFlowNode(submitNode);
changeRecord.setState(ChangeStatusEnum.IN.getStatus());
changeRecord.setUpdateTime(DateUtils.getCurrentTime());
changeFlowService.updateRecord(changeRecord);
// 更新行动执行方案,覆盖操作,先删除,后插入
......@@ -504,10 +523,13 @@ public class ChangeFlowBiz {
param.put("changeCommanderEmail", changeRecord.getChangeCommander());
param.put("flowUrl", changeRecord.getFlowId());
param.put("dataList", changeExecRecords);
qcSendEmail(changeRecord.getChangeCommander(), changeRecord.getId().toString(), EmailTemplateEnum.YX_QC_CHANGE_EXECUTE, param);
String subjectParam = changeRecord.getId().toString();
qcSendEmail(changeRecord.getChangeCommander(), subjectParam,
EmailTemplateEnum.YX_QC_CHANGE_EXECUTE, param);
// 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.QC.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord, EmailTemplateEnum.YX_QC_CHANGE_EXECUTE, param);
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), subjectParam,
EmailTemplateEnum.YX_QC_CHANGE_EXECUTE, param);
}
return submitNode;
case CHANGE_FLOW_CONFIRM:
......@@ -545,11 +567,28 @@ public class ChangeFlowBiz {
finishPartMap.put("changeId", changeRecord.getId());
finishPartMap.put("changeSubject", changeRecord.getChangeSubject());
finishPartMap.put("flowUrl", changeRecord.getFlowId());
qcSendEmail(changeRecord.getChangeCommander(), changeRecord.getId().toString(),
ChangeConfigPo changeConfigPo = changeConfigService
.queryInfoPo(changeRecord.getParentChangeClassId(), changeRecord.getSonChangeClassId());
StringBuilder changeType = new StringBuilder("");
try {
changeType.append(changeConfigPo.getChangeTypes().get(0).getTypeName());
} catch (Exception e) {
log.error("queryInfoPo error:{}", JSON.toJSONString(changeConfigPo));
}
try {
changeType.append(changeConfigPo.getChangeTypes().get(1).getTypeName());
} catch (Exception e) {
log.error("queryInfoPo error:{}", JSON.toJSONString(changeConfigPo));
}
//【已完结】变更主体+变更内容+工单ID 变更风险行动项已完结,请开始执行变更。
String finishSubjectParam = changeRecord.getChangeSubject() + changeRecord.getChangeContent()
+ changeRecord.getId();
qcSendEmail(changeRecord.getChangeCommander(), finishSubjectParam,
EmailTemplateEnum.YX_QC_CHANGE_FINISH, finishPartMap);
// 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.QC.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord, EmailTemplateEnum.YX_QC_CHANGE_FINISH, finishPartMap);
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), finishSubjectParam,
EmailTemplateEnum.YX_QC_CHANGE_FINISH, finishPartMap);
}
return confirmNode;
case CANCEL:
......@@ -565,14 +604,19 @@ public class ChangeFlowBiz {
changeFlowService.updateRecord(changeRecord);
todoService.progressTodoTask(changeRecord, OperateTypeEnum.FINISH.getType());
// 发送邮件
HashMap<String, Object> cancelMap = new HashMap<>();
Map<String, Object> cancelMap = new HashMap<>();
cancelMap.put("changeId", changeRecord.getId());
cancelMap.put("changeSubject", changeRecord.getChangeSubject());
cancelMap.put("flowUrl", changeRecord.getFlowId());
qcSendEmail(changeRecord.getChangeCommander(), changeRecord.getId().toString(), EmailTemplateEnum.YX_QC_CHANGE_FINISH, cancelMap);
cancelMap.put("changeContent", changeRecord.getChangeContent());
cancelMap.put("changeCommander", changeRecord.getChangeCommander());
cancelMap.put("cancelReason", changeRecord.getCancelReason());
String cancelSubjectParam = changeRecord.getId().toString();
qcSendEmail(changeRecord.getChangeCommander(), cancelSubjectParam,
EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_CANCEL, cancelMap);
// 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.QC.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord, EmailTemplateEnum.YX_QC_CHANGE_FINISH, cancelMap);
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), cancelSubjectParam,
EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_CANCEL, cancelMap);
}
return cancelNode;
case DELAY:
......@@ -656,11 +700,19 @@ public class ChangeFlowBiz {
changeRecord.setCancelReason(req.getCancelReason());
changeRecord.setUpdateTime(DateUtils.getCurrentTime());
todoService.progressTodoTask(changeRecord, OperateTypeEnum.FINISH.getType());
/*qcSendEmail(changeCommander, changeRecord.getId().toString(), EmailTemplateEnum.YX_QC_CHANGE_RELEASE_FLOW, param);
Map<String, Object> cancelMap = new HashMap<>();
cancelMap.put("changeId", changeRecord.getId());
cancelMap.put("changeSubject", changeRecord.getChangeSubject());
cancelMap.put("changeContent", changeRecord.getChangeContent());
cancelMap.put("changeCommander", changeRecord.getChangeCommander());
cancelMap.put("cancelReason", changeRecord.getCancelReason());
String cancelSubjectParam = changeRecord.getId().toString();
qcSendEmail(changeCommander, cancelSubjectParam, EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_CANCEL, cancelMap);
// 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.QC.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord, EmailTemplateEnum.YX_QC_CHANGE_RELEASE_FLOW, param);
}*/
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), cancelSubjectParam,
EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_CANCEL, cancelMap);
}
return changeFlowService.updateRecord(changeRecord);
}
......@@ -958,6 +1010,24 @@ public class ChangeFlowBiz {
changeRecord.setChangeCommander(deliverUser);
changeRecord.setRemark(remark);
changeRecord.setUpdateTime(DateUtils.getCurrentTime());
Map<String, Object> cancelMap = new HashMap<>();
cancelMap.put("changeId", changeRecord.getId());
cancelMap.put("changeSubject", changeRecord.getChangeSubject());
cancelMap.put("changeContent", changeRecord.getChangeContent());
// todo:负责人名称
cancelMap.put("changeCommander", null);
cancelMap.put("changeCommanderEmail", changeRecord.getChangeCommander());
// todo:负责人名称
cancelMap.put("restsChangeCommander", null);
cancelMap.put("restsChangeCommanderEmail", changeRecord.getChangeCommander());
String cancelSubjectParam = changeRecord.getId().toString();
qcSendEmail(changeCommander, cancelSubjectParam, EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_FORWARD, cancelMap);
// 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.QC.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), cancelSubjectParam,
EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_FORWARD, cancelMap);
}
changeFlowService.updateRecord(changeRecord);
}
}
......@@ -33,6 +33,9 @@ public class AppConfig {
@Value("${testEmail:A@163.com}")
private String testEmail;
@Value("${sendEmail:wb.wangzhichao01@mesg.corp.netease.com}")
private String sendEmail;
@Value("${change.goods.principal.name:aaa}")
private String defaultName;
......
......@@ -36,21 +36,16 @@ public class SupplierSendService {
@Autowired
private EmailTemplateServiceImpl emailTemplateService;
/**
* 发送供应商邮件
* @param changeRecord
* @param emailTemplateEnum
* @param param
*/
public void sendSupplierEmail(ChangeRecord changeRecord, EmailTemplateEnum emailTemplateEnum,
public void sendSupplierEmail(String supplier, String subjectParam, EmailTemplateEnum emailTemplateEnum,
Map<String, Object> param) {
SupplierSendEmailReq req = new SupplierSendEmailReq();
req.setSupplierId(changeRecord.getChangeSupplier());
req.setMailSubject(String.format(emailTemplateEnum.getSubject(), changeRecord.getId()));
req.setSupplierId(supplier);
req.setMailSubject(subjectParam);
EmailFactor factor = EmailFactor.builder().data(param).emailTemplateEnum(emailTemplateEnum)
.subject(req.getMailSubject()).type(EmailTypeEnum.HTML.getType()).build();
req.setMailContent(this.content(factor));
log.debug("[sendSupplierEmail] 发送供应商邮件内容 flowId:{}, req:{}", changeRecord.getFlowId(), JSON.toJSONString(req));
log.debug("[sendSupplierEmail] 发送供应商邮件内容 subjectParam:{}, req:{}", subjectParam, JSON.toJSONString(req));
flowRpcSupplierSendService.sendEmail(req);
}
......
......@@ -19,6 +19,7 @@ import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON;
import com.netease.mail.yanxuan.change.biz.biz.ChangeFlowBiz;
import com.netease.mail.yanxuan.change.biz.service.ChangeFlowService;
import com.netease.mail.yanxuan.change.biz.service.change.ChangeConfigService;
import com.netease.mail.yanxuan.change.biz.service.rpc.FlowService;
import com.netease.mail.yanxuan.change.biz.service.rpc.SupplierSendService;
import com.netease.mail.yanxuan.change.common.bean.CommonConstants;
......@@ -27,6 +28,7 @@ import com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum;
import com.netease.mail.yanxuan.change.common.enums.FlowOperationTypeEnum;
import com.netease.mail.yanxuan.change.common.util.DateUtils;
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.integration.email.enums.EmailTemplateEnum;
import com.netease.mail.yanxuan.dschedule.core.biz.model.ReturnT;
import com.netease.mail.yanxuan.dschedule.core.handler.IJobHandler;
......@@ -56,6 +58,9 @@ public class AutoSubmit extends IJobHandler {
@Autowired
private SupplierSendService sendSupplierEmail;
@Autowired
private ChangeConfigService changeConfigService;
@Override
public ReturnT<String> execute(String... strings) throws Exception {
log.info("AutoSubmit start");
......@@ -114,11 +119,27 @@ public class AutoSubmit extends IJobHandler {
map.put("changeId", changeRecord.getId());
map.put("changeSubject", changeRecord.getChangeSubject());
map.put("flowUrl", changeRecord.getFlowId());
changeFlowBiz.qcSendEmail(changeRecord.getChangeCommander(), changeRecord.getId().toString(),
ChangeConfigPo changeConfigPo = changeConfigService.queryInfoPo(changeRecord.getParentChangeClassId(),
changeRecord.getSonChangeClassId());
StringBuilder changeType = new StringBuilder("");
try {
changeType.append(changeConfigPo.getChangeTypes().get(0).getTypeName());
} catch (Exception e) {
log.error("queryInfoPo error:{}", JSON.toJSONString(changeConfigPo));
}
try {
changeType.append(changeConfigPo.getChangeTypes().get(1).getTypeName());
} catch (Exception e) {
log.error("queryInfoPo error:{}", JSON.toJSONString(changeConfigPo));
}
String subjectParam = changeRecord.getChangeSubject() + changeType.toString()
+ changeRecord.getId().toString();
changeFlowBiz.qcSendEmail(changeRecord.getChangeCommander(), subjectParam,
EmailTemplateEnum.YX_QC_CHANGE_AFFIRM, map);
// 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.QC.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord, EmailTemplateEnum.YX_QC_CHANGE_AFFIRM, map);
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), subjectParam,
EmailTemplateEnum.YX_QC_CHANGE_AFFIRM, map);
}
}
}
\ No newline at end of file
......@@ -11,11 +11,11 @@ package com.netease.mail.yanxuan.change.common.enums;
* @Date 2022/11/14
*/
public enum ChangeStatusEnum {
IN(1, "进行中"),
CANCEL(2, "取消完结"),
DELAY(3, "延期"),
END(4, "完结");
END(4, "完结"),
WAIT(5, "待发起"),;
private Integer status;
......
/**
* @(#)SendMailReq.java, 2022/12/9.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.netease.mail.yanxuan.change.dal.meta.model.req;
import lombok.Data;
/**
* @Author zcwang
* @Date 2022/12/9
*/
@Data
public class SendMailReq {
private Long id;
private String code;
private String mapToJson;
private Integer createSource;
private String changeSupplier;
}
\ No newline at end of file
......@@ -78,7 +78,7 @@
<if test="endTime != null">
and create_time <![CDATA[ < ]]> #{endTime}
</if>
order by create_time desc
</where>
order by create_time desc
</select>
</mapper>
\ No newline at end of file
......@@ -11,7 +11,7 @@ public enum EmailTemplateEnum {
YX_QC_CHANGE_RELEASE_FLOW("yxqc_change_release_flow","发起变更","【待处理】%s 变更申请提交 "),
YX_QC_CHANGE_SUBMIT_CANCEL("yx_qc_change_submit_cancel","变更取消","【待处理】%s 变更取消通知"),
YX_QC_CHANGE_SUBMIT_CANCEL("yx_qc_change_submit_cancel","变更取消","%s 变更取消通知"),
YX_QC_CHANGE_SUBMIT_FORWARD("yx_qc_change_submit_forward","变更转交","%s 变更工单转交通知"),
......@@ -51,4 +51,13 @@ public enum EmailTemplateEnum {
return subject;
}
public static EmailTemplateEnum getEmailTemplateEnum(String code){
for (EmailTemplateEnum template : EmailTemplateEnum.values()) {
if (template.getCode().equals(code)) {
return template;
}
}
return null;
}
}
......@@ -6,30 +6,39 @@
*/
package com.netease.mail.yanxuan.change.web.controller;
import com.netease.mail.yanxuan.change.biz.service.change.ChangeConfigService;
import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeConfigPo;
import com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierInfoService;
import com.netease.mail.yanxuan.change.integration.flow.supplier.req.SupplierRelatedUserReq;
import com.netease.mail.yanxuan.change.integration.flow.supplier.rsp.SupplierUserRsp;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON;
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.meta.exception.ExceptionFactory;
import com.netease.mail.yanxuan.change.biz.service.ChangeFlowService;
import com.netease.mail.yanxuan.change.biz.service.rpc.SupplierSendService;
import com.netease.mail.yanxuan.change.biz.service.rpc.TodoService;
import com.netease.mail.yanxuan.change.biz.task.AutoSubmit;
import com.netease.mail.yanxuan.change.common.bean.AjaxResult;
import com.netease.mail.yanxuan.change.common.bean.RequestLocalBean;
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.CreateSourceEnum;
import com.netease.mail.yanxuan.change.dal.entity.ChangeRecord;
import com.netease.mail.yanxuan.change.dal.meta.model.req.SendMailReq;
import com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum;
import com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierInfoService;
import com.netease.mail.yanxuan.change.integration.flow.supplier.req.SupplierRelatedUserReq;
import com.netease.mail.yanxuan.change.integration.flow.supplier.rsp.SupplierUserRsp;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
/**
* @Author zcwang
* @Date 2022/11/28
......@@ -48,7 +57,17 @@ public class TestController {
@Autowired
private AutoSubmit autoSubmit;
@Autowired
private ChangeFlowBiz changeFlowBiz;
@Autowired
private AppConfig appConfig;
@Autowired
private SupplierSendService sendSupplierEmail;
@PostMapping("/createToDo")
public AjaxResult<Void> createTodoTask(ChangeRecord entity) {
log.info("[createToDoTask] entity:{}", JSON.toJSONString(entity));
todoService.createTodoTask(entity);
......@@ -86,4 +105,21 @@ public class TestController {
public List<SupplierUserRsp> test(@RequestBody SupplierRelatedUserReq req) {
return supplierInfoService.querySupplierRelatedUser(req);
}
@PostMapping("/send")
public void sendEmail(@RequestBody SendMailReq req) {
String subjectParam = req.getId().toString();
EmailTemplateEnum emailTemplateEnum = EmailTemplateEnum.getEmailTemplateEnum(req.getCode());
String mapToJson = req.getMapToJson();
log.debug("[testSendEmail] subjectParam:{}, emailTemplateEnum:{}, mapToJson:{}", subjectParam,
emailTemplateEnum, mapToJson);
changeFlowBiz.qcSendEmail(appConfig.getSendEmail(), subjectParam,
emailTemplateEnum, JSON.parseObject(mapToJson, Map.class));
// 如果是供应商,再次发送供应商邮件
if (req.getCreateSource().equals(CreateSourceEnum.QC.getType())) {
Assert.notNull(req.getChangeSupplier(), "同舟端负责人不可为空");
sendSupplierEmail.sendSupplierEmail(req.getChangeSupplier(), subjectParam,
emailTemplateEnum, JSON.parseObject(mapToJson, Map.class));
}
}
}
\ 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