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

业务流.二开案例.上下查、全流程跟踪列表按照整单显示

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

业务流.二开案例.上下查、全流程跟踪列表按照整单显示

【场景】上下查、全流程跟踪只会显示和当前流程有关的分录行数据,假设上游单据有5行分录,仅下推了1行分录到下游,最终在下游上查、全流程跟踪只会显示和此单有关系的数据,上游单据只会显示1行分录(按分录过滤) 存在客户场景需要按照整单显示上游单据 【案例】插件二开,采购申请单下推采购订单,采购订单上查时,支持显示采购申请单的整单 <0>数据准备 ![Image_20230110214610.webp](/download/0100e0d87981381949ffa1666ac1bf3c7a5f.webp) ![Image_20230110214630.webp](/download/010092067b0f75314cdb92c3411cddea5131.webp) <1>验证上查、全流程,仅显示一行分录 ![Image_20230110214726.webp](/download/0100c7d2d5ba379448eea8e637b97ff2cf85.webp) ![Image_20230110215128.webp](/download/0100b0f256c70f974d07937a65bdd5d19140.webp) <2>增加菜单【显示整单】 ![Image_20230110214917.webp](/download/01005e7a86e29ef649b88c112bdb1b954329.webp) ```csharp using Kingdee.BOS; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.List.PlugIn; using Kingdee.BOS.Core.List.PlugIn.Args; using Kingdee.BOS.Core.Metadata.FormElement; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using System; using System.Collections.Generic; using System.Linq; namespace DynamicFormPlugIn.BillConvert { [Kingdee.BOS.Util.HotUpdate] [System.ComponentModel.Description("全流程跟踪列表按照整单显示")] public class BusinessFlowTrackListPlugIn : AbstractListPlugIn { private bool isShowBillByFilter = false; private List<object> billIds = new List<object>(); public override void AfterCreateSqlBuilderParameter(SqlBuilderParameterArgs e) { base.AfterCreateSqlBuilderParameter(e); if (isShowBillByFilter) { PrepareBillIds(); PrepareSelectBillFilter(e); } isShowBillByFilter = false; } /// <summary> /// 准备关联的单据内码 /// </summary> private void PrepareBillIds() { /* * 根据过滤方案获取所有内码集合 */ DynamicObjectCollection rows = this.ListView.Model.GetPKData(); billIds.Clear(); foreach(var row in rows) { billIds.Add(row[0]); } } /// <summary> /// 重置查询,改为按照单据内码整单返回 /// </summary> /// <param name="e"></param> private void PrepareSelectBillFilter(SqlBuilderParameterArgs e) { //重置联查表 e.sqlBuilderParameter.ExtJoinTables.Clear(); e.sqlBuilderParameter.SqlParams.Clear(); if (billIds.Count == 0) { e.sqlBuilderParameter.FilterClauseWihtKey = "1=0"; return; } Form form = this.ListView.BillBusinessInfo.GetForm(); var pkFieldType = form.PkFieldType; var isIntPk = pkFieldType == EnumPkFieldType.INT || pkFieldType == EnumPkFieldType.LONG; if (billIds.Count == 1) { e.sqlBuilderParameter.FilterClauseWihtKey = string.Format("{0}={1}", form.PkFieldName, isIntPk ? billIds[0] : string.Format("'{0}'", billIds[0])); } if (billIds.Count <= 20) { e.sqlBuilderParameter.FilterClauseWihtKey = string.Format("{0} in ({1})", form.PkFieldName, isIntPk ? string.Join(",", billIds) : string.Join(",", billIds.Select(x => string.Format("'{0}'", x).ToList()))); } //关联内码多时使用表变量联查 e.sqlBuilderParameter.FilterClauseWihtKey = string.Empty; var distinctIds = billIds.Distinct().ToList(); string tableName; var tableNameAs = string.Format("TEPFIDS_{0}", StringUtils.GetRandomString()); var paramName = string.Format("@KDFIDS_{0}", StringUtils.GetRandomString()); tableName = StringUtils.GetSqlWithCardinality(distinctIds.Count, paramName, isIntPk ? 1 : 2); var joinTable1 = new ExtJoinTableDescription { TableName = tableName, JoinOption = QueryBuilderParemeter.JoinOption.InnerJoin, TableNameAs = tableNameAs, FieldName = "FID", ScourceKey = form.PkFieldName }; Kingdee.BOS.SqlParam sqlParam = new Kingdee.BOS.SqlParam(paramName, isIntPk ? KDDbType.udt_inttable : KDDbType.udt_varchartable, distinctIds.ToArray()); e.sqlBuilderParameter.ExtJoinTables.Add(jo

业务流.二开案例.上下查、全流程跟踪列表按照整单显示

【场景】上下查、全流程跟踪只会显示和当前流程有关的分录行数据,假设上游单据有5行分录,仅下推了1行分录到下游,最终在下游上查、全流程...
点击下载文档文档为doc格式

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

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