152 lines
7.0 KiB
C#
152 lines
7.0 KiB
C#
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<string> list = new List<string>();
|
||
//初始化结果字符串
|
||
string result = string.Empty;
|
||
//如果组织ID字符串不为空
|
||
if (orgIdStrings != null)
|
||
{
|
||
//获取查询服务
|
||
IQueryService service = Kingdee.BOS.Contracts.ServiceFactory.GetService<IQueryService>(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<SummaryField> 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;
|
||
}
|
||
|
||
}
|
||
}
|