using Kingdee.BOS.App.Data;
using Kingdee.BOS.Contracts.Report;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Orm.Cvp;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.BOS;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TenderItem.Induct
{
///
/// 【列表插件】投标项目数据简单报表2
///
[Description("【列表插件】投标项目数据报表2"), HotUpdate]
public class TenderProjectReportPlugin2 : 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)
{
base.GetReportHeaders(filter);
ReportHeader header = new ReportHeader();
if (this.Context.UserLocale.LCID == 2052)
{
header.AddChild("Year", new LocaleValue("年份"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderNumber", new LocaleValue("招标编号"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderMain", new LocaleValue("标书主编号"), SqlStorageType.Sqlvarchar);
header.AddChild("Tender", new LocaleValue("标书编号"), SqlStorageType.Sqlvarchar);
header.AddChild("ProjectName", new LocaleValue("项目名称"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderingUnit", new LocaleValue("招标单位"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProjectType", new LocaleValue("中标项目分类"), SqlStorageType.Sqlvarchar);
header.AddChild("ProvincesHead", new LocaleValue("省区负责人"), SqlStorageType.Sqlvarchar);
header.AddChild("Authorizer", new LocaleValue("授权人"), SqlStorageType.Sqlvarchar);
header.AddChild("Region", new LocaleValue("大区"), SqlStorageType.Sqlvarchar);
header.AddChild("Provinces", new LocaleValue("省区"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProductsType", new LocaleValue("中标产品分类"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProducts", new LocaleValue("中标产品"), SqlStorageType.Sqlvarchar);
header.AddChild("BidPackageNumber", new LocaleValue("中标包号"), SqlStorageType.Sqlvarchar);
header.AddChild("WinningBid", new LocaleValue("中标额(万元)"), SqlStorageType.SqlDecimal);
header.AddChild("FrameVolume", new LocaleValue("框架标预估体量"), SqlStorageType.SqlDecimal);
header.AddChild("WinningBidSubtotal", new LocaleValue("中标额小计"), SqlStorageType.SqlDecimal);
header.AddChild("BidsDate", new LocaleValue("开标时间"), SqlStorageType.SqlDatetime);
header.AddChild("InstallationIllustrate", new LocaleValue("安装说明"), SqlStorageType.Sqlvarchar);
header.AddChild("Remark", new LocaleValue("备注"), SqlStorageType.Sqlvarchar);
header.AddChild("ContractOriginalReturns", new LocaleValue("合同原件返回额"), SqlStorageType.SqlDecimal);
header.AddChild("AmountOrder", new LocaleValue("下单金额"), SqlStorageType.SqlDecimal);
header.AddChild("AmountOriginalOrder", new LocaleValue("下单无原件金额"), SqlStorageType.SqlDecimal);
header.AddChild("ContractAmountOrder", new LocaleValue("合同返回未下单金额"), SqlStorageType.SqlDecimal);
header.AddChild("BidderNotAgency", new LocaleValue("中标未签约且未下单(万元)"), SqlStorageType.SqlDecimal);
header.AddChild("Sales", new LocaleValue("销售额"), SqlStorageType.SqlDecimal);
header.AddChild("InvoicedAmount", new LocaleValue("已开票额"), SqlStorageType.SqlDecimal);
header.AddChild("UnbilledAmount", new LocaleValue("未开票额"), SqlStorageType.SqlDecimal);
header.AddChild("ProjectSpecialIllustrate", new LocaleValue("项目特殊情况说明"), SqlStorageType.Sqlvarchar);
header.AddChild("Cost", new LocaleValue("成本"), SqlStorageType.SqlDecimal);
}
else
{
header.AddChild("Year", new LocaleValue("Year"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderNumber", new LocaleValue("TenderNumber"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderMain", new LocaleValue("TenderMain"), SqlStorageType.Sqlvarchar);
header.AddChild("Tender", new LocaleValue("Tender"), SqlStorageType.Sqlvarchar);
header.AddChild("ProjectName", new LocaleValue("ProjectName"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderingUnit", new LocaleValue("TenderingUnit"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProjectType", new LocaleValue("BidProjectType"), SqlStorageType.Sqlvarchar);
header.AddChild("ProvincesHead", new LocaleValue("ProvincesHead"), SqlStorageType.Sqlvarchar);
header.AddChild("Authorizer", new LocaleValue("Authorizer"), SqlStorageType.Sqlvarchar);
header.AddChild("Region", new LocaleValue("Region"), SqlStorageType.Sqlvarchar);
header.AddChild("Provinces", new LocaleValue("Provinces"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProductsType", new LocaleValue("BidProductsType"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProducts", new LocaleValue("BidProducts"), SqlStorageType.Sqlvarchar);
header.AddChild("BidPackageNumber", new LocaleValue("BidPackageNumber"), SqlStorageType.Sqlvarchar);
header.AddChild("WinningBid", new LocaleValue("WinningBid"), SqlStorageType.SqlDecimal);
header.AddChild("FrameVolume", new LocaleValue("FrameVolume"), SqlStorageType.SqlDecimal);
header.AddChild("WinningBidSubtotal", new LocaleValue("WinningBidSubtotal"), SqlStorageType.SqlDecimal);
header.AddChild("BidsDate", new LocaleValue("InstallationIllustrate"), SqlStorageType.SqlDatetime);
header.AddChild("InstallationIllustrate", new LocaleValue("InstallationIllustrate"), SqlStorageType.Sqlvarchar);
header.AddChild("Remark", new LocaleValue("Remark"), SqlStorageType.Sqlvarchar);
header.AddChild("ContractOriginalReturns", new LocaleValue("ContractOriginalReturns"), SqlStorageType.SqlDecimal);
header.AddChild("AmountOrder", new LocaleValue("AmountOrder"), SqlStorageType.SqlDecimal);
header.AddChild("AmountOriginalOrder", new LocaleValue("AmountOriginalOrder"), SqlStorageType.SqlDecimal);
header.AddChild("ContractAmountOrder", new LocaleValue("ContractAmountOrder"), SqlStorageType.SqlDecimal);
header.AddChild("BidderNotAgency", new LocaleValue("BidderNotAgency"), SqlStorageType.SqlDecimal);
header.AddChild("Sales", new LocaleValue("Sales"), SqlStorageType.SqlDecimal);
header.AddChild("InvoicedAmount", new LocaleValue("InvoicedAmount"), SqlStorageType.SqlDecimal);
header.AddChild("UnbilledAmount", new LocaleValue("UnbilledAmount"), SqlStorageType.SqlDecimal);
header.AddChild("ProjectSpecialIllustrate", new LocaleValue("ProjectSpecialIllustrate"), SqlStorageType.Sqlvarchar);
header.AddChild("Cost", new LocaleValue("Cost"), SqlStorageType.SqlDecimal);
}
foreach (var item in header.GetChilds())
{
item.Width = 150;
}
return header;
}
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
// 年份
string fDate = customFilter["FDate"]?.ToString();
// 标书编号
string fTender = customFilter["FTender"]?.ToString();//FTender
base.BuilderReportSqlAndTempTable(filter, tableName);
string sql = string.Format(@"/*dialect*/
SELECT
*
INTO #TempTable1
FROM
T_DB_TESTVIEW
WHERE 1=1");
//过滤条件
if (!string.IsNullOrEmpty(fDate))
{
string dateString = fDate.Split('-')[0];
sql += string.Format(@" AND YEAR = {0}", dateString);
}
if (!string.IsNullOrEmpty(fTender))
{
sql += string.Format(@" AND Tender = '{0}'", fTender);
}
sql += string.Format(@";");
sql += string.Format(@"/*dialect*/
Select
ROW_NUMBER() OVER (ORDER BY Year) AS FID,
ROW_NUMBER() OVER (ORDER BY Year) AS FIDENTITYID,
*
INTO {0}
From #TempTable1", tableName);
DBUtils.Execute(this.Context, sql);
}
///
/// 获取前端组件转换过滤条件
///
///
///
public override ReportTitles GetReportTitles(IRptParams filter)
{
ReportTitles reportTitles = new ReportTitles();
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
if (customFilter != null)
{
// 截至日期
string fDate = customFilter["FDate"]?.ToString();
// 标书编号
string fTender = customFilter["FTender"]?.ToString();
//这里是报表页面的标识
reportTitles.AddTitle("FTender", fTender == null ? "" : fTender);
reportTitles.AddTitle("FDate", fDate == null ? "" : Convert.ToDateTime(fDate).ToString("yyyy-MM-dd"));
}
return reportTitles;
}
}
}