邮件和企微消息发送优化

This commit is contained in:
yuxueliang0813 2025-04-14 11:25:06 +08:00
parent 4a6fb3ff3d
commit dfac07da3f
7 changed files with 51 additions and 34 deletions

View File

@ -307,6 +307,7 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
DynamicObject pzbinfo;//配置表
DynamicObject userinfo;//被通知用户
DynamicObjectCollection users;//配置表中的被通知人集合
List<Long> receivers = new ArrayList<>(1);
for (int i = 0; i < dos.length; i++) {
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName());
//判断当前清账单是否由收款单补推如果是则根据清账单上的被通知人进行通知否则根据配置表
@ -345,8 +346,11 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
detailinfo = newDetailBill(prinfo, userinfo);
//发送清账明细单的OA待办
JhzjUtils.handleOA(detailinfo, "0", "0");
JhzjUtils.sendEmail(userinfo.getString("email"), "请登录资金系统操作清账明细单",
detailinfo.getString("billno") + "\n 详情页面" + JhzjUtils.getBillPCURL(detailinfo), "清账明细单新增");
receivers.clear();
receivers.add(userinfo.getLong("id"));
String pcurl = JhzjUtils.getBillPCURL(detailinfo);
JhzjUtils.sendEmail("请登录资金系统操作清账明细单", detailinfo.getString("billno") +
"<br> 详情页面 <a href='"+pcurl+"' target='_blank'>"+pcurl+"</a>", receivers, detailinfo);
}
}
}

View File

@ -1,7 +1,6 @@
package shjh.jhzj7.fi.fi.plugin.operate;
import com.sap.db.jdbc.packet.ErrorLevel;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.db.DB;
@ -16,9 +15,7 @@ import kd.sdk.plugin.Plugin;
import shjh.jhzj7.fi.fi.utils.JhzjUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
@ -80,9 +77,6 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
e.setCancel(true);
}
}else if("reject".equals(eok)){
List<Long> receivers = new ArrayList<>();
receivers.add(RequestContext.get().getCurrUserId());
JhzjUtils.sendWEIXINQY(null,null, receivers);
//驳回校验
if(!"B".equals(prinfo.getString("billstatus"))){
//清账明细单单据状态=已提交才允许点击驳回按钮
@ -349,7 +343,7 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
userName);
//驳回时对清账明细单修改人发送邮件通知OA待办 业务员可修改后再次提交
JhzjUtils.sendEmail(userinfo.getString("email"),"请登录资金系统操作清账明细单",
prinfo.getString("billno")+"\n 详情页面"+JhzjUtils.getBillPCURL(prinfo),"清账明细单新增");
prinfo.getString("billno")+"\n 详情页面 <a href='"+JhzjUtils.getBillPCURL(prinfo)+"' target='_blank'>请点击此次</a>","清账明细单新增");
JhzjUtils.handleOA(prinfo,"0", "0");
//处理完成提示
this.operationResult.addSuccessPkId(prinfo.getPkValue());

View File

@ -61,9 +61,10 @@ public class PayinfoChangeOperation extends AbstractOperationServicePlugIn imple
List<Long> receivers = new ArrayList<>(1);
receivers.add(userField.getLong("id"));
String title = "支付信息变更单号"+prinfo.getString("billno");
String content = "请登录资金系统处理付款单"+sourcebillno+"的变更,原因如下:\n"+changeCause;
JhzjUtils.sendEmail(title,content+"\n 变更详情页面:"+JhzjUtils.getBillPCURL(prinfo),receivers);
JhzjUtils.sendWEIXINQY(title,content,receivers);
String content = "请登录资金系统处理付款单"+sourcebillno+"的变更,原因如下:<br>"+changeCause;
String pcurl = JhzjUtils.getBillPCURL(prinfo);
JhzjUtils.sendEmail(title,content+"<br> 变更详情页面:<a href='"+pcurl+"' target='_blank'>"+pcurl+"</a>",receivers,prinfo);
JhzjUtils.sendWEIXINQY(title,content,receivers,prinfo);
}
}
}

View File

