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

插件案例 —— 换个思维查系统报表

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

插件案例 —— 换个思维查系统报表

业务背景

有的时候,需要查询通版的报表,但是有些业务取数逻辑,挺复杂的。通常我们的做法可能是查找对应的报表取数逻辑,然后把取数逻辑罗列出来,然后根据自己的业务查询,但是可以换个思路,从底层查询报表。这里需要一定的代码抽象思维。


技术思路

对于BOS来说,所有的报表就只是一张DataTable,然后根据DataTbale进行渲染,分页等内容。那么就存在一个通用的GetData方法,这些方法就由抽象插件来进行实现,并让派生类进行实现。那么我们查询通版报表,就可以直接调用BOS的查询代码,触发业务过滤方案,等内容。


代码示例


                 
            //获取基本元数据信息
            var filterMetadata = FormMetaDataCache.GetCachedFilterMetaData(this.Context);
            var reportMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, "报表FormId");
            var reportFilterMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, "报表过滤方案FormId");
            //获取报表过滤方案的构建基础,便于后续模型构建
            var reportFilterServiceProvider = reportFilterMetadata.BusinessInfo.GetForm().GetFormServiceProvider();
            var model = new SysReportFilterModel();
            model.SetContext(this.Context, reportFilterMetadata.BusinessInfo, reportFilterServiceProvider);
            model.FormId = reportFilterMetadata.BusinessInfo.GetForm().Id;
            model.FilterObject.FilterMetaData = filterMetadata;
            model.InitFieldList(reportMetadata, reportFilterMetadata);
            model.GetSchemeList();
            //获取过滤方案,可以通过LoadScheme("Id"),查询报表默认存在的一些过滤方案
            model.LoadDefaultScheme();
            var filter = model.GetFilterParameter();
            var det = reportFilterMetadata.BusinessInfo.GetDynamicObjectType();

            //这里填写普通过滤方案,填充实体信息
            DynamicObject filterObj = filter.CustomFilter;
            filterObj["StockOrgId"] = qpovOrgId;
            filterObj["BeginDate"] = qpovDate;
            filterObj["EndDate"] = qpovDate;
            filterObj["BeginStockId_Id"] = qpovStockId;
            filterObj["BeginStockId"] = qpovStock;
          

插件案例 —— 换个思维查系统报表

业务背景有的时候,需要查询通版的报表,但是有些业务取数逻辑,挺复杂的。通常我们的做法可能是查找对应的报表取数逻辑,然后把取数逻辑罗...
点击下载文档文档为doc格式

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

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