using Kingdee.BOS.App.Data;
using Kingdee.BOS.Contracts.Report;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.BOS;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Kingdee.BOS.Core.Enums;
using Kingdee.BOS.Core.Metadata.Util;
namespace GZ_LTHReportForms.YeJiPaiHangBang
{
[Description("【报表服务插件】销售业绩排行榜_TH"), HotUpdate]
public class PHBSaleOrderReport : SysReportBaseService
{
///
/// 初始化
///
public override void Initialize()
{
base.Initialize();
this.ReportProperty.ReportName = new LocaleValue("销售业绩排行榜", base.Context.UserLocale.LCID);
this.ReportProperty.IsUIDesignerColumns = false;
// 简单账表类型:普通、树形、分页
this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
this.IsCreateTempTableByPlugin = true;
//
this.IsCreateTempTableByPlugin = true;
//
this.ReportProperty.IsGroupSummary = true;
//
this.ReportProperty.SimpleAllCols = false;
// 单据主键:两行FID相同,则为同一单的两条分录,单据编号可以不重复显示
this.ReportProperty.PrimaryKeyFieldName = "FID";
//
this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true;
// 设置精度控制
var list = new List
{
new DecimalControlField("FDECIMALS", "OrigInvoiceAmount"),
new DecimalControlField("FDECIMALS", "ExchangeRate"),
new DecimalControlField("FDECIMALS", "InvoiceAmountTHB"),
new DecimalControlField("FDECIMALS", "MonthEndExRate"),
new DecimalControlField("FDECIMALS", "RevaluationAountInTHB"),
new DecimalControlField("FDECIMALS", "UnrealizedGainLoss"),
};
this.ReportProperty.DecimalControlFieldList = list;
}
///
/// 报表列表头
///
///
///
public override ReportHeader GetReportHeaders(IRptParams filter)
{
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
base.GetReportHeaders(filter);
ReportHeader header = new ReportHeader();
// 下单时间
string fDate = customFilter["F_SDate"]?.ToString();
int year = Convert.ToInt32(fDate.Split('-')[0]);
header.AddChild("部门_SBU", new LocaleValue("部门(SBU)"), SqlStorageType.Sqlvarchar);
header.AddChild("区域明细", new LocaleValue("区域明细"), SqlStorageType.Sqlvarchar);
header.AddChild("职位名称", new LocaleValue("职位名称"), SqlStorageType.Sqlvarchar);
header.AddChild("姓名", new LocaleValue("姓名"), SqlStorageType.Sqlvarchar);
header.AddChild("入司时间1", new LocaleValue("入司时间"), SqlStorageType.SqlDatetime);
header.AddChild("担任本职位日期1", new LocaleValue("担任本职位日期"), SqlStorageType.SqlDatetime);
header.AddChild("担任销售日期1", new LocaleValue("担任销售日期"), SqlStorageType.SqlDatetime);
header.AddChild("入职年限", new LocaleValue("入职年限"), SqlStorageType.Sqlvarchar);
header.AddChild("派诺集团_已进行集团业绩调整_含往年订单变更", new LocaleValue("派诺集团-已进行集团业绩调整(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("派诺业绩_含往年订单变更", new LocaleValue("派诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("兴诺业绩_含往年订单变更", new LocaleValue("兴诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("武汉派诺业绩_含往年订单变更", new LocaleValue("武汉派诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("广东碳索业绩_含往年订单变更", new LocaleValue("广东碳索业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("香港派诺业绩_含往年订单变更", new LocaleValue("香港派诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("华夏云联业绩_含往年订单变更", new LocaleValue("华夏云联业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("当年累计业绩", new LocaleValue("当年累计业绩"), SqlStorageType.SqlDecimal);
header.AddChild("往年变更合同额", new LocaleValue("往年变更合同额"), SqlStorageType.SqlDecimal);
header.AddChild("集团回款合计", new LocaleValue("集团回款合计"), SqlStorageType.SqlDecimal);
header.AddChild("派诺累计回款额", new LocaleValue("派诺累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("兴诺累计回款额", new LocaleValue("兴诺累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("武汉派诺累计回款额", new LocaleValue("武汉派诺累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("广东碳索累计回款额", new LocaleValue("广东碳索累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("香港派诺累计回款额", new LocaleValue("香港派诺累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("华夏云联累计回款额", new LocaleValue("华夏云联累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("本年销售目标-新", new LocaleValue(year + "年销售目标-新"), SqlStorageType.SqlDecimal);
header.AddChild("本年达标率_不含往年订单变更_新", new LocaleValue(year + "年达标率(不含往年订单变更)-新"), SqlStorageType.SqlDecimal);
header.AddChild("本年销售目标-原", new LocaleValue(year + "年销售目标-原"), SqlStorageType.SqlDecimal);
header.AddChild("本年达标率_不含往年订单变更_原", new LocaleValue(year + "年达标率(不含往年订单变更)-原"), SqlStorageType.SqlDecimal);
header.AddChild("目标调整金额", new LocaleValue("目标调整金额"), SqlStorageType.SqlDecimal);
header.AddChild("年度销售额1", new LocaleValue((year - 1) + "年度销售额"), SqlStorageType.SqlDecimal);
header.AddChild("年度销售额2", new LocaleValue((year - 2) + "年度销售额"), SqlStorageType.SqlDecimal);
header.AddChild("年度销售额3", new LocaleValue((year - 3) + "年度销售额"), SqlStorageType.SqlDecimal);
header.AddChild("年度销售额4", new LocaleValue((year - 4) + "年度销售额"), SqlStorageType.SqlDecimal);
header.AddChild("年度销售额5", new LocaleValue((year - 5) + "年度销售额"), SqlStorageType.SqlDecimal);
header.AddChild("年度销售额6", new LocaleValue((year - 6) + "年度销售额"), SqlStorageType.SqlDecimal);
foreach (var item in header.GetChilds())
{
item.Width = 160;
}
return header;
}
///
/// 显示报表数据
///
///
///
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
//获取过滤条件
string Filter = GetFilterWhere(filter);
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
base.BuilderReportSqlAndTempTable(filter, tableName);
//获取开始日期
string FStrartDate = (customFilter["F_SDate"] == null) ? "" : Convert.ToDateTime(
customFilter["F_SDate"]).ToString("yyyy-MM-dd");
//获取结束日期
string FEndDate = (customFilter["F_EDate"] == null) ? "" : Convert.ToDateTime(
customFilter["F_EDate"]).ToString("yyyy-MM-dd");
//获取多选组织的FID
var ZZS = customFilter["F_YKQC_MulBase_83g"] as DynamicObjectCollection;
var OrgFids = "";
if (ZZS.Count > 0) {
List zzList = new List();
//循环获取多选组织FID
foreach (DynamicObject dobj in ZZS)
{
DynamicObject dynamic = dobj["F_YKQC_MulBase_83g"] as DynamicObject;
zzList.Add(dynamic["ID"].ToString());
}
OrgFids = string.Join(",", zzList);
}
string sql = string.Format(@"/*dialect*/
EXEC GZYJPHB_TH '{0}','{1}','{2}'
SELECT
ROW_NUMBER() OVER (ORDER BY [部门_SBU] DESC) AS FID,
ROW_NUMBER() OVER (ORDER BY [部门_SBU] DESC) AS FIDENTITYID,
FORMAT(入司时间,'yyyy-MM-dd') AS 入司时间1,
FORMAT(担任本职位日期,'yyyy-MM-dd') AS 担任本职位日期1,
FORMAT(担任销售日期,'yyyy-MM-dd') AS 担任销售日期1,
* INTO {3} FROM YJPHB_GZTH {4}
", FStrartDate,FEndDate,OrgFids,tableName, Filter);
DBUtils.Execute(this.Context, sql);
}
//报表过滤条件-多选销售员
private string GetFilterWhere(IRptParams filter)
{
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
StringBuilder strwhere = new StringBuilder(); //创建字符串构建器;
strwhere.AppendLine("WHERE 1=1");
var xsy = customFilter["F_YKQC_MulBase_re5"] as DynamicObjectCollection;
if (xsy.Count > 0)
{
List xsyList = new List();
//循环获取物料信息
foreach (DynamicObject dobj in xsy)
{
DynamicObject dynamic = dobj["F_YKQC_MulBase_re5"] as DynamicObject;
xsyList.Add(dynamic["Name"].ToString());
}
strwhere.AppendLine(string.Format(@"AND 姓名 IN ({0})", string.Join(",", xsyList.Select(x => $"'{x}'"))));
}
return strwhere.ToString();
}
//设置报表合计列
public override List GetSummaryColumnInfo(IRptParams filter)
{
var result = base.GetSummaryColumnInfo(filter);
result.Add(new SummaryField("派诺集团_已进行集团业绩调整_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("派诺业绩_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("兴诺业绩_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("武汉派诺业绩_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("广东碳索业绩_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("香港派诺业绩_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("华夏云联业绩_含往年订单变更", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("当年累计业绩", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("往年变更合同额", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("集团回款合计", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("派诺累计回款额", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("兴诺累计回款额", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("武汉派诺累计回款额", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("广东碳索累计回款额", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("香港派诺累计回款额", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("华夏云联累计回款额", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("年度销售额1", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("年度销售额2", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("年度销售额3", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("年度销售额4", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("年度销售额5", BOSEnums.Enu_SummaryType.SUM));
result.Add(new SummaryField("年度销售额6", BOSEnums.Enu_SummaryType.SUM));
return result;
}
}
}