using Kingdee.BOS.App.Data; using Kingdee.BOS.Contracts.Report; using Kingdee.BOS.Core.Report; using Kingdee.BOS.Core.Report.PlugIn; using Kingdee.BOS.Util; using System.Collections.Generic; using System.ComponentModel; using static Kingdee.BOS.Core.Enums.BOSEnums; namespace MyCompany.MyProject.ReportPlugIn { [Description("报表取数服务插件"), HotUpdate] public class SysReportServiceTemplate : SysReportBaseService { public override void Initialize() { base.Initialize(); this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL; this.IsCreateTempTableByPlugin = true; this.ReportProperty.IsGroupSummary = true; this.ReportProperty.IdentityFieldName = "FIDENTITYID"; this.ReportProperty.PrimaryKeyFieldName = "FID"; this.ReportProperty.IsUIDesignerColumns = false; } public override ReportHeader GetReportHeaders(IRptParams filter) { var header = base.GetReportHeaders(filter); header.AddChild("FMaterialNumber", new LocaleValue("物料编码")); header.AddChild("FMaterialName", new LocaleValue("物料名称")); header.AddChild("FQty", new LocaleValue("数量")); return header; } public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) { string sql = $@"/*dialect*/ SELECT ROW_NUMBER() OVER (ORDER BY m.FMATERIALID) AS FIDENTITYID, m.FMATERIALID AS FID, m.FNUMBER AS FMaterialNumber, ml.FNAME AS FMaterialName, SUM(e.FQty) AS FQty INTO {tableName} FROM T_PUR_POORDER h INNER JOIN T_PUR_POORDERENTRY e ON e.FID = h.FID INNER JOIN T_BD_MATERIAL m ON m.FMATERIALID = e.FMATERIALID INNER JOIN T_BD_MATERIAL_L ml ON ml.FMATERIALID = m.FMATERIALID AND ml.FLOCALEID = 2052 WHERE h.FDOCUMENTSTATUS = 'C' GROUP BY m.FMATERIALID, m.FNUMBER, ml.FNAME"; DBUtils.Execute(this.Context, sql); } public override List GetSummaryColumnInfo(IRptParams filter) { return new List { new SummaryField("FQty", Enu_SummaryType.SUM) }; } public override void CloseReport() { this.DropTempTable(); } } }