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

套打.二开案例.自实现套打汇总

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

套打.二开案例.自实现套打汇总

【场景】动态表单等套打,平台不支持汇总管理,仅支持二开实现 【案例】采购订单 二开实现 <0>使用干预数据包接口,准备干预模板ID,干预的实体明细 ![Image_20230209201345.webp](/download/010042e14f9678b44c15b3e7c8e034108dda.webp) <1>挂设表单插件 ![1675947541615.webp](/download/0100cbec65123c774b77b031f79638838032.webp) 核心逻辑,设置分组字段、汇总字段 ![1675947623055.webp](/download/01007c200309050244e094ef6060c104bab3.webp) ```csharp using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DynamicFormPlugIn.NotePrint { public class NotePrintHanlder_GroupData { public List<string> GroupByFields; public List<StatItem> CalcFields; public NotePrintHanlder_GroupData() { GroupByFields = new List<string>(); CalcFields = new List<StatItem>(); } public class StatItem { public string Key; public StatEnum SType; } public enum StatEnum { Default, Sum, StringJoin, } public List<DynamicObject> GroupData(List<DynamicObject> dataObjColl) { if (dataObjColl == null) return dataObjColl; if (GroupByFields == null || !GroupByFields.Any()) return dataObjColl; if (CalcFields == null || !CalcFields.Any()) return dataObjColl; // <0>计算当前行的分组依据,根据分组依据值分组 List<int> groupSeq = new List<int>(); Dictionary<string, List<DynamicObject>> groupData = new Dictionary<string, List<DynamicObject>>(); for (int idx = 0; idx < dataObjColl.Count; ++idx) { DynamicObject dataObject = dataObjColl[idx]; string dataGroupKey = GetGroupKey(dataObject); if (!groupData.ContainsKey(dataGroupKey)) { groupSeq.Add(idx); groupData[dataGroupKey] = new List<DynamicObject>(); } groupData[dataGroupKey].Add(dataObject); } // <1>计算每个分组的汇总后数据包 List<DynamicObject> result = new List<DynamicObject>(); for (int i = 0; i < groupSeq.Count; ++i) { DynamicObject groupObj = dataObjColl[i]; string dataGroupKey = GetGroupKey(groupObj); if (!groupData.ContainsKey(dataGroupKey)) { continue; } var calcObj = CalcDataObj(groupData[dataGroupKey]); result.Add(calcObj); } return result; } /// <summary> /// 计算分组依据 /// </summary> /// <param name="dataObj"></param> /// <returns></returns> private string GetGroupKey(DynamicObject dataObj) { List<string> groupResult = new List<string>(); foreach (var key in GroupByFields) { string itemVal = ObjectUtils.Object2String(dataObj[key]); groupResult.Add(itemVal); } return string.Join(",", groupResult); } /// <summary> /// 计算汇总后数据包 /// </summary> /// <param name="dataObjList"></param> /// <returns></returns> private DynamicObject CalcDataObj(List<DynamicObject> dataObjList) { // <2>按照最后一行返回 var lastRow = dataObjList.LastOrDefault(); if (dataObjList.Count <= 0 || lastRow == null) return null; Dictionary<string, StatItem> calcMap = new Dictionary<string, StatItem>(); foreach (var calcItem in CalcFields) { calcMap[calcIte

套打.二开案例.自实现套打汇总

【场景】动态表单等套打,平台不支持汇总管理,仅支持二开实现【案例】采购订单 二开实现 <0>使用干预数据包接口,准备干预模板ID,干预...
点击下载文档文档为doc格式

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

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