@ -76,8 +76,8 @@ public class NotCreditedNoticeTask extends AbstractTask implements Plugin {
}
title = pzbinfo.getDynamicObject("shjh_org").getString("number")+"公司未入账的付款流水";
content = "请登录资金系统处理 "+title+""+entry.getValue()+"";
JhzjUtils.sendEmail(title,content,receivers);
JhzjUtils.sendWEIXINQY(title,content,receivers);
JhzjUtils.sendEmail(title,content,receivers,pzbinfo);
JhzjUtils.sendWEIXINQY(title,content,receivers,pzbinfo);
}else{
logger.info("付款未查找到对应人员"+qFilter.toArray());
}
@ -109,8 +109,8 @@ public class NotCreditedNoticeTask extends AbstractTask implements Plugin {
}
title = pzbinfo.getDynamicObject("shjh_org").getString("number")+"公司未入账的收款流水";
content = "请登录资金系统处理 "+title+""+entry.getValue()+"";
JhzjUtils.sendEmail(title,content,receivers);
JhzjUtils.sendWEIXINQY(title,content,receivers);
JhzjUtils.sendEmail(title,content,receivers,pzbinfo);
JhzjUtils.sendWEIXINQY(title,content,receivers,pzbinfo);
}else{
logger.info("收款未查找到对应人员"+qFilter.toArray());
}

View File

@ -76,12 +76,14 @@ public class UnclaimedNoticeTask extends AbstractTask implements Plugin {
for (Map.Entry<String, List<DynamicObject>> entry : userBills.entrySet()) {
userid = entry.getKey();
billlist = entry.getValue();
receivers.clear();
receivers.add(Long.parseLong(userid));
title = "业务认领通知";
content = "请登录资金系统处理认领公告 共"+billlist.size()+"\n";
JhzjUtils.sendEmail(title,content+JhzjUtils.getTableHtml(billlist),receivers);
JhzjUtils.sendWEIXINQY(title,content,receivers);
if(!billlist.isEmpty()){
receivers.clear();
receivers.add(Long.parseLong(userid));
title = "业务认领通知";
content = "请登录资金系统处理认领公告 共"+billlist.size()+"";
JhzjUtils.sendEmail(title,content+JhzjUtils.getTableHtml(billlist),receivers,billlist.get(0));
JhzjUtils.sendWEIXINQY(title,content,receivers,billlist.get(0));
}
}
}

View File

