Commit 81f64f17 by “zcwang”

modify:邮件发送完善

parent 468f2772
...@@ -6,8 +6,32 @@ ...@@ -6,8 +6,32 @@
*/ */
package com.netease.mail.yanxuan.change.biz.biz; package com.netease.mail.yanxuan.change.biz.biz;
import cn.afterturn.easypoi.excel.ExcelExportUtil; import java.io.ByteArrayOutputStream;
import cn.afterturn.easypoi.excel.entity.ExportParams; import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
...@@ -19,20 +43,50 @@ import com.netease.mail.yanxuan.change.biz.service.ChangeFlowService; ...@@ -19,20 +43,50 @@ import com.netease.mail.yanxuan.change.biz.service.ChangeFlowService;
import com.netease.mail.yanxuan.change.biz.service.InteriorChangeConfigService; import com.netease.mail.yanxuan.change.biz.service.InteriorChangeConfigService;
import com.netease.mail.yanxuan.change.biz.service.change.ChangeConfigService; import com.netease.mail.yanxuan.change.biz.service.change.ChangeConfigService;
import com.netease.mail.yanxuan.change.biz.service.change.ChangeTypeService; import com.netease.mail.yanxuan.change.biz.service.change.ChangeTypeService;
import com.netease.mail.yanxuan.change.biz.service.rpc.*; import com.netease.mail.yanxuan.change.biz.service.rpc.FlowService;
import com.netease.mail.yanxuan.change.biz.service.rpc.ItemService;
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.TodoService;
import com.netease.mail.yanxuan.change.common.bean.CommonConstants; import com.netease.mail.yanxuan.change.common.bean.CommonConstants;
import com.netease.mail.yanxuan.change.common.bean.RequestLocalBean; 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.bean.ResponseCode;
import com.netease.mail.yanxuan.change.common.enums.*; 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.ChangeStatusEnum;
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.common.enums.NeedFileEnum;
import com.netease.mail.yanxuan.change.common.enums.OperateTypeEnum;
import com.netease.mail.yanxuan.change.common.util.DateUtils; import com.netease.mail.yanxuan.change.common.util.DateUtils;
import com.netease.mail.yanxuan.change.dal.entity.*; import com.netease.mail.yanxuan.change.dal.entity.ChangeConfig;
import com.netease.mail.yanxuan.change.dal.entity.ChangeExecRecord;
import com.netease.mail.yanxuan.change.dal.entity.ChangeFile;
import com.netease.mail.yanxuan.change.dal.entity.ChangeRecord;
import com.netease.mail.yanxuan.change.dal.entity.ChangeType;
import com.netease.mail.yanxuan.change.dal.mapper.ChangeRecordMapper; import com.netease.mail.yanxuan.change.dal.mapper.ChangeRecordMapper;
import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeCommanderPO; import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeCommanderPO;
import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeConfigPo; import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeConfigPo;
import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeGoodsPrincipalPO; import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeGoodsPrincipalPO;
import com.netease.mail.yanxuan.change.dal.meta.model.req.*; import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeExecConfigReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCancelReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCreateReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowDeliverReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowFile;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowListQueryReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowSubmitReq;
import com.netease.mail.yanxuan.change.dal.meta.model.rpc.GoodsResponseRpc; import com.netease.mail.yanxuan.change.dal.meta.model.rpc.GoodsResponseRpc;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.*; import com.netease.mail.yanxuan.change.dal.meta.model.vo.BasicChangeFlowVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.CategoryInfoVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeFlowExecVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeFlowListVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeFlowVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ItemBasicInfoVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ItemVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.PageVO;
import com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum; import com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum;
import com.netease.mail.yanxuan.change.integration.email.service.IEmailService; import com.netease.mail.yanxuan.change.integration.email.service.IEmailService;
import com.netease.mail.yanxuan.change.integration.excel.ChangeFlowExcelDTO; import com.netease.mail.yanxuan.change.integration.excel.ChangeFlowExcelDTO;
...@@ -40,7 +94,6 @@ import com.netease.mail.yanxuan.change.integration.flow.UserQueryDTO; ...@@ -40,7 +94,6 @@ import com.netease.mail.yanxuan.change.integration.flow.UserQueryDTO;
import com.netease.mail.yanxuan.change.integration.flow.ius.IusRpcService; import com.netease.mail.yanxuan.change.integration.flow.ius.IusRpcService;
import com.netease.mail.yanxuan.change.integration.flow.ius.req.IusDepartmentReq; import com.netease.mail.yanxuan.change.integration.flow.ius.req.IusDepartmentReq;
import com.netease.mail.yanxuan.change.integration.flow.ius.rsp.IusUserInfoRsp; import com.netease.mail.yanxuan.change.integration.flow.ius.rsp.IusUserInfoRsp;
import com.netease.mail.yanxuan.change.integration.flow.ius.rsp.OrgPosLeaderChainRsp;
import com.netease.mail.yanxuan.change.integration.flow.ius.rsp.SecondaryDepartments; import com.netease.mail.yanxuan.change.integration.flow.ius.rsp.SecondaryDepartments;
import com.netease.mail.yanxuan.change.integration.item.SimplePhyCateGoryResultCo; import com.netease.mail.yanxuan.change.integration.item.SimplePhyCateGoryResultCo;
import com.netease.mail.yanxuan.change.integration.item.meta.SpuTO; import com.netease.mail.yanxuan.change.integration.item.meta.SpuTO;
...@@ -55,22 +108,10 @@ import com.netease.yanxuan.flowx.sdk.meta.dto.base.UserReachDTO; ...@@ -55,22 +108,10 @@ import com.netease.yanxuan.flowx.sdk.meta.dto.base.UserReachDTO;
import com.netease.yanxuan.flowx.sdk.meta.dto.exec.InterfaceInputDTO; import com.netease.yanxuan.flowx.sdk.meta.dto.exec.InterfaceInputDTO;
import com.netease.yanxuan.flowx.sdk.meta.dto.exec.UserBaseContainerDTO; import com.netease.yanxuan.flowx.sdk.meta.dto.exec.UserBaseContainerDTO;
import com.netease.yanxuan.flowx.sdk.meta.dto.flow.FlowCreateReqDTO; import com.netease.yanxuan.flowx.sdk.meta.dto.flow.FlowCreateReqDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import javax.servlet.http.HttpServletResponse; import cn.afterturn.easypoi.excel.ExcelExportUtil;
import javax.validation.Valid; import cn.afterturn.easypoi.excel.entity.ExportParams;
import java.io.ByteArrayOutputStream; import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* @Author zcwang * @Author zcwang
...@@ -261,7 +302,18 @@ public class ChangeFlowBiz { ...@@ -261,7 +302,18 @@ public class ChangeFlowBiz {
} }
String subjectParam = ChangeSubjectEnum.getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc() + changeType String subjectParam = ChangeSubjectEnum.getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc() + changeType
+ changeRecord.getFlowId().toString(); + changeRecord.getFlowId().toString();
qcSendEmail(changeCommander, subjectParam, EmailTemplateEnum.YX_QC_CHANGE_EXECUTE, param);
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())) { if (changeFlowCreateReq.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), subjectParam, sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), subjectParam,
...@@ -288,7 +340,12 @@ public class ChangeFlowBiz { ...@@ -288,7 +340,12 @@ public class ChangeFlowBiz {
param.put("changeType", changeType.toString()); param.put("changeType", changeType.toString());
param.put("flowUrl", changeRecord.getFlowId()); param.put("flowUrl", changeRecord.getFlowId());
String subjectParam = changeRecord.getFlowId().toString(); String subjectParam = changeRecord.getFlowId().toString();
qcSendEmail(changeCommander, subjectParam, EmailTemplateEnum.YX_QC_CHANGE_RELEASE_FLOW, param); // 发起变更,收件人:变更负责人
List<String> receiver = Collections.singletonList(changeCommander);
List<String> ccList = getDepartmentInfo(receiver);
// 发起变更,抄送:变更负责人上一级主管、变更管理QM(cuiyixian@corp.netease.com)
ccList.add(appConfig.getChangeManageQM());
qcSendEmail(receiver, ccList, subjectParam, EmailTemplateEnum.YX_QC_CHANGE_RELEASE_FLOW, param);
// 如果是供应商,再次发送供应商邮件 // 如果是供应商,再次发送供应商邮件
if (changeFlowCreateReq.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) { if (changeFlowCreateReq.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), subjectParam, sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), subjectParam,
...@@ -297,34 +354,38 @@ public class ChangeFlowBiz { ...@@ -297,34 +354,38 @@ public class ChangeFlowBiz {
return flowId; return flowId;
} }
private List<String> getDepartmentInfo(List<String> receiver) {
IusDepartmentReq iusDepartmentReq = new IusDepartmentReq();
iusDepartmentReq.setHasOrgPos(true);
iusDepartmentReq.setIcac(true);
iusDepartmentReq.setUids(receiver);
HashMap<String, List<SecondaryDepartments>> map = iusService.queryDepartment(iusDepartmentReq);
ArrayList<List<SecondaryDepartments>> secondaryDepartments = new ArrayList<>(map.values());
List<String> ccList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(secondaryDepartments)) {
for (List<SecondaryDepartments> secondaryDepartment : secondaryDepartments) {
ccList.addAll(secondaryDepartment.stream().map(SecondaryDepartments::getUid).collect(Collectors.toList()));
}
}
return ccList;
}
/** /**
* 严选QC端发送邮件 * 严选QC端发送邮件
* *
* @param changeCommander 负责人
* @param subjectParam 主体参数 * @param subjectParam 主体参数
* @param receiver 收件人
* @param emailTemplateEnum 邮件模板 * @param emailTemplateEnum 邮件模板
* @param param 正文参数 * @param param 正文参数
*/ */
public void qcSendEmail(String changeCommander, String subjectParam, EmailTemplateEnum emailTemplateEnum, public void qcSendEmail(List<String> receiver, List<String> ccList, String subjectParam, EmailTemplateEnum emailTemplateEnum,
Map<String, Object> param) { Map<String, Object> param) {
try { try {
IusDepartmentReq iusDepartmentReq = new IusDepartmentReq(); iEmailService.sendEmail(receiver, ccList, param, emailTemplateEnum,
iusDepartmentReq.setHasOrgPos(true);
iusDepartmentReq.setIcac(true);
iusDepartmentReq.setUids(Collections.singletonList(changeCommander));
HashMap<String, List<SecondaryDepartments>> map = iusService.queryDepartment(iusDepartmentReq);
log.info("[qcSendEmail] subjectParam:{}, map:{}", subjectParam, map);
List<SecondaryDepartments> secondaryDepartments = map.get(changeCommander);
List<String> ccList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(secondaryDepartments)) {
ccList = secondaryDepartments.stream().map(SecondaryDepartments::getUid).collect(Collectors.toList());
}
// 变更管理QM,所有邮件都要发
ccList.add(appConfig.getChangeManageQM());
iEmailService.sendEmail(Collections.singletonList(changeCommander), ccList, param, emailTemplateEnum,
subjectParam); subjectParam);
} catch (Exception e) { } catch (Exception e) {
log.error("[op:qcSendEmail] error,changeCommander:{}, subjectParam:{}, e:{}", changeCommander, subjectParam, log.error("[op:qcSendEmail] error,receiver:{}, subjectParam:{}, e:{}", receiver, subjectParam,
e); e);
} }
} }
...@@ -532,7 +593,19 @@ public class ChangeFlowBiz { ...@@ -532,7 +593,19 @@ public class ChangeFlowBiz {
param.put("flowUrl", changeRecord.getFlowId()); param.put("flowUrl", changeRecord.getFlowId());
param.put("dataList", changeExecRecords); param.put("dataList", changeExecRecords);
String subjectParam = changeRecord.getFlowId().toString(); String subjectParam = changeRecord.getFlowId().toString();
qcSendEmail(changeRecord.getChangeCommander(), subjectParam, // 负责人
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); EmailTemplateEnum.YX_QC_CHANGE_EXECUTE, param);
// 如果是供应商,再次发送供应商邮件 // 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) { if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) {
...@@ -598,9 +671,23 @@ public class ChangeFlowBiz { ...@@ -598,9 +671,23 @@ public class ChangeFlowBiz {
log.error("queryInfoPo error:{}", JSON.toJSONString(changeConfigPo)); log.error("queryInfoPo error:{}", JSON.toJSONString(changeConfigPo));
} }
//【已完结】变更主体+变更内容+工单ID 变更风险行动项已完结,请开始执行变更。 //【已完结】变更主体+变更内容+工单ID 变更风险行动项已完结,请开始执行变更。
String finishSubjectParam = ChangeSubjectEnum.getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc() + changeRecord.getChangeContent() String finishSubjectParam = ChangeSubjectEnum
+ changeRecord.getFlowId(); .getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc()
qcSendEmail(changeRecord.getChangeCommander(), finishSubjectParam, + changeRecord.getChangeContent() + changeRecord.getFlowId();
// 变更确认,收件人:变更负责人+变更供应商+所有变更行动人+变更管理QM(cuiyixian@corp.netease.com)
List<ChangeFlowExecVO> execRecord = changeFlowExecService
.getChangeFlowExecRecord(changeRecord.getId());
List<String> userEmailList = execRecord.stream().map(ChangeFlowExecVO::getChangeExecUserEmail)
.collect(Collectors.toList());
// 变更确认,抄送人:所有变更行动人上一级LEADER+变更管理委员会(yx_change_SC@qun.mail.163.com)
List<String> list = this.getDepartmentInfo(userEmailList);
list.add(appConfig.getChangeCommittee());
userEmailList.add(changeRecord.getChangeCommander());
userEmailList.add(appConfig.getChangeManageQM());
if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) {
userEmailList.add(changeRecord.getChangeSupplier());
}
qcSendEmail(userEmailList, list, finishSubjectParam,
EmailTemplateEnum.YX_QC_CHANGE_FINISH, finishPartMap); EmailTemplateEnum.YX_QC_CHANGE_FINISH, finishPartMap);
// 如果是供应商,再次发送供应商邮件 // 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) { if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) {
...@@ -622,20 +709,46 @@ public class ChangeFlowBiz { ...@@ -622,20 +709,46 @@ public class ChangeFlowBiz {
changeFlowService.updateRecord(changeRecord); changeFlowService.updateRecord(changeRecord);
todoService.progressTodoTask(changeRecord, OperateTypeEnum.FINISH.getType()); todoService.progressTodoTask(changeRecord, OperateTypeEnum.FINISH.getType());
// 发送邮件 // 发送邮件
Map<String, Object> cancelMap = new HashMap<>(); HashMap<String, Object> cancelMap = new HashMap<>();
cancelMap.put("changeId", changeRecord.getFlowId()); cancelMap.put("changeId", changeRecord.getFlowId());
cancelMap.put("changeSubject", ChangeSubjectEnum.getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc()); cancelMap.put("changeSubject", ChangeSubjectEnum.getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc());
cancelMap.put("changeContent", changeRecord.getChangeContent()); cancelMap.put("flowUrl", changeRecord.getFlowId());
AjaxResponse<IusUserInfoRsp> userInfo = iusRpcService.queryUserInfo(changeRecord.getChangeCommander()); ChangeConfigPo changeConfigPo1 = changeConfigService
cancelMap.put("changeCommander", userInfo.getData().getName()); .queryInfoPo(changeRecord.getParentChangeClassId(), changeRecord.getSonChangeClassId());
cancelMap.put("cancelReason", changeRecord.getCancelReason()); StringBuilder changeType1 = new StringBuilder();
String cancelSubjectParam = changeRecord.getFlowId().toString(); try {
qcSendEmail(changeRecord.getChangeCommander(), cancelSubjectParam, changeType1.append(changeConfigPo1.getChangeTypes().get(0).getTypeName());
EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_CANCEL, cancelMap); } catch (Exception e) {
log.error("queryInfoPo error:{}", JSON.toJSONString(changeConfigPo1));
}
try {
changeType1.append(changeConfigPo1.getChangeTypes().get(1).getTypeName());
} catch (Exception e) {
log.error("queryInfoPo error:{}", JSON.toJSONString(changeConfigPo1));
}
//【已完结】变更主体+变更内容+工单ID 变更风险行动项已完结,请开始执行变更。
String cancelFinishSubjectParam = ChangeSubjectEnum
.getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc()
+ changeRecord.getChangeContent() + changeRecord.getFlowId();
// 变更确认,收件人:变更负责人+变更供应商+所有变更行动人+变更管理QM(cuiyixian@corp.netease.com)
List<ChangeFlowExecVO> execRecordList = changeFlowExecService
.getChangeFlowExecRecord(changeRecord.getId());
List<String> userEmails = execRecordList.stream().map(ChangeFlowExecVO::getChangeExecUserEmail)
.collect(Collectors.toList());
// 变更确认,抄送人:所有变更行动人上一级LEADER+变更管理委员会(yx_change_SC@qun.mail.163.com)
List<String> departmentInfoList = this.getDepartmentInfo(userEmails);
departmentInfoList.add(appConfig.getChangeCommittee());
userEmails.add(changeRecord.getChangeCommander());
userEmails.add(appConfig.getChangeManageQM());
if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) {
userEmails.add(changeRecord.getChangeSupplier());
}
qcSendEmail(userEmails, departmentInfoList, cancelFinishSubjectParam,
EmailTemplateEnum.YX_QC_CHANGE_FINISH, cancelMap);
// 如果是供应商,再次发送供应商邮件 // 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) { if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), cancelSubjectParam, sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), cancelFinishSubjectParam,
EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_CANCEL, cancelMap); EmailTemplateEnum.YX_QC_CHANGE_FINISH, cancelMap);
} }
return cancelNode; return cancelNode;
case DELAY: case DELAY:
...@@ -728,7 +841,22 @@ public class ChangeFlowBiz { ...@@ -728,7 +841,22 @@ public class ChangeFlowBiz {
cancelMap.put("changeCommander", user.getData().getName()); cancelMap.put("changeCommander", user.getData().getName());
cancelMap.put("cancelReason", changeRecord.getCancelReason()); cancelMap.put("cancelReason", changeRecord.getCancelReason());
String cancelSubjectParam = changeRecord.getFlowId().toString(); String cancelSubjectParam = changeRecord.getFlowId().toString();
qcSendEmail(changeCommander, cancelSubjectParam, EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_CANCEL, cancelMap); List<String> receiver = new ArrayList<>(Collections.singletonList(changeCommander));
List<ChangeFlowExecVO> execRecord = changeFlowExecService
.getChangeFlowExecRecord(changeRecord.getId());
List<String> userEmailList = execRecord.stream().map(ChangeFlowExecVO::getChangeExecUserEmail)
.collect(Collectors.toList());
receiver.addAll(userEmailList);
// 取消变更,抄送人:变更负责人+变更行动人上一级主管、变更管理QM(cuiyixian@corp.netease.com)
userEmailList.addAll(receiver);
List<String> ccList = this.getDepartmentInfo(userEmailList);
ccList.add(appConfig.getChangeManageQM());
// 取消变更,收件人:变更发起人(供应商邮箱号或严选发起人)、变更负责人、变更行动人
String creator = changeRecord.getCreator();
if (!creator.equals(changeCommander)) {
receiver.add(creator);
}
qcSendEmail(receiver, ccList, cancelSubjectParam, EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_CANCEL, cancelMap);
// 如果是供应商,再次发送供应商邮件 // 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) { if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), cancelSubjectParam, sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), cancelSubjectParam,
...@@ -1131,7 +1259,17 @@ public class ChangeFlowBiz { ...@@ -1131,7 +1259,17 @@ public class ChangeFlowBiz {
cancelMap.put("restsChangeCommander", newUser.getData().getName()); cancelMap.put("restsChangeCommander", newUser.getData().getName());
cancelMap.put("restsChangeCommanderEmail", deliverUser); cancelMap.put("restsChangeCommanderEmail", deliverUser);
String cancelSubjectParam = changeRecord.getFlowId().toString(); String cancelSubjectParam = changeRecord.getFlowId().toString();
qcSendEmail(changeCommander, cancelSubjectParam, EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_FORWARD, cancelMap); // 转交,收件人:变更转交人(工单接收人)、变更负责人(工单转交人)
List<String> receiver = Arrays.asList(changeCommander, deliverUser);
// 转交,抄送人:变更发起人+原变更负责人上一级主管、变更转交人(工单接收人)上一级主管+变更行动项负责人
List<String> ccList = this.getDepartmentInfo(receiver);
ccList.add(changeRecord.getCreator());
List<ChangeFlowExecVO> execRecord = changeFlowExecService
.getChangeFlowExecRecord(changeRecord.getId());
List<String> userEmailList = execRecord.stream().map(ChangeFlowExecVO::getChangeExecUserEmail)
.collect(Collectors.toList());
ccList.addAll(userEmailList);
qcSendEmail(receiver, ccList, cancelSubjectParam, EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_FORWARD, cancelMap);
// 如果是供应商,再次发送供应商邮件 // 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) { if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), cancelSubjectParam, sendSupplierEmail.sendSupplierEmail(changeRecord.getChangeSupplier(), cancelSubjectParam,
......
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
*/ */
package com.netease.mail.yanxuan.change.biz.config; package com.netease.mail.yanxuan.change.biz.config;
import java.util.List;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -33,8 +35,8 @@ public class AppConfig { ...@@ -33,8 +35,8 @@ public class AppConfig {
@Value("${testEmail:A@163.com}") @Value("${testEmail:A@163.com}")
private String testEmail; private String testEmail;
@Value("${sendEmail:wb.wangzhichao01@mesg.corp.netease.com}") @Value("${sendEmail:[\"wb.wangzhichao01@mesg.corp.netease.com\"]}")
private String sendEmail; private List<String> receiver;
@Value("${change.goods.principal.name:aaa}") @Value("${change.goods.principal.name:aaa}")
private String defaultName; private String defaultName;
...@@ -54,6 +56,12 @@ public class AppConfig { ...@@ -54,6 +56,12 @@ public class AppConfig {
@Value("${changeManageQM:cuiyixian@corp.netease.com}") @Value("${changeManageQM:cuiyixian@corp.netease.com}")
private String changeManageQM; private String changeManageQM;
/**
* 变更管理委员会
*/
@Value("${changeCommittee:yx_change_SC@qun.mail.163.com}")
private String changeCommittee;
@Value("${exportLimit:20}") @Value("${exportLimit:20}")
private Long exportLimit; private Long exportLimit;
} }
\ No newline at end of file
...@@ -37,14 +37,14 @@ public class IusService { ...@@ -37,14 +37,14 @@ public class IusService {
public HashMap<String, List<SecondaryDepartments>> queryDepartment(IusDepartmentReq iusDepartmentReq) { public HashMap<String, List<SecondaryDepartments>> queryDepartment(IusDepartmentReq iusDepartmentReq) {
log.info("[queryDepartment] queryDepartment req:{}", JSON.toJSONString(iusDepartmentReq)); log.info("[queryDepartment] queryDepartment req:{}", JSON.toJSONString(iusDepartmentReq));
AjaxResponse<HashMap<String, List<SecondaryDepartments>>> response = iusRpcService.queryDepartment(iusDepartmentReq); AjaxResponse<HashMap<String, List<SecondaryDepartments>>> response = iusRpcService.queryDepartment(iusDepartmentReq);
HashMap<String, List<SecondaryDepartments>> map; log.info("[queryDepartment] response of queryDepartment ={}",
JSON.toJSONString(response));
if (ResponseCodeEnum.SUCCESS.getCode() == response.getCode()) { if (ResponseCodeEnum.SUCCESS.getCode() == response.getCode()) {
map = response.getData(); return response.getData();
} else { } else {
log.error("[queryDepartment] queryDepartment failed, query={}, errMsg={}", JSON.toJSONString(iusDepartmentReq), log.error("[queryDepartment] queryDepartment failed, query={}, errMsg={}", JSON.toJSONString(iusDepartmentReq),
JSON.toJSONString(response)); JSON.toJSONString(response));
throw ExceptionFactory.createBiz(ResponseCode.CREATE_FLOW_ERROR, "查询部门错误"); throw ExceptionFactory.createBiz(ResponseCode.CREATE_FLOW_ERROR, "查询部门错误");
} }
return map;
} }
} }
\ No newline at end of file
...@@ -7,11 +7,14 @@ ...@@ -7,11 +7,14 @@
package com.netease.mail.yanxuan.change.biz.task; package com.netease.mail.yanxuan.change.biz.task;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.netease.mail.yanxuan.change.biz.config.AppConfig;
import com.netease.mail.yanxuan.change.biz.service.ChangeFlowExecService;
import com.netease.mail.yanxuan.change.common.enums.*; import com.netease.mail.yanxuan.change.common.enums.*;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -27,6 +30,7 @@ import com.netease.mail.yanxuan.change.common.bean.CommonConstants; ...@@ -27,6 +30,7 @@ import com.netease.mail.yanxuan.change.common.bean.CommonConstants;
import com.netease.mail.yanxuan.change.common.util.DateUtils; 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.entity.ChangeRecord;
import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeConfigPo; import com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeConfigPo;
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;
import com.netease.mail.yanxuan.dschedule.core.biz.model.ReturnT; import com.netease.mail.yanxuan.dschedule.core.biz.model.ReturnT;
import com.netease.mail.yanxuan.dschedule.core.handler.IJobHandler; import com.netease.mail.yanxuan.dschedule.core.handler.IJobHandler;
...@@ -59,6 +63,12 @@ public class AutoSubmit extends IJobHandler { ...@@ -59,6 +63,12 @@ public class AutoSubmit extends IJobHandler {
@Autowired @Autowired
private ChangeConfigService changeConfigService; private ChangeConfigService changeConfigService;
@Autowired
private ChangeFlowExecService changeFlowExecService;
@Autowired
private AppConfig appConfig;
@Override @Override
public ReturnT<String> execute(String... strings) throws Exception { public ReturnT<String> execute(String... strings) throws Exception {
log.info("AutoSubmit start"); log.info("AutoSubmit start");
...@@ -135,7 +145,15 @@ public class AutoSubmit extends IJobHandler { ...@@ -135,7 +145,15 @@ public class AutoSubmit extends IJobHandler {
} }
String subjectParam = ChangeSubjectEnum.getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc() + changeType String subjectParam = ChangeSubjectEnum.getChangeSubjectEnum(changeRecord.getChangeSubject()).getDesc() + changeType
+ changeRecord.getFlowId().toString(); + changeRecord.getFlowId().toString();
changeFlowBiz.qcSendEmail(changeRecord.getChangeCommander(), subjectParam, // 变更结果确认,收件人:变更负责人
List<String> receiver = Collections.singletonList(changeRecord.getChangeCommander());
// 变更结果确认,抄送:所有行动项负责人+变更管理QM
List<ChangeFlowExecVO> execRecord = changeFlowExecService
.getChangeFlowExecRecord(changeRecord.getId());
List<String> userEmailList = execRecord.stream().map(ChangeFlowExecVO::getChangeExecUserEmail)
.collect(Collectors.toList());
userEmailList.add(appConfig.getChangeManageQM());
changeFlowBiz.qcSendEmail(receiver, userEmailList, subjectParam,
EmailTemplateEnum.YX_QC_CHANGE_AFFIRM, map); EmailTemplateEnum.YX_QC_CHANGE_AFFIRM, map);
// 如果是供应商,再次发送供应商邮件 // 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) { if (changeRecord.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) {
......
...@@ -113,7 +113,7 @@ public class TestController { ...@@ -113,7 +113,7 @@ public class TestController {
String mapToJson = req.getMapToJson(); String mapToJson = req.getMapToJson();
log.debug("[testSendEmail] subjectParam:{}, emailTemplateEnum:{}, mapToJson:{}", subjectParam, log.debug("[testSendEmail] subjectParam:{}, emailTemplateEnum:{}, mapToJson:{}", subjectParam,
emailTemplateEnum, mapToJson); emailTemplateEnum, mapToJson);
changeFlowBiz.qcSendEmail(appConfig.getSendEmail(), subjectParam, changeFlowBiz.qcSendEmail(appConfig.getReceiver(), appConfig.getReceiver(), subjectParam,
emailTemplateEnum, JSON.parseObject(mapToJson, Map.class)); emailTemplateEnum, JSON.parseObject(mapToJson, Map.class));
// 如果是供应商,再次发送供应商邮件 // 如果是供应商,再次发送供应商邮件
if (req.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) { if (req.getCreateSource().equals(CreateSourceEnum.TONG_ZHOU.getType())) {
......
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