二开案例.列表插件.流程管理中心查看单据时取消验权

【应用场景】
流程管理中心查看单据时,默认会验证当前登录用户的查看权限,可通过插件取消验权。
【案例演示】
流程管理中心查看单据时取消验权。

【实现步骤】
<1>编写列表插件,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Core.Metadata.FormElement;
using Kingdee.BOS.Core.Permission;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.Msg;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.BOS.Workflow.PlugIns;
using Kingdee.BOS.Workflow.ServiceHelper;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【列表插件】流程管理中心查看单据时取消验权
/// 使用说明:
/// 1.扩展流程管理_流程实例[WF_ProcInstBill]
/// 2.注册二开的列表插件:Jac.XkDemo.BOS.Business.PlugIn.ProcManageCenterOpenBillCancelCheckRightListPlugIn, Jac.XkDemo.BOS.Business.PlugIn
/// 3.禁用标准产品的列表插件:Kingdee.BOS.Workflow.PlugIns.ProcManageProcInst, Kingdee.BOS.Workflow.PlugIns
/// </summary>
[Description("【列表插件】流程管理中心查看单据时取消验权"), HotUpdate]
public class ProcManageCenterOpenBillCancelCheckRightListPlugIn : ProcManageProcInst
{
public override void BarItemClick(BarItemClickEventArgs e)
{
if (e.BarItemKey.EqualsIgnoreCase("TBBILLVIEW"))
{
e.Cancel = true;
if (this.ListView.CurrentSelectedRowInfo == null) return;
string formId, keyValue;
ProcManageServiceHelper.GetFormIdAndKeyValue(this.View.Context, this.ListView.CurrentSelectedRowInfo.PrimaryKeyValue,
out formId, out keyValue);
WorkflowPlugInHelper.OpenBillWindow(this.View, formId, keyValue, MsgType.WorkflowMessage);
return;
}
base.BarItemClick(e);
}
#region WorkflowPlugInHelper
public class WorkflowPlugInHelper
{
public static void OpenBillWindow(IDynamicFormView view, string formId, string keyValue,
MsgType msgType = MsgType.CommonMessage, ShowType showType = ShowType.MainNewTabPage)
{
try
{
if (string.IsNullOrWhiteSpace(formId)
|| string.IsNullOrWhiteSpace(keyValue))
{
view.ShowNotificationMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("未关联单据,或者关联的单据已经被删除!", "002406030017566", Kingdee.BOS.Resource.SubSystemType.BOS));
return;
}
// 验查看权
//if (!CheckReadRight(view.Context, formId, keyValue))
//{
// view.ShowNotificationMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("对不起,您没有所选单据查看权限!", "002406030017569", Kingdee.BOS.Resource.SubSystemType.BOS));
// return;
//}
BillShowParameter showParam = new BillShowParameter();
showParam.AllowNavigation = false;
showParam.PageId = Guid.NewGuid().ToString();
showParam.FormId = formId;
showParam.PKey = keyValue;
showParam.Status = OperationStatus.VIEW;
//工作流消息查看
if (msgType == MsgType.WorkflowMessage)
{
// 加载单据类型视图
FormMetadata meta = Kingdee.BOS.ServiceHelper.MetaDataServiceHelper.Load(
view.Context, formId) as FormMetadata;
string layoutId = GetLayoutByBillType(view.Context, meta, keyValue);
if (!string.IsNullOrEmpty(layoutId))
{
showParam.LayoutId = layoutId;
}
}
//showParam.OpenStyle.TagetKey = "FMainTab";
if (view.ParentFormView == null || view.ParentFormView.ParentFormView == null)
{
showParam.OpenStyle.ShowType = ShowType.Modal;
}
else
{
showParam.OpenStyle.ShowType = showType;
}
//if (msgType != MsgType.BusinessFlowMessage)
//{
// showParam.CustomParams.Add("workflowHandled", "1");
//}
// 工作流消息,查看单据,无需关闭菜单,放开
// 前面代码已经检验过查看权、数据权,用户完全能够正常打开单据
// 放开单据的菜单后,用户可以从消息入口,进行下推、查看附件等与流程密切相关的操作
// Johnny Ding 2014.4.17
//if (msgType == MsgType.WorkflowMessage)
//{
// showParam.CustomParams.Add("workflowHandled", "1");
//}
if (view.ParentFormView == null || view.ParentFormView.ParentFormView == null)
{
view.ShowForm(showParam);
}
else
{
IDynamicFormView showView = view.GetView(view.ParentFormView.ParentFormView.PageId);
showView.ShowForm(showParam);
view.SendDynamicFormAction(showView);
}
}
catch (Kingdee.BOS.KDExceptionLicense ex)
{
view.ShowErrMessage(ex.Message);
}
catch
{
view.ShowErrMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("单据与单据编码配置错误,请联系管理员!", "002406030017572", Kingdee.BOS.Resource.SubSystemType.BOS), Kingdee.BOS.Resource.ResManager.LoadKDString("单据查看失败", "002406030017575", Kingdee.BOS.Resource.SubSystemType.BOS));
}
}
/// <summary>
/// 校验查看权限:登陆组织查看权 + 数据权
/// </summary>
private static bool CheckReadRight(Context ctx, string formId, object pkValue)
{
// 验证功能权限
BusinessObject businessObject = new BusinessObject();
businessObject.Id = formId;
FormMetadata meta = Kingdee.BOS.ServiceHelper.MetaDataServiceHelper.Load(ctx, formId) as FormMetadata;
BusinessInfo info = meta.BusinessInfo;
Form form = info.GetForm();
//不需要验权直接返回
if (form.SupportPermissionControl == 0)
{
return true;
}
PermissionAuthResult authResul二开案例.列表插件.流程管理中心查看单据时取消验权
【应用场景】流程管理中心查看单据时,默认会验证当前登录用户的查看权限,可通过插件取消验权。【案例演示】流程管理中心查看单据时取消验...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



