WebAPI自定义接口获取报表数据

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

WebAPI自定义接口获取报表数据

## WebAPI自定义接口获取报表数据 ### 一、提问: 想要开发自定义物料收发明细报表接口,供第三方调用,难点:1、需要知道报表数据抓取的范例或者逻辑?2、后台找不到物料收发明细表的表名,应该怎么取呢?3、想查询具体条件如组织、物料的报表数据,这个物料收发明细的数据如何取? 通过多个论坛文章参考: 1、在插件中获取分页账表数据:https://wenku.my7c.com/article/98475029272558848?productLineId=1&isKnowledge=2 2、WebAPI自定义接口调用报表数据:https://wenku.my7c.com/article/25709?productLineId=1 3、分页账表封装自定义WebApi接口供第三方系统调用示例:https://wenku.my7c.com/article/273824919174636288?productLineId=1 最后结合自己实际开发接口后,实现如下: ### 二、实现 ``` var ctx = this.KDContext.Session.AppContext; //库存组织 string FStockOrgId = jObject["FStockOrgId"].ToString(); //起始日期 2022-6-15 string FBeginDate = jObject["FBeginDate"].ToString(); //结束日期 2022-6-15 string FEndDate = jObject["FEndDate"].ToString(); //是否包含禁用物料 bool FShowForbidMaterial = Convert.ToBoolean(jObject["FShowForbidMaterial"].ToString()); //库存状态是否包含在途 bool FStockStatus = Convert.ToBoolean(jObject["FStockStatus"].ToString()); ISysReportService sysReporSservice = ServiceFactory.GetSysReportService(ctx); var filterMetadata = FormMetaDataCache.GetCachedFilterMetaData(ctx);//加载字段比较条件元数据。 var reportMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, "STK_StockDetailRpt");//加载报表 var reportFilterMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, "STK_StockDetailFilter");//加载报表过滤条件元数据。 var reportFilterServiceProvider = reportFilterMetadata.BusinessInfo.GetForm().GetFormServiceProvider(); var model = new SysReportFilterModel(); model.SetContext(ctx, reportFilterMetadata.BusinessInfo, reportFilterServiceProvider); model.FormId = reportFilterMetadata.BusinessInfo.GetForm().Id; model.FilterObject.FilterMetaData = filterMetadata; model.InitFieldList(reportMetadata, reportFilterMetadata); model.GetSchemeList(); //查询默认过滤方案id string Sql = "SELECT fschemeid FROM T_BAS_FILTERSCHEME where fformid='STK_StockDetailRpt' and fschemename='Default Scheme'"; string fschemeid = ""; using (IDataReader reader = DBServiceHelper.ExecuteReader(ctx, Sql)) { if (reader.Read()) { fschemeid = reader["fschemeid"].ToString(); } } if (string.IsNullOrEmpty(fschemeid)) { return "过滤方案为空,请配置物料收发存明细表的过滤方案!"; } //过滤方案的主键值,可通过该SQL语句查询得到:SELECT * FROM T_BAS_FILTERSCHEME //var entity = model.Load("62a859a944add8"); var entity = model.Load(fschemeid); //查询组织id string sd = string.Format(@"/*dialect*/ select FORGID from T_ORG_Organizations where FNUMBER='{0}'", FStockOrgId); DataTable dp = DBServiceHelper.ExecuteDataSet(ctx, sd).Tables[0]; long ForgId = dp.Rows[0][0] == null ? 0 : Convert.ToInt64(dp.Rows[0][0]); //赋值过滤方案条件 var filterParam = model.GetFilterParameter(); filterParam.CustomFilter["StockOrgId"] = ForgId; filterParam.CustomFilter["BeginDate"] = FBeginDate; filterParam.CustomFilter["EndDate"] = FEndDate; filterParam.CustomFilter["ShowForbidMaterial"] = FShowForbidMaterial; IRptParams p = new RptParams(); p.FormId = reportFilterMetadata.BusinessInfo.GetForm().Id; //StartRow和EndRow是报表数据分页的起始行数和截至行数,一般取所有数据,所以EndRow取int最大值。 p.StartRow = 1; p.EndRow = int.MaxValue; p.FilterParameter = filterParam; p.FilterFieldInfo = model.FilterFieldInfo; p.CustomParams.Add("OpenParameter", "");//此参数不能缺少,即使为空也要保留 MoveReportServiceParameter param = new MoveReportServiceParameter(ctx, reportMetadata.BusinessInfo, Guid.NewGuid().ToString(), p); var rpt = sysReporSservice.GetListAndReportData(param);//简单账表使用GetReportData方法 System.Data.DataTable dt = new System.Data.DataTable(); IsoDateTimeConverter timeConverter = new IsoDateTimeConverter(); timeConverter.DateTimeFormat = "yyyy-MM-dd HH:mm:ss"; DataTable dy = rpt.DataSource; if (dy == null) { return "提示:当前查询条件下无返回数据!"; } string listHead = JsonConvert.SerializeObject(dy, timeConverter, new DataTableConverter()); return listHead; ```

mark

WebAPI自定义接口获取报表数据

## WebAPI自定义接口获取报表数据### 一、提问:想要开发自定义物料收发明细报表接口,供第三方调用,难点:1、需要知道报表数据抓取的范...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息