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

套打二开审批路线示例

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

套打二开审批路线示例

需求背景:客户需要打印单据历史的审批路线。

示例说明:提供套打审批路线的二开思路代码。本示例基于表单插件。

using Kingdee.BOS.Core.Bill.PlugIn;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Util;
using Kingdee.BOS.Workflow.ServiceHelper;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.NotePrint;
using Kingdee.BOS.Workflow.Models.Chart;
using Kingdee.BOS.Workflow.Kernel;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.App.Data;

public class WorkFlowNotePrintBillPlugIn : AbstractBillPlugIn
{
   /// 审批路线字段
 private static string[] approveLineFields = { "FActivityName", "FActivityStatu", "FStartActivity", "FTargetActivity", "FActionName", "FReceiverName", "FActionResult", "FDisposition", "FCompletedTime", "FConsignNames" };
        public override void OnPrepareNotePrintData(Core.DynamicForm.PlugIn.Args.PreparePrintDataEventArgs e)
        {
            base.OnPrepareNotePrintData(e);
            if (e.DataSourceId.Contains("workflow."))
            {
                string procDefId = e.DataSourceId.Split('.')[1];
                var newData = GetProcessRouter(procDefId);
                e.DataObjects = newData.ToArray();
            }
        }

  private DynamicObjectCollection GetProcessRouter(string procDefId)
        {
            string formID = this.View.BusinessInfo.GetForm().Id;
            object pkValue = (this.View.Model as IBillModel).GetPKValue();
            //返回这个单据的所有流程实例ID
            List<string> processIds = GetProcInstIdByBillInst(formID, pkValue.ToString());
            //选一个实例ID去打印
            string processID = processIds[0];
            if (procDefId.Equals("approveLine") && !processID.IsNullOrEmpty())
            {
                List<ChartActivityInfo> routeCollection = WorkflowChartServiceHelper.GetProcessRouter(this.View.Context, processID);
                DynamicObjectType approveType = new DynamicObjectType("tempObject");
                RegisterApproveLine(approveType, approveLineFields);
                DynamicObjectCollection ApproveResult = new DynamicObjectCollection(approveType);
                int state;
                string stateDesc;
                List<ApproveRouteInfo> approveRouteInfoList = new List<ApproveRouteInfo>();
                foreach (ChartActivityInfo activityDetail in routeCollection)
                {
                    state = (int)activityDetail.ActivityStateType;
                    if (state == 1 || state == 3)
                    {
                        stateDesc = Kingdee.BOS.Resource.ResManager.LoadKDString("完成", "002426030027703", Kingdee.BOS.Resource.SubSystemType.BOS);
                    }
                    else if (state == 2)
                    {
                        stateDesc = Kingdee.BOS.Resource.ResManager.LoadKDString("当前", "002426030027704", Kingdee.BOS.Resource.SubSystemType.BOS);
                    }
                    else
                    {
                        stateDesc = Kingdee.BOS.Resource.ResManager.LoadKDString("出错", "002426030027705", Kingdee.BOS.Resource.SubSystemType.BOS);
                    }
                    ApproveRouteInfo approveRouteInfoMain = new ApproveRouteInfo();
                    approveRouteInfoMain.ActivityName = activityDetail.ActivityName;
                    approveRouteInfoMain.StatuDesc = stateDesc;
                    approveRouteInfoMain.SourceActivityName = activityDetail.SourceActivityName;
                    approveRouteInfoMain.ActivityName = activityDetail.ActivityName;
                    approveRouteInfoMain.ActivityId = activityDetail.ActivityId;
                    for (int j = 0; j < activityDetail.ActionDetails.Count; j++)
                    //第一次添加审批明细的时候在节点的同一行记录里,剩余的在新增行添加
                    {
                        //已完成节点里面只展现已完成的待办任务信息
                        if (activityDetail.ActivityStateType != MapStateResult.Idled && !activityDetail.ActionDetails[j].IsCompleted)
                        {
                            continue;
                        }
                        ChartActionInfo action = activityDetail.ActionDetails[j];
                        ApproveRouteInfo approveRouteInfo = new ApproveRouteInfo();
                        approveRouteInfo = (ApproveRouteInfo)ObjectUtils.CreateCopy(approveRouteInfoMain);
                        approveRouteInfo.Title = action.Title;
                        approveRouteInfo.ReceiverName = action.ReceiverName;
                        approveRouteInfo.ActionResult = action.ActionResult;
                        approveRouteInfo.DisPosition = action.DisPosition;
                        approveRouteInfo.CompletedTime = action.CompleteTime;
                        approveRouteInfo.ConsignNames = action.ConsignNames;

                        approveRouteInfoList.Add(approveRouteInfo);
                    }
                    if (approveRouteInfoList != null)
                    {
                        List<int> AddedActivityId = new List<int>();
                        foreach (var approveRouteInfo in approveRouteInfoList)
                        {
                            DynamicObject workFl

套打二开审批路线示例

需求背景:客户需要打印单据历史的审批路线。示例说明:提供套打审批路线的二开思路代码。本示例基于表单插件。using Kingdee.BOS.Core.Bi...
点击下载文档文档为doc格式

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

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