二开案例.表单插件.普通提交和工作流提交

【应用场景】
通过插件的方式,提交单据,控制是否要启动工作流。
【案例演示】
采购订单演示普通提交和工作流提交两种提交操作。
【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Validation;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.BOS.WebApi.FormService;
using Kingdee.BOS.Workflow.ServiceHelper;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】普通提交和工作流提交
/// </summary>
[Description("【表单插件】普通提交和工作流提交"), HotUpdate]
public class WfSubmitFormPlugIn : AbstractDynamicFormPlugIn
{
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey.EqualsIgnoreCase("test1"))
{
// 普通提交(不支持工作流)
var result = Submit(this.Context, this.View.BillBusinessInfo, new[] {this.Model.DataObject});
this.View.ShowOperateResult(result.OperateResult);
return;
}
if (e.BarItemKey.EqualsIgnoreCase("test2"))
{
// 工作流提交(必须配置工作流或者审批流)
var result = WfSubmit(this.Context, this.View.BillBusinessInfo, new[] {this.Model.DataObject});
this.View.ShowOperateResult(result.OperateResult);
return;
}
if (e.BarItemKey.EqualsIgnoreCase("test3"))
{
// 模拟WebApi提交(支持普通提交和工作流提交)
var result = SubmitByWebApi(this.Context, this.View.BillBusinessInfo, new[] {this.Model.DataObject});
this.View.ShowOperateResult(result.OperateResult);
return;
}
}
/// <summary>
/// 普通提交(不支持工作流)
/// </summary>
private IOperationResult Submit(Context ctx, BusinessInfo businessInfo, DynamicObject[] objs)
{
var option = OperateOption.Create();
// 校验
var validateResult = BusinessDataServiceHelper.Validate(ctx, businessInfo, objs, "Submit", Enum_TimingPoint.Submit, option);
if (!validateResult.IsSuccess)
{
// 校验失败
return validateResult;
}
// 提交
option.SetBOSValidateFlag(false);
var pkids = objs.Select(o => o[0]).ToArray();
var submitResult = BusinessDataServiceHelper.Submit(ctx, businessInfo, pkids, "Submit", option);
return submitResult;
}
/// <summary>
/// 工作流提交(必须配置工作流或者审批流)
/// </summary>
private IOperationResult WfSubmit(Context ctx, BusinessInfo businessInfo, DynamicObject[] objs)
{
var option = OperateOption.Create();
// 单据校验
var wfValidateResult = new OperationResult();
foreach (var obj in objs)
{
var id = obj[0].ToString();
if (ProcManageServiceHelper.CheckUnCompletePrcInstExsit(ctx, businessInfo.GetForm().Id, id))
{
wfValidateResult.IsSuccess = false;
wfValidateResult.OperateResult.Add(new OperateResult
{
PKValue = id,
Message = "单据已绑定流程实例,不能进行提交操作!",
Name = obj[businessInfo.GetBillNoField().PropertyName].ToString(),
SuccessStatus = false
});
}
}
if (!wfValidateResult.IsSuccess)
{
return wfValidateResult;
}
// 单据校验
var validateResult = BusinessDataServiceHelper.Validate(ctx, businessInfo, objs, "Submit", Enum_TimingPoint.Submit, option);
if (!validateResult.IsSuccess)
{
// 校验失败
return validateResult;
}
// 提交
option.SetBOSValidateFlag(false);
var pkids = objs.Select(o => o[0].ToString()).ToArray();
// 获取流程模板
var prcList = WorkflowTemplateServiceHelper.GetPrcListByFormID(businessInfo.GetForm().Id, pkids, ctx);
if (prcList.Count == 0)
{
wfValidateResult.IsSuccess = false;
wfValidateResult.OperateResult.Add(new OperateResult
{
PKValue = 0,
Message = "未匹配到流程!",
SuccessStatus = false
});
return wfValid二开案例.表单插件.普通提交和工作流提交
【应用场景】通过插件的方式,提交单据,控制是否要启动工作流。【案例演示】采购订单演示普通提交和工作流提交两种提交操作。【实现步骤】...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



