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

套打二开打印工作流节点处理人对应的部门示例

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

套打二开打印工作流节点处理人对应的部门示例

第一步:套打模板绑定数据源,先绑定节点的审批意见,然后导出模板,再把审批意见字段名称改成部门(自定义,本例子用FDepartment),修改后后导入模板。截图如下:

第二步:表单插件,本例以表单插件为例,代码如下:

public class NotePrintDepartment : AbstractBillPlugIn

    {

        private string[] activityFields = { "ReceiverNames", "Disposition", "Result", "CompletedTime", "ReceiverESignature", "FDepartment" };

        public override void OnPrepareNotePrintData(Core.DynamicForm.PlugIn.Args.PreparePrintDataEventArgs e)

        {


            base.OnPrepareNotePrintData(e);

            if (e.DataSourceId.Equals("workflow.5534d341bc132e", StringComparison.OrdinalIgnoreCase))

            {

                var aa = GetQueryData(this.View.Model.GetPKValue().ToString(), e.DataSourceId);

                e.DataObjects = aa.ToArray();

                e.DynamicObjectType = aa[0].DynamicObjectType;

            }

        }


        private DynamicObjectCollection GetQueryData(string billId, string dataSourceId)

        {

            string[] dataSourceArgs = dataSourceId.Split('.');

            if (dataSourceArgs.Length < 2)

                return null;

            string procDefId = dataSourceArgs[1];

            return GetWorkFlowData(procDefId, billId);

        }


private DynamicObjectCollection GetWorkFlowData(string procDefId, string billId)

        {

            string formId = this.View.BusinessInfo.GetForm().Id;

            string processId = WorkflowChartServiceHelper.GetProcInstIdByBillInst(Context, formId, billId);

            if (processId.IsNullOrEmptyOrWhiteSpace())

                return null;


            return GetWorkflowData(billId, procDefId, processId);

        }


private DynamicObjectCollection GetWorkflowData(string billId, string procDefId, string processId)

        {

            bool isHisProcInst = WorkflowChartServiceHelper.HasHisProcInst(Context, processId);

            NotePrintProcessInstance[] procInstArray = LoadWorkflowInstance(billId, this.View.BusinessInfo.GetForm().Id, procDefId, isHisProcInst);

            NotePrintProcessInstance procInst = null;

            if (procInstArray == null)

            {

                return null;

            }

            foreach (var ins in procInstArray)

            {

                if (procInst == null)

                {

                    procInst = ins;

                }

                else if (ins.CreateTime > procInst.CreateTime)

                {

                    procInst = ins;

                }

            }


            if (procInst == null)

            {

                return null;

            }

            //支持终止状态的工作流普通节点取数

            var activityIDs = new List<string>();

            foreach (var assign in procInst.Assigns)

            {

                if (!activityIDs.Contains(assign.ActivityId.ToString()))

                {

                    activityIDs.Add(assign.ActivityId.ToString());

                }

            }


DynamicObjectType type = new DynamicObjectType("tempObject");

            foreach (var actId in activityIDs)

            {

                foreach (var actField in activityFields)

                {

                    string key = actId + "_" + actField;

                    string name = "ac_" + key;

                    if (type.Properties.Contains(name) == false)

                    {

                        if (actField.Equals("ReceiverESignature"))

                        {

                            type.RegisterSimpleProperty(

                                name,

                                typeof(byte[]),

                                attributes: new SimplePropertyAttribute() { Alias = key }

                                );

                        }

                        else

                        {

                            type.RegisterSimpleProperty(

                                name,

                                typeof(string),

                                attributes: new SimplePropertyAttribute() { Alias = key }

                                );

                        }

                    }


                }

            }

DynamicObject workFlowDataObj = new DynamicObject(type);

            foreach (var actID in activityIDs)

            {

                NotePrintAssign lastActivityAssign = procInst.GetLastActivityAssign(int.Parse(actID));


                if (lastActivityAssign == null)

                {

                    continue;

                }


                Type t = lastActivityAssign.GetType();


                foreach (var actField in activityFields)

                {

                    foreach (PropertyInfo pi in t.GetProperties())

                    {

                        if (!actField.EqualsIgnoreCase(pi.Name))

                            continue;

                        string propKey = string.Format("ac_{0}_{1}", actID, actField);

                        object value = pi.GetValue(lastActivityAssign, null);

                        if (actField.Equals("ReceiverESignature"))

                            workFlowDataObj[propKey] = value;

                        else

                        {

                            if (value != null)

                            {

                                workFlowDataObj[propKey] = value.ToString();

                            }

                            else

                            {

                                workFlowDataObj[propKey] = string.Empty;

                            }

                        }

                        if (actField == "ReceiverNames")

                        {

                            var receiverIds = lastActivityAssign.ApprovalAssigns[0].ApprovalItems.Select(p => p.ReceiverId).ToArray();

                            workFlowDataObj[string.Format("ac_{0}_FDepartment", actID)] = GetDepartmentByUserIds(receiverIds);

                        }

                    }

                }

            }


DynamicObjectCollection result = new DynamicObjectCollection(type);

            result.Add(workFlowDataObj);

            return result;

        }


private NotePrintProcessInstance[] LoadWorkflowInstanc

套打二开打印工作流节点处理人对应的部门示例

第一步:套打模板绑定数据源,先绑定节点的审批意见,然后导出模板,再把审批意见字段名称改成部门(自定义,本例子用FDepartment),修改...
点击下载文档文档为doc格式

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

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