二开案例.表单插件.发送普通消息

【应用场景】
通过插件的方式给指定用户发送普通消息。
【案例演示】
采购订单编辑界面,给指定用户发送普通消息。

【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Core.Msg;
using Kingdee.BOS.Msg;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】发送普通消息
/// </summary>
[Description("【表单插件】发送普通消息"), HotUpdate]
public class SendCommonMessageFormPlugIn : AbstractDynamicFormPlugIn
{
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey.Equals("tbSendMessage", StringComparison.OrdinalIgnoreCase))
{
var pkid = ((IBillView)this.View).Model.GetPKValue();
if (pkid == null)
{
this.View.ShowMessage("请先保存单据!");
return;
}
var status = ((BillStatusField)this.View.BillBusinessInfo.GetField("FDocumentStatus")).GetStatusName(this.View.Model.GetValue("FDocumentStatus"));
var msg = string.Format("订单{0}的状态已变更为【{1}】", this.View.Model.DataObject["BillNo"], status);
// 发送消息给多人
var receiverIds = new object[] { 100008, 144527, 146928 };
SendMessage(this.Context, this.View.BillBusinessInfo.GetForm().Id, pkid.ToString()
, "采购订单状态变更通知", msg, this.Context.UserId, receiverIds);
// 发送消息给某一个人
SendMessage(this.Context, this.View.BillBusinessInfo.GetForm().Id, pkid.ToString()
, "采购订单状态变更通知2", msg, this.Context.UserId, 100008);
this.View.ShowMessage("消息发送成功!");
}
}
/// <summary>
/// 发送消息(支持多个收件人,写发件箱)
/// </summary>
/// <param name="ctx">上下文</param>
/// <param name="formId">业务对象标识(不可以使用扩展的标识)</param>
/// <param name="pkId">单据主键值</param>
/// <param name="title">标题</param>
/// <param name="content">内容</param>
/// <param name="senderId">发生人内码</param>
/// <param name="receiverIds">接收人内码集合</param>
private static void SendMessage(Context ctx, string formId, string pkId, string title, string content, long senderId, object[] receiverIds)
{
var businessInfo = FormMetaDataCache.GetCachedFormMetaData(ctx, "WF_MessageSendBill").BusinessInfo;
var receiverField = (MulBaseDataField)businessInfo.GetField("FRECEIVERS");
var dt = businessInfo.GetDynamicObjectType();
var dataObject = new DynamicObject(dt);
dataObject["TYPE"] = ((int)MsgType.CommonMessage).ToString();
dataObject["SENDERID_Id"] = senderId;
FieldSetValue(ctx, receiverField, dataObject, receiverIds);
dataObject["Title"] = title;
dataObject["Content"] = content;
dataObject["ObjectTypeId_Id"] = formId;
dataObject["KeyValue"] = pkId;
dataObject["CREATETIME"] = DateTime.Now;
// 保存消息
var msgSend = new MessageSend(dataObject);
msgSend.KeyValue = pkId;
SMSServiceHelper.SendMessage(ctx, msgSend, true);
}
/// <summary>
/// 发送消息(精简版,仅支持一个收件人,不写发件箱)
/// </summary>
/// <param name="ctx">上下文</param>
/// <param name="formId">业务对象标识(不可以使用扩展的标识)</param>
/// <param name="pkId">单据主键值</param>
/// <param name="title">标题</param>
/// <param name="content">内容</param>
/// <param name="senderId">发生人内码</param>
/// <param name="receiverId">接收人内码</param>
private static void SendMessage(Context ctx, string formId, string pkId, string title, string content, long senderId, long receiverId)
{
Message msg = new DynamicObject(Message.MessageDynamicObjectType);
msg.MessageId = SequentialGuid.NewGuid().ToString();
msg.MsgType = MsgType.Com二开案例.表单插件.发送普通消息
【应用场景】通过插件的方式给指定用户发送普通消息。【案例演示】采购订单编辑界面,给指定用户发送普通消息。【实现步骤】<1>编写表单插...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



