电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

【套打】调整工作流指定节点的处理意见输出效果

来源:金蝶云社区作者:金蝶2024-09-232

【套打】调整工作流指定节点的处理意见输出效果

<0>背景

套打中只能取到审批人和审批意见两个字段,所以在打印预览时不能分清加签人对应的意见,想知道有没有办法实现审批人和审批意见对应显示。


<1>套打工作流相关逻辑

【套打】套打中审批路线、流程节点二开指南

针对指定节点,为多个审批子项时,调整处理意见输出为

{处理人1}:{处理人1.意见}\r\n{处理人2}:{处理人2.意见}……

效果:

image.webp


实现通过表单插件干预套打数据包调整处理意见的值:

image.webp

image.webp

image.webp


附:

using System.ComponentModel;

using System.Linq;

using System.Text;

using Kingdee.BOS.Core.DynamicForm.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Core.SqlBuilder;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.BOS.Util;

using Kingdee.BOS.Workflow.Model;

using Kingdee.BOS.Workflow.Models.EnumStatus;

using Kingdee.BOS.Workflow.Models.NotePrint;

using Kingdee.BOS.Workflow.ServiceHelper;


namespace NotePrintPlugin.Sample

{

    [Kingdee.BOS.Util.HotUpdate]

    [Description("套打流程节点数据干预示例")]

    public class HandleWorlFlowProcessNode : AbstractDynamicFormPlugIn

    {

        /*

         * 修改指定流程的指定节点的会签节点的处理意见

         * 显示为 {处理人1}:{处理人1.意见}\r\n{处理人2}:{处理人2.意见}……

         */


        /// <summary>

        /// 目标流程模板Id

        /// </summary>

        private static readonly string TargetProcDefId = "5d636c8ab0442e";


        /// <summary>

        /// 目标流程节点Id

        /// </summary>

        private static int TargetProcessNodeId = 66;


        public override void OnPrepareNotePrintData(PreparePrintDataEventArgs e)

        {

            if (e.DataObjects == null || e.DataObjects.Length <= 0 || e.DataObjects[0] == null)

                return;

            //工作流数据源默认以workflow作为数据源前缀

            if (!e.DataSourceId.StartsWith("workflow."))

                return;

            string workflowBillId = e.BillIds.FirstOrDefault();

            if (workflowBillId.IsNullOrEmptyOrWhiteSpace())

                return;

            string[] dataSourceArgs = e.DataSourceId.Split('.');

            if (dataSourceArgs.Length < 2)

                return;

            //流程设计Id,判断是审批路线取数还是流程节点取数

            string procDefId = dataSourceArgs[1];

            if (procDefId.Equals("approveLine"))

            {

                //审批路线取数

                return;

            }

            if (!procDefId.EqualsIgnoreCase(TargetProcDefId))

            {

                //仅修改指定流程的工作流数据

                return;

            }

            //流程节点取数

            //干预流程节点取数存在两种处理:

            //<1>利用数据包结构进行内容调整(这个本质上和套打干预数据包结构的实现一致,不做演示)

            //<2>根据工作流取数逻辑,调整部分套打结果

            //示例:修改节点66(审批节点2,)的处理意见

            string targetPropKey = string.Format("ac_{0}_{1}", TargetProcessNodeId, "Disposition");

            DynamicObject workflowProcessObj = e.DataObjects[0];

            //提前判断,如果数据包中没有对应节点数据,那么工作流也应该没有对应节点数据,没必要再做数据处理

            if (!workflowProcessObj.DynamicObjectType.Properties.ContainsKey(targetPropKey))

                return;


            NotePrintProcessInstance procInst = GetCurProcessInstanceByBillId(workflowBillId);

            if (procInst == null)

                return;

            //获取最后一次运行的节点任务

            NotePrintAssign assign = procInst.GetLastActivityAssign(66);

            if (assign == null || assign.ApprovalAssigns == null || assign.ApprovalAssigns.Count == 0 ||

                assign.ApprovalAssigns[0] == null)

                return;

            //按处理时间升序排序

            var approvalItemsOrderByCompletedTime =

                new DynamicObjectViewCollection<NotePrintApprovalItem>(

                    assign.ApprovalAssigns[0].ApprovalItems.DynamicObjects);

            approvalItemsOrderByCompletedTime.Sort(x => x.Comple

【套打】调整工作流指定节点的处理意见输出效果

<0>背景套打中只能取到审批人和审批意见两个字段,所以在打印预览时不能分清加签人对应的意见,想知道有没有办法实现审批人和审批意见对应...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信