using Kingdee.BOS.App;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Orm.DataEntity;
using System;
using Kingdee.BOS.Contracts.Report;
using System.ComponentModel;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS;
using System.Collections;
using Kingdee.BOS.Core.Util;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core.List;
using VTR.ZHX.Plugin.Common;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Core.ReportFilter;
using Kingdee.BOS.Model.ReportFilter;
using Kingdee.BOS.Util;
namespace JN.K3.YDL.App.Report
{
[Description("扩展-科目余额表"), HotUpdate]
public class AccountBalanceService : Kingdee.K3.FIN.GL.App.Report.AccountBalanceService
{
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
base.BuilderReportSqlAndTempTable(filter, tableName);
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
//修改参数
int FSTARTPERIOD = Convert.ToInt32(customFilter["STARTPERIOD"]);
int FENDPERIOD = Convert.ToInt32(customFilter["ENDPERIOD"]);
if (FENDPERIOD != FSTARTPERIOD)
{
ISysReportService sysReportService = ServiceFactory.GetSysReportService(this.Context);
IPermissionService permissionService = ServiceFactory.GetPermissionService(this.Context);
var filterMetadata = FormMetaDataCache.GetCachedFilterMetaData(this.Context);
var reportMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, "GL_RPT_AccountBalance");
var reportfilterMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, "GL_RPT_AccountBalanceFilter");//获取报表过滤方案的构建基础,便于后续模型构建
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"), 查询报表默认存在的一些过滤方案
//var entity = model.Load(" 62455ed272f00d");//.LoadDefaultScheme();
//var dyn = Deseria1i zeCustomF il ter (reportFi1 terMetadata. BusinessInfo,enti ty.
//mode1. DataObject = dyn;
var filterParameter = model.GetFilterParameter();
//var det = reportFilterlletadata. BusinessInfo. GetDynami cObjectType() ;
//这里填写普通过滤方案,填充实体信息
DynamicObject fi1terObj = filterParameter.CustomFilter;
//fi1terObj["ACCTGSYSTEMID"] = getDynamicObject("0rg_ AccountSystem" ,ACCTGSYSTEMID, ctx);//默认会计核算体系
////fi1ter0bj["STARTDATE"] = null;
////fi1terObj["EndDate"] = nul1;
//fi1terObj["ACCTGSYSTEMID_ Id"] = ACCTGSYSTEMID;
//fi1terObj["ACCTGORGID_ Id"] = ACCTGORGID; //核算组织
//fi1terObj[" ACCTGORGID"] = getDynami cObject("0RG_ _Organizations' ,ACCTGORGID, ctx);
//fi1terObj["ACCTPOLICYID_ Id"] = ACCTP0LICYID; //会计政策
//fi1terObj["ACCTPOLICYID"] = getDynami cObject("BD_ ACCTPOLICY", ACCTPOLICYID, ctx);
////fi1ter0bj ["FCURRENCYID_ Id"] = currency;
////fi1ter0bj["FCURRENCYID"] = getDynami cObject(' 'BD_ Currency",currency, ctx) ;
//fi1terObj["Year"] = year;
//fi1terObj["Period"] = period;
//fi1terObj["ENDYEAR"] = endYear;
//fi1terObj["EndPeriod"] = endPeriod;
//fi1terObj["FDimType"] =“0”; //显示维度
//fi1terObj["CHXEXPENSE"] = "true";//显示费用项目明细
//DynamicObject dyllatria1ID = getDynami cObject("BD_ JMATERIAL", FromMateria1ID, ctx);
//fi1terObj["MATERIALID_ Id"] = FromMateria1ID; //物料编码从
//fi1terObj["MATERIALID"] = dyllatria1ID; //物料编码从
//fi1terObj["ENDIATERIALID_ Id"] = Fromlateria1ID;//物料编码至
//fi1terObj["ENDMATERIALID"] = dyllatria1ID;//物料编码 至
//RptParams rptParams = new RptParams();
//rptParams.FormId = "";
//rptParams.EndRow = -1;
//rptParams.StartRow = 0;
//rptParams.FilterParameter = filterParameter;
////报表服务参数,用于查询。分页报表
//MoveReportServiceParameter reportServiceParam = new MoveReportServiceParameter(this.Context, reportMetadata.BusinessInfo, Guid.NewGuid().ToString(), rptParams);
//var presult = sysReportService.GetListAndReportData(reportServiceParam);
for (int i = FSTARTPERIOD; i <= FENDPERIOD; i++)
{
customFilter["STARTPERIOD"] = i;
customFilter["ENDPERIOD"] = i;
ReportServiceParameter reportServiceParam2 = new ReportServiceParameter();
reportServiceParam2.RptFilterParams = filter;
reportServiceParam2.Context = this.Context;
reportServiceParam2.PageId = Guid.NewGuid().ToString();
reportServiceParam2.BusinessInfo = reportMetadata.BusinessInfo;
//调用服务、查询报表,简单账表 resut1.DataSource就是我们需要的DatTable了
var result3 = sysReportService.GetReportData(reportServiceParam2);
var dt = result3.DataSource;
//var result2 = sysReporSservice.GetData(ctx,reporletadata. BusinessInfo, p, true) ;
//var result3 = sysReporSservice.GetReportData(reportServiceParam2) ;
//var resu1t4 = sysReporSservice.GetExportData(reportServiceParam2) ; .
}
customFilter["STARTPERIOD"] = FSTARTPERIOD;
customFilter["ENDPERIOD"] = FENDPERIOD;
}
}
}
}