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; } } }