using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Kingdee.BOS; using Kingdee.BOS.App.Data; using Kingdee.BOS.Contracts; using Kingdee.BOS.Contracts.Report; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Report; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; namespace GZ_LTHReportForms.YingShouBaoBiao { [Description("应收情况概况表按(SBU)区分"), HotUpdate] public class YingShouSBU : SysReportBaseService { public override void Initialize() { base.Initialize(); //设置报表类型为普通类型 this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL; //设置是否通过插件创建临时表 this.IsCreateTempTableByPlugin = true; //设置是否分组汇总 this.ReportProperty.IsGroupSummary = true; } //获取过滤条件信息(构造单据信息) public override ReportTitles GetReportTitles(IRptParams filter) { //创建标题对象 ReportTitles reportTitles = new ReportTitles(); //获取自定义过滤条件 DynamicObject customFilter = filter.FilterParameter.CustomFilter; if (customFilter != null) { //获取组织名称 string multiOrgnNameValues = this.GetMultiOrgnNameValues(customFilter["F_YKQC_OrgId_uky"] as DynamicObject); //添加标题 reportTitles.AddTitle("F_YKQC_OrgId_re5", multiOrgnNameValues); } //返回标题 return reportTitles; } //获取组织名称 private string GetMultiOrgnNameValues(DynamicObject orgIdStrings) { //获取组织名称 List list = new List(); //初始化结果字符串 string result = string.Empty; //如果组织ID字符串不为空 if (orgIdStrings != null) { //获取查询服务 IQueryService service = Kingdee.BOS.Contracts.ServiceFactory.GetService(base.Context); //创建查询参数 QueryBuilderParemeter para = new QueryBuilderParemeter { FormId = "ORG_Organizations", //查询组织名称 SelectItems = SelectorItemInfo.CreateItems("FNAME"), //过滤条件,根据组织ID和区域ID FilterClauseWihtKey = string.Format("FORGID IN ({0}) AND FLOCALEID = {1}", orgIdStrings["Id"].Long2Int(), base.Context.UserLocale.LCID) }; //获取动态对象集合 DynamicObjectCollection dynamicObjects = service.GetDynamicObjectCollection(base.Context, para, null); //遍历获取到的动态对象 foreach (DynamicObject current in dynamicObjects) { //将组织名称添加到列表 list.Add(current["FNAME"].ToString()); } //如果列表不为空 if (list.Count > 0) { result = string.Join(",", list.ToArray()); } } //返回组织名称字符串 return result; } //设置单据列 public override ReportHeader GetReportHeaders(IRptParams filter) { DynamicObject customFilter = filter.FilterParameter.CustomFilter; //结束日期 string FYear = (customFilter["F_EDate"] == null) ? DateTime.Now.Year.ToString() : Convert.ToDateTime( customFilter["F_EDate"]).ToString("yyyy-MM"); //创建表头对象 ReportHeader header = new ReportHeader(); header.AddChild("SBU", new LocaleValue("SBU", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar); header.AddChild("年初到期应收款额", new LocaleValue(FYear +"期初到期应收额", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar); header.AddChild("其中_年初应收款专责小组", new LocaleValue("其中:"+FYear+"期初应收款专责小组", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar); header.AddChild("本年到期应收款额", new LocaleValue(FYear+"到期应收额", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar); header.AddChild("其中_本年应收款专责小组", new LocaleValue("其中:"+FYear+"应收款专责小组", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar); header.AddChild("占比", new LocaleValue("占比", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar); header.AddChild("变化", new LocaleValue("变化", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar); foreach(var item in header.GetChilds()) { item.Width = 200; } return header; } //创建临时表 public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) { base.BuilderReportSqlAndTempTable (filter, tableName); DynamicObject customFilter = filter.FilterParameter.CustomFilter; //开始日期 string FStrartDate = (customFilter["F_SDate"] == null) ? string.Empty : Convert.ToDateTime( customFilter["F_SDate"]).ToString("yyyy-MM-dd"); //结束日期 string FEndDate = (customFilter["F_EDate"] == null) ? string.Empty : Convert.ToDateTime( customFilter["F_EDate"]).ToString("yyyy-MM-dd"); string sql = String.Format(@"/*dialect*/ EXEC YSQKGKSBU_GZTH '{0}' '{1}' SELECT ROW_NUMBER() OVER (ORDER BY SBU DESC) AS FID, ROW_NUMBER() OVER (ORDER BY SBU DESC) AS FIDENTITYID, * INTO {2} FROM YSQKGK_SBU_GZTH ", FStrartDate,FEndDate,tableName); //执行SQL并动态创建报表 DBUtils.ExecuteDynamicObject(this.Context, sql); } //添加合计列 public override List GetSummaryColumnInfo(IRptParams filter) { var result = base.GetSummaryColumnInfo(filter); result.Add(new SummaryField("年初到期应收款额", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM)); result.Add(new SummaryField("其中_年初应收款专责小组", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM)); result.Add(new SummaryField("本年到期应收款额", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM)); result.Add(new SummaryField("其中_本年应收款专责小组", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM)); result.Add(new SummaryField("变化", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM)); return result; } } }