在插件中重新设置套打的审批路线数据

应用场景描述:打印凭证带出相应单据的审批流。
费用报销单生成的凭证套打时,能获取到费用报销单上的审批信息。
引用组件:
Kingdee.BOS.dll
Kingdee.BOS.Core.dll
Kingdee.BOS.Contracts.dll
Kingdee.BOS.DataEntity.dll
Kingdee.BOS.Workflow.Kernel.dll
Kingdee.BOS.Workflow.Models.dll
Kingdee.BOS.Workflow.ServiceHelper.dll
插件源码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Const;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.NotePrint;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.Workflow.ServiceHelper;
using Kingdee.BOS.Workflow.Models.Chart;
using Kingdee.BOS.Workflow.Kernel;
namespace K3Cloud.PlugIn
{
public class WorkflowPrintData : AbstractListPlugIn
{
public override void OnPrepareNotePrintData(PreparePrintDataEventArgs e)
{
base.OnPrepareNotePrintData(e);
if (string.Compare(e.DataSourceId, "workflow.approveLine") == 0)
{
string formId = "ER_ExpReimbursement";//费用报销单
string id = "100586";//费用报销单内码
string procInstId = WorkflowChartServiceHelper.GetProcInstIdByBillInst(this.View.Context, formId, id);// 获取当前流程实例
var data = GetWorkFlowData(procInstId);//获取审批路线
e.DynamicObjectType = data == null ? null : data.DynamicCollectionItemPropertyType;
e.DataObjects = data == null ? null : data.ToArray();//重新构造数据包
}
}
private readonly string[] approveLineFields = { "FActivityName", "FActivityStatu", "FStartActivity", "FTargetActivity", "FActionName", "FReceiverName", "FActionResult", "FDisposition", "FCompletedTime", "FConsignNames" };
private DynamicObjectCollection GetWorkFlowData(string procInstId)
{
if (procInstId.IsNullOrEmptyOrWhiteSpace()) return null;
List<ChartActivityInfo> routeCollection = WorkflowChartServiceHelper.GetProcessRouter(this.View.Context, procInstId);
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;
在插件中重新设置套打的审批路线数据
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



