李狗蛋 a543baebd6 1
2025-03-31 19:09:19 +08:00

164 lines
6.6 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.YingShouBiao
{
[Description("应收款情况表(SBU)报表插件"),HotUpdate]
class YingShouQKBiao : 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_ca9"].ToString());
//获取起始日期
string startValue = (customFilter["F_YKQC_Date_apv"] == null) ? string.Empty : Convert.ToDateTime(customFilter["F_YKQC_Date_apv"])
.ToString("yyyy-MM-dd");
//获取结束日期
string endValue = (customFilter["F_YKQC_Date_tzk"] == null) ? string.Empty : Convert.ToDateTime(customFilter["F_YKQC_Date_tzk"])
.ToString("yyyy-MM-dd");
//添加标题信息
reportTitles.AddTitle("F_YKQC_OrgId_re5", multiOrgnNameValues);
reportTitles.AddTitle("F_YKQC_Date_qtr", startValue);
reportTitles.AddTitle("F_YKQC_Date_83g", endValue);
}
//返回标题
return reportTitles;
}
//获取组织名称
private string GetMultiOrgnNameValues(string orgIdStrings)
{
//创建组织名称列表
List<string> list = new List<string>();
//初始化结果字符串
string result = string.Empty;
//如果组织ID字符串不为空
if (orgIdStrings.Trim().Length > 0)
{
//获取查询服务
IQueryService service = Kingdee.BOS.Contracts.ServiceFactory.GetService<IQueryService>(base.Context);
//创建查询参数
QueryBuilderParemeter para = new QueryBuilderParemeter {
//表单ID
FormId = "ORG_Organizations",
//查询组织名称
SelectItems = SelectorItemInfo.CreateItems("FNAME"),
//过滤条件根据组织ID和区域ID
FilterClauseWihtKey = string.Format("FORGID IN ({0}) AND FLOCALEID = {1}",orgIdStrings,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)
{
//创建表头对象
ReportHeader header = new ReportHeader();
return header;
}
//创建临时表
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
//获取过滤条件
string Filter = GetFilterWhere(filter);
//获取排序字段
string seqFId = string.Format(base.KSQL_SEQ,OrderColumn(filter));
/*
取数SQL
SQL查询字符串提取所需数据并将结果存入临时表
*/
string sql = string.Format(@"");
//执行SQL并动态创建报表
DBUtils.ExecuteDynamicObject(this.Context,sql);
}
//获取过滤条件
private string GetFilterWhere(IRptParams fileter)
{
//获取自定义过滤条件
DynamicObject customFilter = fileter.FilterParameter.CustomFilter;
//创建字符串构建器
StringBuilder strwhere = new StringBuilder();
//初始化过滤条件
strwhere.AppendLine("Where 1=1");
//组织过滤条件
string org = string.IsNullOrWhiteSpace(customFilter["F_YKQC_OrgId_ca9"].ToString()) ? "" : string.Format("AND A.FPURCHASEORGID IN ({0})",
Convert.ToString(customFilter["F_YKQC_OrgId_ca9"]));
//添加组织过滤条件
strwhere.AppendLine(org);
//日期
string startValue = (customFilter["F_YKQC_Date_apv"] == null) ? string.Empty :
Convert.ToDateTime(customFilter["F_YKQC_Date_apv"]).ToString("yyyy-MM-dd");
string endValue = (customFilter["F_YKQC_Date_tzk"] == null) ? string.Empty :
Convert.ToDateTime(customFilter["F_YKQC_Date_tzk"]).ToString("yyyy-MM-dd");
//添加日期过滤条件
strwhere.AppendLine(string.Format("AND FDate >= '{0}' AND FDate <= '{1}'",startValue,endValue));
return strwhere.ToString();
}
//获取排序语句
private string OrderColumn(IRptParams filter)
{
//初始化排序字符串
string OrderBy = "";
string datasort = Convert.ToString(filter.FilterParameter.SortString);//获取排序条件
if (datasort != "")
{
OrderBy = "" + datasort + "";
}
else
{
OrderBy = "FID";
}
return OrderBy;
}
}
}