二开案例.单据插件.工作流提交

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.单据插件.工作流提交

【应用场景】

模拟在单据界面上,提交单据并启动工作流。



【案例演示】

币别,新增菜单【工作流提交】tbBillSubmit,点击后,根据当前单据的工作流配置,执行提交操作。



【实现步骤】

<1>编写单据插件,代码如下。

using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.BOS.Workflow.Models.EnumStatus;
using Kingdee.BOS.Workflow.Models.Template;
using Kingdee.BOS.Workflow.ServiceHelper;
using System.ComponentModel;
using System.Linq;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【单据插件】工作流提交
    /// </summary>
    [Description("【单据插件】工作流提交"), HotUpdate]
    public class WorkflowBillSubmitPlugIn : AbstractBillPlugIn
    {
        public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            if (e.BarItemKey.EqualsIgnoreCase("tbBillSubmit"))
            {
                BillSubmit();
            }
        }
        private void BillSubmit()
        {
            var formId = this.View.BillBusinessInfo.GetForm().Id;
            var submitOperation = this.View.BillBusinessInfo.GetForm().FormOperations.FirstOrDefault(o => o.OperationId == 9);
            if (submitOperation == null)
            {
                return;
            }
            var ids = new[] { this.Model.DataObject[0] };
            var billStatus = ObjectUtils.Object2String(this.View.BillBusinessInfo.GetBillStatusField().DynamicProperty.GetValue(this.Model.DataObject));
            if (billStatus != "A" && billStatus != "D")
            {
                // 单据状态异常,无法提交
                return;
            }
            var orgId = this.Context.CurrentOrganizationInfo.ID; // 有主业务组织,取主业务组织,没有主业务组织,取当前登录组织
            // 获取流程模板类型
            var wfTemplatePermissionResult = WorkflowSubmitServiceHelper.ValidatePermission(this.Context, formId, orgId, submitOperation.PermissionItemId);
            if (wfTemplatePermissionResult.TemplateModels.Length > 1)
            {
                // TODO:同时存在工作流模板和审批流模板,请选择模板类型
            }
            var param = new TemplateParameter()
            {
                TemplateModel = wfTemplatePermissionResult.TemplateModels[0],
                BillBusinessInfo = this.View.BillBusinessInfo,
                OriginatorPost = null
            };
            // 获取流程模板
            var findPrcResults = WorkflowSubmitServiceHelper.GetTemplateProcessList(this.View.Context, param, ids);
            var findPrcResult = findPrcResults[0];
            if (findPrcResult.ProcessIdList.Count > 1)
            {
                // TODO:同时存在多个满足条件的流程模板,请选择模板
            }
            if (findPrcResult.Result == TemplateResultType.Normal)
            {
                // 工作流审批
                var result = BOSWorkflowServiceHelper.BillSubmit(this.Model.DataObject, this.Context, findPrcResult.ProcessIdList[0], null, this.View.BillBusinessInfo, null);
                if (result.IsSuccess)
                {
                    this.View.ShowMessage("工作流提交成功(工作流启动成功)!");
                }
                // TODO
                return;
            }
            else if (findPrcResult.Result == TemplateResultType.OnlySubmit)
            {
                // 传统审批,直接提交
                var result = BusinessDataServiceHelper.Submit(this.Context, this.View.BillBusinessInfo, ids, "");
                if (result.IsSuccess)
                {
                    this.View.ShowMessage("普通提交成功!");
                }
                // TODO
                return;
            }
        }
    }
}


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。



<3>BOSIDE扩展币别,注册表单插件,保存元数据,开发完毕。



【功能验证】

打开币别列表,新增币别,点击菜单【工作流提交】,工作流启动成功。

上传图片


---------------------------------------------------------------------------------------------------------













【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.单据插件.工作流提交

【应用场景】模拟在单据界面上,提交单据并启动工作流。【案例演示】币别,新增菜单【工作流提交】tbBillSubmit,点击后,根据当前单据的工...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息