分享
分销 收藏 举报 申诉 / 49
播放页_导航下方通栏广告

类型账表服务取数插件示例代码.docx

  • 上传人:pc****0
  • 文档编号:8938985
  • 上传时间:2025-03-08
  • 格式:DOCX
  • 页数:49
  • 大小:473.66KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    服务 插件 示例 代码
    资源描述:
    账表(服务取数)插件示例代码 修订记录 Ver. No 日期 编制\修订 校对 批准 修改的章节号 V1.0 20150415 杨兵 张晋博 刘兵 赖碧云 初始版本 问题和意见 如果你对文档有任何意见、问题或想法,或者你的问题未在此文档中找到答案,请通过电子邮件联系我们 jinbo_zhang@ 目录 账表(服务取数)插件示例代码 1 账表(服务取数)插件概要说明 4 如何创建账表服务插件 6 如何启用账表服务插件 8 公共属性 9 BusinessInfo 9 Context 10 DctSpecialTempSumTable 10 DynamicHeader 10 ReportHeader 10 ReportId 10 ReportProperty 10 ReportTitles 10 SummarySpecialFields 11 TempTableNameList 11 分页账表特有属性 11 CurrentListPosition 11 CacheMapTempTableNameList 11 CacheDataList 11 树形账表特有属性 11 CurrentGroupID 11 事件 12 Initialize 12 案例 – 销售订单执行汇总表账表取数插件初始化 12 GetData 17 GetTableName 17 BuilderReportSqlAndTempTable 17 案例 – 销售订单执行汇总表账表取数 17 BuilderSelectFieldSQL 19 案例 – 核算错误记录账表取数 20 BuilderTempTableOrderBySQL 21 BuilderFromWhereSQL 21 案例 – 核算错误记录账表取数 22 GetIdentityFieldIndexSQL 24 ExecuteBatch 25 GetReportHeaders 25 案例 – 应付款账龄分析表构建列头信息 25 GetReportTitles 29 案例 – 销售订单执行汇总表账表表头信息 30 AnalyzeDspCloumn 35 AfterCreateTempTable 35 GetReportData 35 案例 – 供应商供货汇总表取数 36 GetRowsCount 37 案例 – 库存台账分页账表获取当前页数据行数 38 GetSummaryData 40 GetSummaryColumnInfo 40 案例 – 销售订单执行汇总表分组汇总字段信息 40 GetSummaryColumsSQL 43 案例 – 销售订单执行汇总表分组汇总SQL指令 43 CloseReport 45 案例 – 供货商供货汇总表关闭时,清除临时表 46 GetList 47 GetTreeNodes 49 账表(服务取数)插件概要说明 账表的服务端取数插件,是通过插件组装账表取数Sql指令,把取数结果返回给平台账表引擎,平台将取数结果绑定到账表页面的过程,简单说,平台在账表开发过程中,只负责把插件取到的账表数据绑定到设计好的账表模型上,取数逻辑由账表服务端插件完成 开发过程中,有几个重要模型 1、 设计账表模型 a) 账表表头字段 b) 账表表体字段(也说成账表列头字段) 2、 设计账表过滤模型 a) 自定义快捷过滤面板 b) 高级过滤条件面板 c) 排序面板 d) 分组汇总面板 e) 显示隐藏列面板 账表根据使用场景,分为简单账表、树形账表、分页账表、简单Sql账表 简单Sql账表没有服务取数插件 所有账表都须实现的重要事件 1、 Initialize 2、 BuilderSelectFieldSQL 3、 BuilderFromWhereSQL 4、 BuilderReportSqlAndTempTable 5、 GetReportTitles 6、 GetReportHeaders 7、 GetSummaryColumnInfo 分页账表特点: 与简单账表区别在于,分页账表通过导航按钮切换帐表内容 分页账表基本原理说明: Ø 需要提供用于导航的结果集,如下图中以语言标识为导航结果集(实现GetList方法) Ø 显示数据需要按照导航结果过滤(实现BuilderReportSqlAndTempTable方法) 树形账表特点: Ø 树形账表通过树节点切换账表内容 树形账表基本原理说明: Ø 需要提供用于导航树形结果集(List<TreeNode>),如下图中以语言标识为树形结果集(实现GetTreeNodes方法) Ø 显示数据需要按照树节点结果过滤(实现BuilderReportSqlAndTempTable方法,使用CurrentGroupID重要属性作过滤条件) 如何创建账表服务插件 Ø 创建插件类库工程 Ø 插件类库引用BOS平台组件(被引用组件在Cloud网站website\bin目录下) Ø 修改插件类库编译输出路径为website\bin(右键插件类库,选择属性) Ø 修改类文件继承基类,并引用基类所在命名空间 如何启用账表服务插件 插件编写完毕,类库编译通过后 进入BOS设计器,打开对应账表模型,配置账表服务插件: 公共属性 BusinessInfo 账表模型的元数据描述信息 Context 当前登录系统的上下文信息,如数据库连接信息,当前登录操作员信息等 DctSpecialTempSumTable 临时汇总数据表格 DynamicHeader 动态列头 ReportHeader 账表列头 ReportId 当前账表模型唯一标示 ReportProperty Ø 账表属性,包含账表开发过程中的全局信息 Ø 其重要属性说明: 属性名 描述 ReportType 账表类型(默认是简单账表、如果开发的是分页或树形帐表,请在账表插件初始化事件中,对此属性进行正确赋值,否则账表引擎会默认按简单账表处理页面) IsGroupSummary 是否支持分组汇总 IsUIDesignerColumns 账表列头是否是通过BOSIDE设计 SimpleAllCols 是否锁定账表表格列 DecimalControlFieldList 精度控制字段信息 DspInsteadColumnsInfo 列表格式化列,指示Key列被Value列内容替代 GroupSummaryInfoData 分组汇总信息 ReportTitles 账表表头字段信息 SummarySpecialFields 汇总字段信息 TempTableNameList 临时表列表 分页账表特有属性 CurrentListPosition 分页账表属性 分页账表当前页账表数据对象的位置信息,此属性与CacheMapTempTableNameList属性一起使用 CacheMapTempTableNameList 分页账表属性 记录分页账表每页账表数据对象信息,此属性与CurrentListPosition属性一起使用 CacheDataList 分页账表属性 根据账表当前页位置,获取DataRow对象 树形账表特有属性 CurrentGroupID 树形账表属性 树形账表分组标识,点击树形账表左边树时,由平台账表引擎为其赋值,其数据来源于账表插件GetTreeNodes方法返回的树节点id属性的值,对应树形账表插件在BuilderReportSqlAndTempTable方法拼接账表取数sql时,需要以CurrentGroupID作为过滤条件拼接到Sql指令的Where部分 事件 Initialize 触发时机 账表View初始化,开始初始化账表服务取数插件代理对象时 应用场景 此时账表插件基类已完成账表属性对象(ReportProperty)的创建工作 关键字 初始化 备注 一般账表插件在此事件中,对刚创建的ReportProperty做进一步初始化 案例 – 销售订单执行汇总表账表取数插件初始化 代码来源 Kingdee.K3.SCM.App.Sal.Report.SalCollectRpt 需求背景 销售订单执行汇总表初始化时,进一步初始化账表属性对象 1、 账表属性的报表类型、报表名称 2、 由于是汇总表,配置其明细表模型唯一标示和唯一标示一张明显表的字段信息(双击汇总表一行记录时,根据以上信息定位到明细表) 3、 账表属性的列替代显示信息(key:被替代显示的列,value:替代显示的列) 4、 字段精度控制描述信息(即哪个字段的精度被哪个字段所控制) 实现方案 账表服务取数插件初始化时,修改账表属性中的报表名称、明细表属性、替代显示列信息、字段精度控制信息等 示例代码 C#   using System; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.BOS.Contracts.Report; using Kingdee.BOS.Core.Report; using Kingdee.BOS; using Kingdee.BOS.Core.List; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Contracts; using Kingdee.K3.SCM.Sal.Report.PlugIn; using System.Collections; using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Core; using Kingdee.BOS.Core.Util; using Kingdee.BOS.Util; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Permission; using Kingdee.BOS.App.Core.BusinessFlow; using Kingdee.K3.Core; using Kingdee.BOS.Core.BusinessFlow.ServiceArgs; using Kingdee.BOS.BusinessEntity.BusinessFlow; using System.Data; using Kingdee.BOS.Core.Permission.Objects; using Kingdee.BOS.Core.CommonFilter; namespace Kingdee.K3.SCM.App.Sal.Report { /// <summary> /// 销售汇总表数据源插件 /// </summary> public class SalCollectRpt : SysReportBaseService { public override void Initialize() { base.Initialize(); this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL; this.ReportProperty.ReportName = "销售订单执行汇总表"; this.ReportProperty.DetailReportId = "SAL_DetailReport"; this.ReportProperty.PrimaryKeyFieldName = "FBILLNO"; this.ReportProperty.IsGroupSummary = true; this.ReportProperty.IsUIDesignerColumns = true; //显示替代列this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FSALEORGID", "FSALEORGNAME"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FSALEDEPTID", "FSALEDEPT"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FSALEGROUPID", "FSALEGROUP"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FSALERID", "FSALES"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FMATERIALID", "FMATERIALNUMBER"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FCURRENCYID", "FMONEYTYPE"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FCUSTID", "FCUSTOMERNUMBER"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FMATERIALGROUP", "FMATERIALGROUPNAME"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FAUXPROPID", "FAUXPROP"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FUNITID", "FUNITNAME"); //精度控制 List<DecimalControlField> lstDcf = new List<DecimalControlField>(); DecimalControlField dcf = new DecimalControlField(); //单价 dcf.ByDecimalControlFieldName = "FPRICE";// dcf.DecimalControlFieldName = "FPRICEDIGITS"; lstDcf.Add(dcf); dcf = new DecimalControlField(); //订单 dcf.ByDecimalControlFieldName = "FSOQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FSOAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //发货单 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FSQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FSAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //出库 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FALREADYQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FALREADYAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FNOTQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FNOTAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //退货 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRETURNPQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRETURNPAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //退库 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRETURNSQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRETURNSAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //开票 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FINVOECEQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FNVOECEAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FNINVOECEQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FNNVOECEAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //收款 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRECEIPTAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FNRECEIPTAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //核销金额可能是尾差过小,就不按金额精度处理 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FCHARGEOFFAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //应收 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRECQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRECAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRECNQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRECNAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FWRITEOFFAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); this.ReportProperty.DecimalControlFieldList = lstDcf; } } } GetData 备注 此方法由插件平台报表基类实现,插件不用关注 示例代码 无 GetTableName 备注 此方法由插件平台报表基类实现,插件不用关注 用于创建一张临时表,完成插件账表数据逻辑后,用此表承载账表数据 示例代码 无 BuilderReportSqlAndTempTable 触发时机 正式进入账表取数sql拼接并取数,把账表取数结果放到上一步创建的临时表中 应用场景 开始进行账表sql拼接取数,并把账表取数结果放到上一步创建的临时表中 关键字 账表取数 备注 如果此账表插件设置sql数据逻辑由插件完成(this.IsCreateTempTableByPlugin),即调用BuilderReportSqlAndTempTable接口,否则调用以下3个接口,完成账表取数逻辑的sql指令即:BuilderSelectFieldSQL、BuilderTempTableOrderBySQL、BuilderFormWhereSQL 案例 – 销售订单执行汇总表账表取数 代码来源 Kingdee.K3.SCM.App.Sal.Report.SalCollectRpt 需求背景 销售订单执行汇总表根据账表过滤条件取数 实现方案 账表插件在BuilderReportSqlAndTempTable方法中,完成账表取数并把数据填充到临时表中 示例代码 C#   using System; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.BOS.Contracts.Report; using Kingdee.BOS.Core.Report; using Kingdee.BOS; using Kingdee.BOS.Core.List; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Contracts; using Kingdee.K3.SCM.Sal.Report.PlugIn; using System.Collections; using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Core; using Kingdee.BOS.Core.Util; using Kingdee.BOS.Util; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Permission; using Kingdee.BOS.App.Core.BusinessFlow; using Kingdee.K3.Core; using Kingdee.BOS.Core.BusinessFlow.ServiceArgs; using Kingdee.BOS.BusinessEntity.BusinessFlow; using System.Data; using Kingdee.BOS.Core.Permission.Objects; using Kingdee.BOS.Core.CommonFilter; namespace Kingdee.K3.SCM.App.Sal.Report { /// <summary> /// 销售汇总表数据源插件 /// </summary> public class SalCollectRpt : SysReportBaseService { public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) { ModifyShowHideColumns(ref filter); InitTables();//初始化报表使用的临时表,使用一次即删除 moreFilter = filter.FilterParameter.FilterString.Trim();//高级过滤 this.SetFilter(filter);//设置快捷页签过滤条件 DynamicObject userParameter = filter.ParameterData; if (userParameter != null) { this.onTime = Convert.ToBoolean(userParameter["onTime"]); } DynamicObject dyFilter = filter.FilterParameter.CustomFilter;//快捷页签过滤 if (dyFilter["SaleOrgList"] == null || string.IsNullOrWhiteSpace(dyFilter["SaleOrgList"].ToString())) { SetRptBosTable(tableName); return; } else { this.GetSQLWhere(); //进行过滤快捷页签汇总 List<BaseDataTempTable> listBaseDataTempTable = filter.BaseDataTempTable; // 如果设置了基础资料数据权限,则获取基础资料数据权限隔离的临时表集合 SalRptCommon.GetFilterOrder(this.Context,rptFilterTable, !string.IsNullOrWhiteSpace(moreFilter), creatWhereFirst.ToString(), this.filterOrgList, listBaseDataTempTable, "SAL_CollectReport"); // 添加基础资料数据权限隔离的临时表到待删除临时表集合 foreach (BaseDataTempTable item in listBaseDataTempTable) { deleteTables.Add(item.TempTable);
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:账表服务取数插件示例代码.docx
    链接地址:https://www.zixin.com.cn/doc/8938985.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork