套打二开实现审批路线处理人用户账号的打印
金蝶云社区-天冥异
天冥异
3人赞赏了该文章 982次浏览 未经作者许可,禁止转载编辑于2018年08月02日 20:25:54

目前审批路线处理人节点打印出来是“用户名称”,如果打印“用户账号”可以二开处理。

目前审批路线处理人节点打印出来是“用户名称”,如果打印“用户账号”可以二开处理。

二开插件参考代码:
  1. using System;

  2. using System.Collections.Generic;

  3. using Kingdee.BOS.Core.Bill.PlugIn;

  4. using Kingdee.BOS.Orm.DataEntity;

  5. using Kingdee.BOS.Orm.Metadata.DataEntity;

  6. using System.Data;

  7. using Kingdee.BOS.App.Data;


  8. namespace PrintPlugInTest

  9. {

  10.     public class TestPrintPlugin1 : AbstractBillPlugIn

  11.     {


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

  13.         {

  14.             if (e.DataSourceId.Equals("workflow.approveLine", StringComparison.OrdinalIgnoreCase))

  15.             {

  16.                 DynamicObject billObj = this.Model.DataObject;


  17.                 string sql = "/*dialect*/select t.fuseraccount, t.fname  from T_SEC_USER t";

  18.                 DataSet dataset = DBUtils.ExecuteDataSet(this.Context, sql);

  19.                 Dictionary<string, string> myDictionary = new Dictionary<string, string>();

  20.                 foreach (DataTable dtt in dataset.Tables)

  21.                 {

  22.                     for (int i = 0; i < dtt.Rows.Count; i++)

  23.                     {

  24.                         try

  25.                         {

  26.                             myDictionary.Add(dtt.Rows[i]["FNAME"].ToString(), dtt.Rows[i]["FUSERACCOUNT"].ToString());

  27.                         }

  28.                         catch (Exception ex)

  29.                         {

  30.                             //log

  31.                         }

  32.                     }

  33.                 }


  34.                 //注册临时字段

  35.                 DynamicObjectType dt = e.DynamicObjectType;

  36.                 dt.RegisterSimpleProperty(

  37.                         "ac_approve_FReceiverAccount",

  38.                         typeof(string),

  39.                         attributes: new SimplePropertyAttribute() { Alias = "ac_approve_FReceiverAccount" }

  40.                         );

  41.                 List<DynamicObject> notePrintEntryRows = new List<DynamicObject>();

  42.                 foreach (DynamicObject obj in e.DataObjects)

  43.                 {

  44.                     DynamicObject doo = new DynamicObject(dt);

  45.                     doo["ac_approve_FActivityName"] = obj["ac_approve_FActivityName"];

  46.                     doo["ac_approve_FActivityStatu"] = obj["ac_approve_FActivityStatu"];

  47.                     doo["ac_approve_FStartActivity"] = obj["ac_approve_FStartActivity"];

  48.                     doo["ac_approve_FTargetActivity"] = obj["ac_approve_FTargetActivity"];

  49.                     doo["ac_approve_FActionName"] = obj["ac_approve_FActionName"];

  50.                     doo["ac_approve_FReceiverName"] = obj["ac_approve_FReceiverName"];

  51.                     doo["ac_approve_FActionResult"] = obj["ac_approve_FActionResult"];

  52.                     doo["ac_approve_FDisposition"] = obj["ac_approve_FDisposition"];

  53.                     doo["ac_approve_FCompletedTime"] = obj["ac_approve_FCompletedTime"];

  54.                     doo["ac_approve_FConsignNames"] = obj["ac_approve_FConsignNames"];

  55.                

  56.                     //修改一般字段值

  57.                     if (obj.DynamicObjectType.Properties.ContainsKey("ac_approve_FReceiverName"))

  58.                     {

  59.                         string name = obj["ac_approve_FReceiverName"].ToString();

  60.                         if (myDictionary.ContainsKey(name))

  61.                         {

  62.                             string account = myDictionary[name];

  63.                             doo["ac_approve_FReceiverAccount"] = account;

  64.                         }


  65.                     }

  66.                     notePrintEntryRows.Add(doo);

  67.                 }

  68.                 e.DataObjects = notePrintEntryRows.ToArray();

  69.             }


  70.             base.OnPrepareNotePrintData(e);


  71.         }


  72.     }

  73. }


复制代码

套打模板设置,通过GetValue取二开代码里面注册的动态字段的值:


打印预览效果:


赞 3