通过执行计划,定时把无法使用API 调用的报表保存到数据库中(自定义获取报表数据)

using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Log;
using Kingdee.BOS.Model.ReportFilter;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
namespace YDL.K3.Plugins.Server.ISchedule
{
[HotUpdate]
[Description("【执行计划】物料收发明细表保存")]
public class STK_StockDetailRpt : IScheduleService
{
public void Run(Context ctx, Schedule schedule)
{
try
{
Logger.Info("提示:", "开始查询物料收发明细表!");
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();
SysReportFilterModel 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
model.Load("xxxxxxxxxxx");
// 获取当前日期
DateTime now = DateTime.Now;
var filter = model.GetFilterParameter();
DynamicObject filterObj = filter.CustomFilter;
// 开始日期
filterObj["BeginDate"] = new DateTime(now.Year, now.Month, 1).AddMonths(-1);
// 结束日期
filterObj["EndDate"] = new DateTime(now.Year, now.Month, 1).AddMonths(1).AddDays(-1).AddMonths(-1);
//加载创建组织的物料
//var materialDy = cse["MaterialId"] as DynamicObject;
//var mastMaterial = BusinessDataServiceHelper.LoadSingle(ctx, materialDy["msterID"], materialDy.DynamicObjectType);
//filterObj["EndMaterialId"] = mastMaterial;
//filterObj["EndMaterialId_Id"] = mastMaterial["Id"];
//filterObj["BeginMaterialId"] = mastMaterial;
//filterObj["BeginMaterialId_Id"] = mastMaterial["Id"];
filterObj["StockOrgId"] = 101505;//cse["PurchaseOrgId_Id"];
IPermissionService permissionService = ServiceFactory.GetPermissionService(ctx);
IRptParams p = new RptParams();
p.FormId = reportFilterMetadata.BusinessInfo.GetForm().Id;
p.StartRow = 1;
p.EndRow = int.MaxValue;//StartRow和EndRow是报表数据分页的起始行数和截至行数,一般取所有数据,所以EndRow取int最大值。
p.FilterParameter = filter;
p.FilterFieldInfo = model.FilterFieldInfo;
p.CustomParams["OpenParameter"] = null;
p.BaseDataTempTable.AddRange(permissionService.GetBaseDataTempTable(ctx, reportMetadata.Business
通过执行计划,定时把无法使用API 调用的报表保存到数据库中(自定义获取报表数据)
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