@ -40,7 +40,7 @@ public class JhzjUtils {
private static final ILocaleString msgtag = new LocaleString("消息提醒");
private static final String groupId = "default_netctrl";//单据网络互斥默认分组
private static final String netctrlgroupId = "default_netctrl";//单据网络互斥默认分组
private static final Log logger = LogFactory.getLog(JhzjUtils.class);
@ -114,7 +114,7 @@ public class JhzjUtils {
public static String getTableHtml(List<DynamicObject> billlist){
StringBuilder tabstr = new StringBuilder();
tabstr.append("<table border='1'> ");
tabstr.append("<br> <table border='1'> ");
//设置表头-10列
tabstr.append("<thead> <tr> <th>认领通知单</th> <th>银行账号</th> <th>对方账号</th> <th>对方户名</th> <th>币种</th> <th>收款金额</th> ");
tabstr.append("<th>交易日期</th> <th>摘要</th> <th>票据号/明细编号</th> <th>承兑人名称/明细流水号</th></tr></thead> ");
@ -185,7 +185,7 @@ public class JhzjUtils {
receivers.add(email);//增加接收人
emailInfo.setReceiver(receivers);
Map<String, Object> sendResult = EmailHandler.sendEmail(emailInfo);
//保存邮件发送日志
//以邮箱地址发送手动保存邮件发送日志系统不保存至消息日志中
saveLog(email,"邮件",content,(String)sendResult.get("description"),(Boolean)sendResult.get("result"),operation);
}
@ -194,8 +194,9 @@ public class JhzjUtils {
* @param title 邮件主题
* @param content 邮件内容
* @param receivers 上游操作触发
* @param billinfo 源业务单据对象
*/
public static void sendEmail(String title, String content, List<Long> receivers){
public static void sendEmail(String title, String content, List<Long> receivers, DynamicObject billinfo){
//构建消息体发送
MessageInfo message = new MessageInfo();
//信息 title
@ -211,8 +212,14 @@ public class JhzjUtils {
message.setSenderId(RequestContext.get().getCurrUserId());
message.setType("notice_email");//消息类型的编号
message.setNotifyType(MessageChannels.EMAIL.getNumber());//消息渠道的编号
// MessageCenterServiceHelper.sendMessage(message);
//如下四个参数必须有否则消息发送校验不通过
message.setEntityNumber(billinfo.getDataEntityType().getName());//实体标识
message.setSource("funding");//来源资金系统
message.setBizDataId((Long) billinfo.getPkValue());//业务单据id
message.setNestBillId((Long) billinfo.getPkValue());//源单据id
// MessageCenterServiceHelper.sendMessage(message);//该方法已弃用换成如下消息发送
List<MessageInfo> msgs = new ArrayList<>(1);
msgs.add(message);
MessageCenterServiceHelper.batchSendMessages(msgs);
}
@ -221,8 +228,9 @@ public class JhzjUtils {
* @param title 消息主题
* @param content 消息内容
* @param receivers 信息接收人
* @param billinfo 源业务单据对象
*/
public static void sendWEIXINQY(String title, String content, List<Long> receivers){
public static void sendWEIXINQY(String title, String content, List<Long> receivers, DynamicObject billinfo){
//构建消息体发送
MessageInfo message = new MessageInfo();
//信息 title
@ -241,8 +249,14 @@ public class JhzjUtils {
// notifyType.append(MessageChannels.EMAIL.getNumber()).append(",");
// notifyType.append(MessageChannels.WEIXINQY.getNumber());
message.setNotifyType(MessageChannels.WEIXINQY.getNumber());//消息渠道的编号
// MessageCenterServiceHelper.sendMessage(message);
//如下四个参数必须有否则消息发送校验不通过
message.setEntityNumber(billinfo.getDataEntityType().getName());//实体标识
message.setSource("funding");//来源资金系统
message.setBizDataId((Long) billinfo.getPkValue());//业务单据id
message.setNestBillId((Long) billinfo.getPkValue());//源单据id
// MessageCenterServiceHelper.sendMessage(message);//该方法已弃用换成如下消息发送
List<MessageInfo> msgs = new ArrayList<>(1);
msgs.add(message);
MessageCenterServiceHelper.batchSendMessages(msgs);
}
@ -332,7 +346,7 @@ public class JhzjUtils {
List mutexRequireList = new ArrayList(1);
Map requireParam = new HashMap();
requireParam.put(DataMutex.PARAMNAME_DATAOBJID, prinfo.getString("id"));//数据id
requireParam.put(DataMutex.PARAMNAME_GROUPID, groupId);
requireParam.put(DataMutex.PARAMNAME_GROUPID, netctrlgroupId);
requireParam.put(DataMutex.PARAMNAME_ENTITYKEY, entityKey);
requireParam.put(DataMutex.PARAMNAME_OPERATIONKEY, "modify");
requireParam.put(DataMutex.PARAMNAME_ISSTRICT, true);
@ -371,7 +385,7 @@ public class JhzjUtils {
List mutexRequireList = new ArrayList(1);
Map requireParam = new HashMap();
requireParam.put(DataMutex.PARAMNAME_DATAOBJID, prinfo.getString("id"));
requireParam.put(DataMutex.PARAMNAME_GROUPID, groupId);
requireParam.put(DataMutex.PARAMNAME_GROUPID, netctrlgroupId);
requireParam.put(DataMutex.PARAMNAME_ENTITYKEY, prinfo.getDataEntityType().getName());
requireParam.put(DataMutex.PARAMNAME_OPERATIONKEY, "modify");
mutexRequireList.add(requireParam);

View File

@ -119,7 +119,9 @@ public class PayreceiptQueryControler {
realUploadUrl = ReceiptPrintHelper.getFilePreviewUrl(realUploadUrl);
entryBean.setReceipturl(realUploadUrl);
logger.info("电子回单预览URL: "+realUploadUrl);
// new ViewReceiptService().getElecByReceiptno();//可获得电子回单的查看URL kd.tmc.bei.business.opservice.elec
//如下两句代码方法也可以获得回单的url
// List<String> resultlist = new ViewReceiptService().getElecByReceiptno("109020222",new Object[]{receiptNo});//可获得电子回单的查看URL kd.tmc.bei.business.opservice.elec
// entryBean.setVoucherYear(resultlist.get(0));
// byte[] stream = BeiHelper.getPdfPutStream(realUploadUrl);//电子回单字节数组
// if (stream.length <= 1) {
// logger.warn(receiptNo + "下载回单文件流为空,请检查回单文件路径值。");
@ -133,11 +135,11 @@ public class PayreceiptQueryControler {
// }
} catch (Exception var11) {
logger.error("电子回单获取文件路径异常: " + var11.getMessage());
return handleErrorAndReturn("查询失败:电子回单获取文件路径异常", eReceiptid+"", jsonBodyString,apiResultExt);
return handleErrorAndReturn("查询失败:电子回单获取文件路径异常", receiptNo, jsonBodyString,apiResultExt);
}
} else {
logger.warn(receiptNo + "回单为非文件类回单");
return handleErrorAndReturn("查询失败:回单为非文件类回单", eReceiptid+"", jsonBodyString,apiResultExt);
return handleErrorAndReturn("查询失败:回单为非文件类回单", receiptNo, jsonBodyString,apiResultExt);
}
}else{
return handleErrorAndReturn("查询失败:电子回单不存在", eReceiptid+"", jsonBodyString,apiResultExt);