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
|
{
|
/// <summary>
|
/// 及时率报表
|
/// </summary>
|
[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;
|
|
}
|
}
|
}
|