using Kingdee.BOS; using Kingdee.BOS.App.Data; using Kingdee.BOS.Contracts; using Kingdee.BOS.Contracts.Report; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.Report; using Kingdee.BOS.Orm.DataEntity; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using Newtonsoft.Json; using ZD.Cloud.Logger; namespace Demo.Report { /// /// 及时率报表 /// [Description("及时率报表")] [HotUpdate] public class prd_TimelinessRateReport : SysReportBaseService { public override void Initialize() { base.Initialize(); // 简单账表类型:普通、树形、分页 this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL; this.IsCreateTempTableByPlugin = true; //取代码中配置的列 this.ReportProperty.IsUIDesignerColumns = false; //是否分组汇总 this.ReportProperty.IsGroupSummary = true; this.ReportProperty.PrimaryKeyFieldName = "FIDENTITYID"; } public override ReportHeader GetReportHeaders(IRptParams filter) { ReportHeader header = new ReportHeader(); header.AddChild("FIDENTITYID", new LocaleValue("序号"), SqlStorageType.SqlInt).ColIndex = 1; header.AddChild("FHDATE", new LocaleValue("提料计划日期", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar).ColIndex = 1; header.AddChild("FHSOURCEBILLNO", new LocaleValue("生产订单编号", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar).ColIndex = 2; header.AddChild("FSOURCENAME", new LocaleValue("生产线"), SqlStorageType.Sqlvarchar).ColIndex = 3; header.AddChild("FSUPPLIERNUMBER", new LocaleValue("供应商编码", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar).ColIndex = 4; header.AddChild("FSUPPLIERNAME", new LocaleValue("供应商名称", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar).ColIndex = 5; header.AddChild("FMATERIALNUMBER2", new LocaleValue("产品编码"), SqlStorageType.Sqlvarchar).ColIndex = 6; header.AddChild("FMATERIALNAME2", new LocaleValue("产品名称"), SqlStorageType.Sqlvarchar).ColIndex = 7; header.AddChild("FSPECIFICATION2", new LocaleValue("产品规格"), SqlStorageType.Sqlvarchar).ColIndex = 8; header.AddChild("FMATERIALNUMBER", new LocaleValue("原材料编码", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar).ColIndex = 9; header.AddChild("FMATERIALNAME", new LocaleValue("原材料名称", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar).ColIndex = 10; header.AddChild("FSPECIFICATION", new LocaleValue("原材料规格", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar).ColIndex = 11; header.AddChild("FHQTY", new LocaleValue("订单数量", this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal).ColIndex = 11; header.AddChild("FREALQTY", new LocaleValue("实际到货数量", this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal).ColIndex = 11; header.AddChild("FRKDATE", new LocaleValue("实际到货时间", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar).ColIndex = 12; header.AddChild("FTYPE", new LocaleValue("类型", this.Context.UserLocale.LCID), SqlStorageType.Sqlvarchar).ColIndex = 12; header.AddChild("FJSRATE", new LocaleValue("到货及时率", this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal).ColIndex = 12; header.AddChild("FTQCOUNT", new LocaleValue("拖期数量", this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal).ColIndex = 13; return header; } public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) { base.BuilderReportSqlAndTempTable(filter, tableName); DynamicObject customFil = filter.FilterParameter.CustomFilter; string FProductLine = ""; //生产线 string FMaterialID = ""; //物料 string FSupplyID = ""; //供应商 string FBeginDATE = customFil["FBeginDATE"]?.ToString(); string FEndDATE = customFil["FEndDATE"]?.ToString(); string FMoBillNo = customFil["FMoBillNo"]?.ToString(); if (((DynamicObject)customFil["FMaterialID"]) != null) { FMaterialID = ((DynamicObject)customFil["FMaterialID"])["Id"].ToString(); } if (((DynamicObject)customFil["FProductLine"]) != null) { FProductLine = ((DynamicObject)customFil["FProductLine"])["Id"].ToString(); } if (((DynamicObject)customFil["FSupplyID"]) != null) { FSupplyID = ((DynamicObject)customFil["FSupplyID"])["Id"].ToString(); } string sql = string.Format($"/*dialect*/ EXEC pr_TimelinessRateReport '{tableName}','{FBeginDATE}','{FEndDATE}','{FMoBillNo}','{FProductLine}','{FSupplyID}','{FMaterialID}'"); LogHelper.Info(sql); DBUtils.Execute(this.Context, sql); } public override ReportTitles GetReportTitles(IRptParams filter) { var result = base.GetReportTitles(filter); DynamicObject dyFilter = filter.FilterParameter.CustomFilter; if (dyFilter != null) { if (result == null) { result = new ReportTitles(); } } var begindate = dyFilter["FBeginDATE"]?.ToString() ?? "1990-01-01 00:00:00"; var enddate = dyFilter["FEndDATE"]?.ToString() ?? "9999 - 01 - 01 00:00:00"; var FMoBillNo = dyFilter["FMoBillNo"]?.ToString() ?? ""; var FProductLine = (dyFilter["FProductLine"] as DynamicObject)?["Name"].ToString() ?? ""; var FSupplyID = (dyFilter["FSupplyID"] as DynamicObject)?["Name"].ToString() ?? ""; var FMaterialID = (dyFilter["FMaterialID"] as DynamicObject)?["Name"].ToString() ?? ""; result.AddTitle("FBeginDATE", begindate); result.AddTitle("FEndDATE", enddate); result.AddTitle("FMoBillNo", FMoBillNo); result.AddTitle("FProductLine", FProductLine); result.AddTitle("FSupplyID", FSupplyID); result.AddTitle("FMaterialID", FMaterialID); return result; } } }