package com.yonyou.ucf.mdf.app.service.servicePurchaser.impl;
import com.yonyou.cloud.apm.internal.com.alibaba.fastjson.JSONObject;
import com.yonyou.cloud.utils.CollectionUtils;
import com.yonyou.diwork.exception.BusinessException;
import com.yonyou.iuap.context.InvocationInfoProxy;
import com.yonyou.iuap.message.platform.entity.MsgTemplateEntity;
import com.yonyou.iuap.message.platform.entity.consts.ChannelTypeEnum;
import com.yonyou.iuap.message.platform.rpc.ISimpleMessageService;
import com.yonyou.ucf.mdf.app.common.EmailHelper;
import com.yonyou.ucf.mdf.app.mapper.SupCertReportMapper;
import com.yonyou.ucf.mdf.app.mapper.mapperPurchaser.SendEmailMapper;
import com.yonyou.ucf.mdf.app.service.servicePurchaser.SendEmailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import com.yonyou.ucf.mdd.ext.core.AppContext;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.*;
@Slf4j
@Service
public class SendEmailServiceImpl implements SendEmailService {
@Autowired
SendEmailMapper sendEmailMapper;
@Autowired
private ISimpleMessageService simpleMessageService;
@Autowired
SupCertReportMapper supCertReportMapper;
@Value("${mls.buyer_tenant_id:}")
private String ytenantId;
/**
* 交期计划发送邮件接口
*
* @param body
*/
@Override
public Map<String, String> postEmailservice(JSONObject body) throws Exception {
// 交期计划
// Date orderTime = body.getDate("orderTime"); //单据日期
// String transactionTypeName = body.getString("transactionTypeName"); //交易类型名称
// String orgName = body.getString("orgName"); //采购组织名称
// String deptName = body.getString("deptName"); //采购部门名称
// String purchase_name = body.getString("purchase_name"); //采购员名称
// Long supplierId = body.getLong("supplierId"); //供应商Id
// String supplierName = body.getString("supplierName"); //供应商名称
// String purEnterpriseName = body.getString("purEnterpriseName"); //采购商企业名称
// String supEnterpriseName = body.getString("supEnterpriseName"); //销售商企业名称
// String currencyName = body.getString("currencyName"); //币种名称
// String businessType = body.getString("businessType"); //业务类型
// String buyerTenantId = body.getString("buyerTenantId"); //采购商租户ID
// String vendorTenantId = body.getString("vendorTenantId"); //供应商租户ID
// String purOrderId = body.getString("purOrderId"); //采购订单ID
// String purOrderDetailId = body.getString("purOrderDetailId"); //采购订单明细ID
// String purOrderCode = body.getString("purOrderCode"); //采购订单号
// Map<String, Object> EmailServerObject = new HashMap<>();
// EmailServerObject.put("orderTime", body.getDate("orderTime")); //单据日期
// EmailServerObject.put("transactionTypeName", body.getString("transactionTypeName")); //交易类型名称
// EmailServerObject.put("orgName", body.getString("orgName")); //采购组织名称
// EmailServerObject.put("deptName", body.getString("deptName")); //采购部门名称
// EmailServerObject.put("purchase_name", body.getString("purchase_name")); //采购员名称
// EmailServerObject.put("supplierId", body.getString("supplierId")); //供应商Id
// EmailServerObject.put("supplierName", body.getString("supplierName")); //供应商名称
// EmailServerObject.put("purEnterpriseName", body.getString("purEnterpriseName")); // 采购商企业名称
// EmailServerObject.put("supEnterpriseName", body.getString("supEnterpriseName")); // 销售商企业名称
// EmailServerObject.put("currencyName", body.getString("currencyName")); //币种名称
// EmailServerObject.put("businessType", body.getString("businessType")); //业务类型
// EmailServerObject.put("buyerTenantId", body.getString("buyerTenantId")); //采购商租户ID
// EmailServerObject.put("vendorTenantId", body.getString("vendorTenantId")); //供应商租户ID
// EmailServerObject.put("purOrderId", body.getString("purOrderId")); //采购订单ID
// EmailServerObject.put("purOrderDetailId", body.getString("purOrderDetailId"));//采购订单明细ID
// EmailServerObject.put("purOrderCode", body.getString("purOrderCode"));//采购订单号
// EmailServerObject.put("id", body.getString("id"));//表Id 交期计划表Id
String id = body.getString("id"); //表Id 交期计划表Id
try{
Map<String, Object> PlanBuyerObject = sendEmailMapper.getPlanBuyerServerObject(id); // 根据交期计划delivery_plan_buyer主表的Id获取表行数据
// EmailServerObject.put("orderTime", PlanBuyerObject.get("orderTime")); //单据日期
// EmailServerObject.put("transactionTypeName", (String) PlanBuyerObject.get("transactionTypeName")); //交易类型名称
// EmailServerObject.put("orgName", (String) PlanBuyerObject.get("orgName")); //采购组织名称
// EmailServerObject.put("deptName", (String) PlanBuyerObject.get("deptName")); //采购部门名称
// EmailServerObject.put("purchase_name", (String) PlanBuyerObject.get("purchase_name")); //采购员名称
// EmailServerObject.put("supplierId", (Long) PlanBuyerObject.get("supplierId")); //供应商Id
// EmailServerObject.put("supplierName", (String) PlanBuyerObject.get("supplierName")); //供应商名称
// EmailServerObject.put("purEnterpriseName", (String) PlanBuyerObject.get("purEnterpriseName")); // 采购商企业名称
// EmailServerObject.put("supEnterpriseName", (String) PlanBuyerObject.get("supEnterpriseName")); // 销售商企业名称
// EmailServerObject.put("currencyName", (String) PlanBuyerObject.get("currencyName")); //币种名称
// EmailServerObject.put("businessType", (String) PlanBuyerObject.get("businessType")); //业务类型
// EmailServerObject.put("buyerTenantId", (String) PlanBuyerObject.get("buyerTenantId")); //采购商租户ID
// EmailServerObject.put("vendorTenantId", (String) PlanBuyerObject.get("vendorTenantId")); //供应商租户ID
// EmailServerObject.put("purOrderId", (String) PlanBuyerObject.get("purOrderId")); //采购订单ID
// EmailServerObject.put("purOrderDetailId", (String) PlanBuyerObject.get("purOrderDetailId"));//采购订单明细ID
// EmailServerObject.put("purOrderCode", (String) PlanBuyerObject.get("purOrderCode"));//采购订单号
// EmailServerObject.put("id", (String) PlanBuyerObject.get("id"));//表Id 交期计划表Id
Long supplierId = (Long) PlanBuyerObject.get("supplierId"); //供应商Id
// 发送邮件通知
// Long supplierlyId = 757575676575l; // 供应商ID
Map<String, String> result = new HashMap<>();
Map<String, String> sendemail = sendemail(supplierId, PlanBuyerObject);
result.put("flag", "false");
result.put("msg", sendemail.get("msg"));
return result;
// 采购商发送到供应商
}catch(Exception e){
throw new Exception(e.getMessage());
}
}
//TODO 开始发送邮件
public Map<String, String> sendemail(Long supplierId, Map<String, Object> EmailServerObject) {
Map<String, Object> idisname = new HashMap<>();
idisname.put("orderTime", EmailServerObject.get("orderTime")); //单据日期
idisname.put("transactionTypeName", EmailServerObject.get("transactionTypeName")); //交易类型名称
idisname.put("orgName", EmailServerObject.get("orgName")); //采购组织名称
idisname.put("deptName", EmailServerObject.get("deptName")); //采购部门名称
idisname.put("purchase_name", EmailServerObject.get("purchase_name")); //采购员名称
idisname.put("supplierId", EmailServerObject.get("supplierId")); //供应商Id
idisname.put("supplierName", EmailServerObject.get("supplierName")); //供应商名称
idisname.put("purEnterpriseName", EmailServerObject.get("purEnterpriseName")); // 采购商企业名称
idisname.put("supEnterpriseName", EmailServerObject.get("supEnterpriseName")); // 销售商企业名称
idisname.put("currencyName", EmailServerObject.get("currencyName")); //币种名称
// idisname.put("businessType", EmailServerObject.get("businessType")); //业务类型
String businessTypeName ="";
switch ((String) EmailServerObject.get("businessType")){
case "1": businessTypeName = "普通"; break;
case "2":businessTypeName = "VMI"; break;
case "4":businessTypeName = "委外"; break;
}
idisname.put("businessType", businessTypeName); //业务类型
// idisname.put("businessType", sendEmailMapper.queryBusinessType((String) EmailServerObject.get("businessType"))); //业务类型
// idisname.put("buyerTenantId", EmailServerObject.get("buyerTenantId")); //采购商租户ID
idisname.put("buyerTenantId", sendEmailMapper.querybuyerTenantId((String) EmailServerObject.get("buyerTenantId"))); //采购商租户ID
// idisname.put("vendorTenantId", EmailServerObject.get("vendorTenantId")); //供应商租户ID
idisname.put("vendorTenantId",sendEmailMapper.queryvendorTenantId((String) EmailServerObject.get("vendorTenantId"))); //供应商租户ID
idisname.put("purOrderId", EmailServerObject.get("purOrderId")); //采购订单ID
idisname.put("purOrderDetailId", EmailServerObject.get("purOrderDetailId"));//采购订单明细ID
idisname.put("purOrderCode", EmailServerObject.get("purOrderCode"));//采购订单号
idisname.put("materialCode", sendEmailMapper.querydeliveryPlanBuyerId((String) EmailServerObject.get("id")));//物料名称 通过主表Id获取物料名称
// idisname.put("msg",msg);
return invarrsendEamil(idisname, supplierId);
}
public Map<String, String> invarrsendEamil(Map<String, Object> invrow, Long supplierId) {
// 获取默认模板
MsgTemplateEntity tempalte = simpleMessageService.queryDefaultTemplate("diwork", null, ytenantId, null, "deliveryPlanChanSendEmail");
if (null == tempalte || org.apache.commons.lang3.StringUtils.isEmpty(tempalte.getTemplateCode())) {
throw new BusinessException("没有可以使用的邮件模板,请前往【消息模板】设置默认模板!");
}
StringBuilder sbLinkman = new StringBuilder();
StringBuilder sbContactemail = new StringBuilder();
Map<String, String> sendEmailResult = null;
sendEmailResult = this.sendEmail(invrow, sbLinkman, sbContactemail, tempalte, 0);
return this.getMessage(sendEmailResult);
}
/**
* 邮件参数和接收人的设置
*
* @param details
* @param sbLinkman
* @param sbContactemail
* @param tempalte
* @return
*/
private Map<String, String> sendEmail(Map<String, Object> details, StringBuilder sbLinkman, StringBuilder sbContactemail, MsgTemplateEntity tempalte, int... number) {
// 获取默认联系人信息
List<Map<String, Object>> vendorContactsList = new ArrayList<>();
vendorContactsList = supCertReportMapper.selvendorContacts((Long) details.get("supplierId"));
if (CollectionUtils.isEmpty(vendorContactsList)) {
sbLinkman.append("【");
sbLinkman.append((String) details.get("cvendor"));
sbLinkman.append("】");
} else {
// 获取默认联系人邮箱地址
String contactemail = (String) vendorContactsList.get(0).get("cContactEmail");
if (org.apache.commons.lang3.StringUtils.isEmpty(contactemail)) {
sbContactemail.append("【");
sbContactemail.append((String) details.get("cvendor"));
sbContactemail.append("】");
} else {
// 设置邮箱相关的信息并且发送邮件
this.setEmailInfoAndSendEmail(details, tempalte, contactemail);
}
}
Map<String, String> resultMap = new HashMap<>();
if ((number[0] == 0 || number[0] == number[1] - 1)) {
if (org.apache.commons.lang3.StringUtils.isNotEmpty(sbLinkman.toString()) || org.apache.commons.lang3.StringUtils.isNotEmpty(sbContactemail.toString())) {
resultMap.put("isSuccess", "N");
resultMap.put("sbLinkman", sbLinkman.toString());
resultMap.put("sbContactemail", sbContactemail.toString());
} else {
resultMap.put("isSuccess", "Y");
}
}
return resultMap;
}
private boolean setEmailInfoAndSendEmail(Map<String, Object> params, MsgTemplateEntity tempalte, String contactemail) {
HashMap<String, Object> busiData = new HashMap<>();
busiData.put("orderTime", params.get("orderTime")); //单据日期
busiData.put("transactionTypeName", params.get("transactionTypeName")); //交易类型名称
busiData.put("orgName", params.get("orgName")); //采购组织名称
busiData.put("deptName", params.get("deptName")); //采购部门名称
busiData.put("purchase_name", params.get("purchase_name")); //采购员名称
busiData.put("supplierId", params.get("supplierId")); //供应商Id
busiData.put("supplierName", params.get("supplierName")); //供应商名称
busiData.put("purEnterpriseName", params.get("purEnterpriseName")); // 采购商企业名称
busiData.put("supEnterpriseName", params.get("supEnterpriseName")); // 销售商企业名称
busiData.put("currencyName", params.get("currencyName")); //币种名称
busiData.put("businessType", params.get("businessType")); //业务类型
busiData.put("buyerTenantId", params.get("buyerTenantId")); //采购商租户ID
busiData.put("vendorTenantId", params.get("vendorTenantId")); //供应商租户ID
busiData.put("purOrderId", params.get("purOrderId")); //采购订单ID
busiData.put("purOrderDetailId", params.get("purOrderDetailId"));//采购订单明细ID
busiData.put("purOrderCode", params.get("purOrderCode"));//采购订单号
// -------------
busiData.put("materialCode", params.get("materialCode"));//物料名称
// busiData.put("msg", params.get("msg"));//错误信息
EmailHelper.EmailTemplateVO emailTemplateVO = new EmailHelper.EmailTemplateVO();
emailTemplateVO.setTemplateCode(tempalte.getTemplateCode());
emailTemplateVO.setOrgId(null);
emailTemplateVO.setSysId("diwork");
emailTemplateVO.setTenantId(ytenantId);
emailTemplateVO.setBusiData(busiData);
emailTemplateVO.setMailReceiver(Collections.singletonList(contactemail));
try {
this.sendTemplateEmailByBusinessAction(emailTemplateVO);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 邮件发送
*
* @param templateVO
* @return
*/
private Map<String, Object> sendTemplateEmailByBusinessAction(EmailHelper.EmailTemplateVO templateVO) {
if (EmailHelper.checkEmailTemplate(templateVO)) {
if (InvocationInfoProxy.getSysid() == null) {
InvocationInfoProxy.setSysid("diwork");
InvocationInfoProxy.setTenantid(ytenantId);
};
Map<String, Object> res = simpleMessageService.sendMessage(templateVO.getSysId() == null ? InvocationInfoProxy.getSysid() : templateVO.getSysId(),
templateVO.getTemplateCode(), Collections.singletonList(ChannelTypeEnum.MAIL),
templateVO.getMailReceiver(), null, null,
null, templateVO.getBusiData(),
templateVO.getBillMap(), templateVO.getOthers());
EmailHelper.checkMsg(res);
return res;
} else {
throw new BusinessException(
com.yonyou.iuap.ucf.common.i18n.MessageUtils.getMessage("P_YS_HR_HRJQ_0000030962") /* "接收人为空异常!" */);
}
}
/**
* 邮件最终发送结果
*
* @param sendEmailResult
* @return
*/
private Map<String, String> getMessage(Map<String, String> sendEmailResult) {
Map<String, String> resultMap = new HashMap();
if (org.apache.commons.lang3.StringUtils.equals("Y", sendEmailResult.get("isSuccess"))) {
resultMap.put("msg", "已邮件通知!");
resultMap.put("flag", "true");
return resultMap;
}
StringBuilder resultMsg = new StringBuilder();
if (org.apache.commons.lang3.StringUtils.isNotEmpty(sendEmailResult.get("sbLinkman"))) {
resultMsg.append("邮件通知失败:");
resultMsg.append("供应商");
resultMsg.append(sendEmailResult.get("sbLinkman"));
resultMsg.append("不存在默认的联系人!");
}
if (org.apache.commons.lang3.StringUtils.isNotEmpty(sendEmailResult.get("sbContactemail"))) {
resultMsg.append("\r\n");
resultMsg.append("邮件通知失败:");
resultMsg.append("供应商");
resultMsg.append(sendEmailResult.get("sbContactemail"));
resultMsg.append("的默认联系人的邮箱不存在!");
}
resultMap.put("msg", String.valueOf(resultMsg));
resultMap.put("flag", "false");
return resultMap;
}
}
package com.yonyou.ucf.mdf.app.service.servicePurchaser.impl;
import com.yonyou.cloud.apm.internal.com.alibaba.fastjson.JSONObject;
import com.yonyou.cloud.utils.CollectionUtils;
import com.yonyou.diwork.exception.BusinessException;
import com.yonyou.iuap.context.InvocationInfoProxy;
import com.yonyou.iuap.message.platform.entity.MsgTemplateEntity;
import com.yonyou.iuap.message.platform.entity.consts.ChannelTypeEnum;
import com.yonyou.iuap.message.platform.rpc.ISimpleMessageService;
import com.yonyou.ucf.mdf.app.common.EmailHelper;
import com.yonyou.ucf.mdf.app.mapper.SupCertReportMapper;
import com.yonyou.ucf.mdf.app.mapper.mapperPurchaser.SendEmailGMapper;
import com.yonyou.ucf.mdf.app.mapper.mapperPurchaser.SendEmailMapper;
import com.yonyou.ucf.mdf.app.service.servicePurchaser.SendEmailGService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.*;
@Slf4j
@Service
public class SendEmailGServiceImpl implements SendEmailGService {
@Autowired
SendEmailMapper sendEmailMapper;
@Autowired
SendEmailGMapper sendEmailGMapper;
@Autowired
public ISimpleMessageService simpleMessageService;
@Autowired
SupCertReportMapper supCertReportMapper;
@Value("${mls.buyer_tenant_id:}")
public String ytenantId;
/**
* 交期计划变更发送邮件接口
*
* @param body
*/
@Override
public Map<String, String> postEmailGservice(JSONObject body) throws Exception {
// 交期计划变更
// Date changeDate = body.getDate("changeDate"); //订单变更日期
// String deptId = body.getString("deptId"); //采购部门Id
// String purchaseId = body.getString("purchaseId"); //采购员Id
// Long supplierId = body.getLong("supplierId"); //供应商Id
// String currencyName = body.getString("currencyName"); //币种名称
// String buyerTenantIid = body.getString("buyerTenantIid"); //采购商租户ID
// String vendorTenantId = body.getString("vendorTenantId"); //供应商租户ID
// String purOrderId = body.getString("purOrderId"); //采购订单ID
// String purOrderDetailId = body.getString("purOrderDetailId"); //采购订单明细ID
// String purDelplanId = body.getString("purDelplanId"); //采购交期计划ID
// String purOrderCode = body.getString("purOrderCode"); //采购订单号
// String materialCode = body.getString("materialCode"); //物料名称
// String totalQuantity = body.getString("totalQuantity"); //订单总数量
// Map<String, Object> EmailServerObject = new HashMap<>();
// EmailServerObject.put("changeDate", body.getDate("changeDate")); //订单变更日期
// EmailServerObject.put("deptId", body.getString("deptId")); //采购部门Id
// EmailServerObject.put("purchaseId", body.getString("purchaseId")); //采购员Id
// EmailServerObject.put("supplierId", body.getString("supplierId")); //供应商Id
// EmailServerObject.put("currencyName", body.getString("currencyName")); //币种名称
// EmailServerObject.put("buyerTenantIid", body.getString("buyerTenantIid")); //采购商租户ID
// EmailServerObject.put("vendorTenantId", body.getString("vendorTenantId")); //供应商租户ID
// EmailServerObject.put("purOrderId", body.getString("purOrderId")); // 采购订单ID
// EmailServerObject.put("purOrderDetailId", body.getString("purOrderDetailId")); // 采购订单明细ID
// EmailServerObject.put("purDelplanId", body.getString("purDelplanId")); //采购交期计划ID
// EmailServerObject.put("purOrderCode", body.getString("purOrderCode")); //采购订单号
// EmailServerObject.put("materialCode", body.getString("materialCode")); //物料名称
// EmailServerObject.put("totalQuantity", body.getString("totalQuantity")); //订单总数量
String purOrderDetailId = body.getString("purOrderDetailId"); //表Id 交期计划变更表 采购订单明细ID
try {
Map<String, Object> PlanBuyerPurObject = sendEmailGMapper.getPlanBuyerServerPurObject(purOrderDetailId); // 根据交期计划变更delivery_plan_version_pur表的采购订单明细ID获取表行数据
Long supplierId = (Long) PlanBuyerPurObject.get("supplierId"); //供应商Id
// EmailServerObject.put("changeDate", (Date) PlanBuyerPurObject.get("changeDate")); //订单变更日期
// EmailServerObject.put("deptId", (String) PlanBuyerPurObject.get("deptId")); //采购部门Id
// EmailServerObject.put("purchaseId", (String) PlanBuyerPurObject.get("purchaseId")); //采购员Id
// EmailServerObject.put("supplierId", (Long) PlanBuyerPurObject.get("supplierId")); //供应商Id
// EmailServerObject.put("currencyName", (String) PlanBuyerPurObject.get("currencyName")); //币种名称
// EmailServerObject.put("buyerTenantIid", (String) PlanBuyerPurObject.get("buyerTenantIid")); //采购商租户ID
// EmailServerObject.put("vendorTenantId", (String) PlanBuyerPurObject.get("vendorTenantId")); //供应商租户ID
// EmailServerObject.put("purOrderId", (String) PlanBuyerPurObject.get("purOrderId")); // 采购订单ID
// EmailServerObject.put("purOrderDetailId", (String) PlanBuyerPurObject.get("purOrderDetailId")); // 采购订单明细ID
// EmailServerObject.put("purDelplanId", (String) PlanBuyerPurObject.get("purDelplanId")); //采购交期计划ID
// EmailServerObject.put("purOrderCode", (String) PlanBuyerPurObject.get("purOrderCode")); //采购订单号
// EmailServerObject.put("materialCode", (String) PlanBuyerPurObject.get("materialCode")); //物料名称
// EmailServerObject.put("totalQuantity", (String) PlanBuyerPurObject.get("totalQuantity")); //订单总数量
Map<String, String> result = new HashMap<>();
Map<String, String> sendemail = sendemail(supplierId, PlanBuyerPurObject);
result.put("flag", "false");
result.put("msg", sendemail.get("msg"));
return result;
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
//TODO 开始发送邮件
public Map<String, String> sendemail(Long supplierId, Map<String, Object> EmailServerObject) {
Map<String, Object> idisname = new HashMap<>();
idisname.put("changeDate", EmailServerObject.get("changeDate")); //订单变更日期
// idisname.put("deptId", EmailServerObject.get("deptId")); //采购部门Id
idisname.put("deptId", sendEmailGMapper.querydeptId((String) EmailServerObject.get("deptId"))); //采购部门Id
// idisname.put("purchaseId", EmailServerObject.get("purchaseId")); //采购员Id
idisname.put("purchaseId", sendEmailGMapper.querydeptPurchaseId((String) EmailServerObject.get("purchaseId"))); //采购员Id
// idisname.put("supplierId", EmailServerObject.get("supplierId")); //供应商Id
idisname.put("supplierId", sendEmailGMapper.querydeptSupplierId((String) EmailServerObject.get("supplierId"))); //供应商Id
idisname.put("currencyName", EmailServerObject.get("currencyName")); //币种名称
// idisname.put("buyerTenantIid", EmailServerObject.get("buyerTenantIid")); //采购商租户ID
idisname.put("buyerTenantIid", sendEmailMapper.querybuyerTenantId((String) EmailServerObject.get("buyerTenantIid"))); //采购商租户ID
// idisname.put("vendorTenantId", EmailServerObject.get("vendorTenantId")); //供应商租户ID
idisname.put("vendorTenantId", sendEmailMapper.queryvendorTenantId((String) EmailServerObject.get("vendorTenantId"))); //供应商租户ID
idisname.put("purOrderId", EmailServerObject.get("purOrderId")); // 采购订单ID
idisname.put("purOrderDetailId", EmailServerObject.get("purOrderDetailId")); // 采购订单明细ID
idisname.put("purDelplanId", EmailServerObject.get("purDelplanId")); //采购交期计划ID
idisname.put("purOrderCode", EmailServerObject.get("purOrderCode")); //采购订单号
// idisname.put("materialCode", EmailServerObject.get("materialCode")); //物料名称
idisname.put("materialCode", sendEmailGMapper.querymaterialCode((String) EmailServerObject.get("materialCode"))); //物料名称
idisname.put("totalQuantity", EmailServerObject.get("totalQuantity")); //订单总数量
// ------
// idisname.put("supplierName", supCertReportMapper.queryCertSupplier(supplierId)); //供应商名称
// idisname.put("msg",msg);
return invarrsendEamil(idisname, supplierId);
}
public Map<String, String> invarrsendEamil(Map<String, Object> invrow, Long supplierId) {
// 获取默认模板
MsgTemplateEntity tempalte = simpleMessageService.queryDefaultTemplate("diwork", null, ytenantId, null, "deliveryPlanSendEmail");
if (null == tempalte || org.apache.commons.lang3.StringUtils.isEmpty(tempalte.getTemplateCode())) {
throw new BusinessException("没有可以使用的邮件模板,请前往【消息模板】设置默认模板!");
}
StringBuilder sbLinkman = new StringBuilder();
StringBuilder sbContactemail = new StringBuilder();
Map<String, String> sendEmailResult = null;
sendEmailResult = this.sendEmail(invrow, sbLinkman, sbContactemail, tempalte, 0);
return this.getMessage(sendEmailResult);
}
/**
* 邮件参数和接收人的设置
*
* @param details
* @param sbLinkman
* @param sbContactemail
* @param tempalte
* @return
*/
private Map<String, String> sendEmail(Map<String, Object> details, StringBuilder sbLinkman, StringBuilder sbContactemail, MsgTemplateEntity tempalte, int... number) {
// 获取默认联系人信息
List<Map<String, Object>> vendorContactsList = new ArrayList<>();
vendorContactsList = supCertReportMapper.selvendorContacts((Long) details.get("supplierId"));
if (CollectionUtils.isEmpty(vendorContactsList)) {
sbLinkman.append("【");
sbLinkman.append((String) details.get("cvendor"));
sbLinkman.append("】");
} else {
// 获取默认联系人邮箱地址
String contactemail = (String) vendorContactsList.get(0).get("cContactEmail");
if (org.apache.commons.lang3.StringUtils.isEmpty(contactemail)) {
sbContactemail.append("【");
sbContactemail.append((String) details.get("cvendor"));
sbContactemail.append("】");
} else {
// 设置邮箱相关的信息并且发送邮件
this.setEmailInfoAndSendEmail(details, tempalte, contactemail);
}
}
Map<String, String> resultMap = new HashMap<>();
if ((number[0] == 0 || number[0] == number[1] - 1)) {
if (org.apache.commons.lang3.StringUtils.isNotEmpty(sbLinkman.toString()) || org.apache.commons.lang3.StringUtils.isNotEmpty(sbContactemail.toString())) {
resultMap.put("isSuccess", "N");
resultMap.put("sbLinkman", sbLinkman.toString());
resultMap.put("sbContactemail", sbContactemail.toString());
} else {
resultMap.put("isSuccess", "Y");
}
}
return resultMap;
}
private boolean setEmailInfoAndSendEmail(Map<String, Object> params, MsgTemplateEntity tempalte, String contactemail) {
HashMap<String, Object> busiData = new HashMap<>();
busiData.put("changeDate", params.get("changeDate")); //订单变更日期
busiData.put("deptId", params.get("deptId")); //采购部门Id
busiData.put("purchaseId", params.get("purchaseId")); //采购员Id
busiData.put("supplierId", params.get("supplierId")); //供应商Id
busiData.put("currencyName", params.get("currencyName")); //币种名称
busiData.put("buyerTenantIid", params.get("buyerTenantIid")); //采购商租户ID
busiData.put("vendorTenantId", params.get("vendorTenantId")); //供应商租户ID
busiData.put("purOrderId", params.get("purOrderId")); // 采购订单ID
busiData.put("purOrderDetailId", params.get("purOrderDetailId")); // 采购订单明细ID
busiData.put("purDelplanId", params.get("purDelplanId")); //采购交期计划ID
busiData.put("purOrderCode", params.get("purOrderCode")); //采购订单号
busiData.put("materialCode", params.get("materialCode")); //物料名称
busiData.put("totalQuantity", params.get("totalQuantity")); //订单总数量
// busiData.put("supplierName", params.get("supplierName")); //供应商名称
// busiData.put("msg", params.get("msg"));//错误信息
EmailHelper.EmailTemplateVO emailTemplateVO = new EmailHelper.EmailTemplateVO();
emailTemplateVO.setTemplateCode(tempalte.getTemplateCode());
emailTemplateVO.setOrgId(null);
emailTemplateVO.setSysId("diwork");
emailTemplateVO.setTenantId(ytenantId);
emailTemplateVO.setBusiData(busiData);
emailTemplateVO.setMailReceiver(Collections.singletonList(contactemail));
try {
this.sendTemplateEmailByBusinessAction(emailTemplateVO);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 邮件发送
*
* @param templateVO
* @return
*/
private Map<String, Object> sendTemplateEmailByBusinessAction(EmailHelper.EmailTemplateVO templateVO) {
if (EmailHelper.checkEmailTemplate(templateVO)) {
if (InvocationInfoProxy.getSysid() == null) {
InvocationInfoProxy.setSysid("diwork");
InvocationInfoProxy.setTenantid(ytenantId);
}
;
Map<String, Object> res = simpleMessageService.sendMessage(templateVO.getSysId() == null ? InvocationInfoProxy.getSysid() : templateVO.getSysId(),
templateVO.getTemplateCode(), Collections.singletonList(ChannelTypeEnum.MAIL),
templateVO.getMailReceiver(), null, null,
null, templateVO.getBusiData(),
templateVO.getBillMap(), templateVO.getOthers());
EmailHelper.checkMsg(res);
return res;
} else {
throw new BusinessException(
com.yonyou.iuap.ucf.common.i18n.MessageUtils.getMessage("P_YS_HR_HRJQ_0000030962") /* "接收人为空异常!" */);
}
}
/**
* 邮件最终发送结果
*
* @param sendEmailResult
* @return
*/
private Map<String, String> getMessage(Map<String, String> sendEmailResult) {
Map<String, String> resultMap = new HashMap();
if (org.apache.commons.lang3.StringUtils.equals("Y", sendEmailResult.get("isSuccess"))) {
resultMap.put("msg", "已邮件通知!");
resultMap.put("flag", "true");
return resultMap;
}
StringBuilder resultMsg = new StringBuilder();
if (org.apache.commons.lang3.StringUtils.isNotEmpty(sendEmailResult.get("sbLinkman"))) {
resultMsg.append("邮件通知失败:");
resultMsg.append("供应商");
resultMsg.append(sendEmailResult.get("sbLinkman"));
resultMsg.append("不存在默认的联系人!");
}
if (org.apache.commons.lang3.StringUtils.isNotEmpty(sendEmailResult.get("sbContactemail"))) {
resultMsg.append("\r\n");
resultMsg.append("邮件通知失败:");
resultMsg.append("供应商");
resultMsg.append(sendEmailResult.get("sbContactemail"));
resultMsg.append("的默认联系人的邮箱不存在!");
}
resultMap.put("msg", String.valueOf(resultMsg));
resultMap.put("flag", "false");
return resultMap;
}
}