Files
GateDge2023_ljy/MonthlyProductionSchedule/ProductionPlanRptPlugIn.cs

321 lines
13 KiB
C#
Raw Normal View History

2023-12-14 10:31:17 +08:00
using Kingdee.BOS.Contracts.Report;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Kingdee.BOS;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Core.Report.PlugIn;
using Kingdee.BOS.Core.Report.PlugIn.Args;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.Metadata;
2023-12-15 09:08:09 +08:00
using Kingdee.BOS.Core.Metadata.Util;
using System.Data;
2023-12-14 10:31:17 +08:00
namespace MonthlyProductionSchedule
{
[Description("生产计划表-服务插件"), HotUpdate]
public class ProductionPlanRptPlugIn : SysReportBaseService
{
/************************
2015/8/31 18:04:12 : Initialize
2015/8/31 18:04:12 : GetTableName
2015/8/31 18:04:15 : BuilderReportSqlAndTempTable
2015/8/31 18:04:15 : GetIdentityFieldIndexSQL
2015/8/31 18:04:15 : ExecuteBatch
2015/8/31 18:04:19 : GetReportHeaders
2015/8/31 18:04:19 : GetReportTitles
2015/8/31 18:04:27 : GetTableName
2015/8/31 18:04:27 : GetIdentityFieldIndexSQL
2015/8/31 18:04:28 : ExecuteBatch
2015/8/31 18:04:28 : AnalyzeDspCloumn
2015/8/31 18:04:28 : AfterCreateTempTable
2015/8/31 18:04:28 : GetSummaryColumnInfo
2015/8/31 18:04:28 : GetSummaryColumsSQL
2015/8/31 18:04:28 : GetTableName
2015/8/31 18:04:28 : GetTableName
2015/8/31 18:04:29 : ExecuteBatch
2015/8/31 18:04:29 : GetIdentityFieldIndexSQL
2015/8/31 18:04:29 : ExecuteBatch
2015/8/31 18:04:29 : CreateGroupSummaryData
2015/8/31 18:04:29 : GetListData
2015/8/31 18:04:30 : GetReportData
2015/8/31 18:04:30 : GetRowsCount
2015/8/31 18:04:30 : GetListData
*/
public override void Initialize()
{
base.Initialize();
// 简单账表类型:普通、树形、分页
this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
// 报表名称
this.ReportProperty.ReportName = new LocaleValue("生产计划表", base.Context.UserLocale.LCID);
//
this.IsCreateTempTableByPlugin = true;
//
this.ReportProperty.IsUIDesignerColumns = false;
//
this.ReportProperty.IsGroupSummary = true;
//
this.ReportProperty.SimpleAllCols = false;
// 单据主键两行FID相同则为同一单的两条分录单据编号可以不重复显示
this.ReportProperty.PrimaryKeyFieldName = "FID";
//
this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true;
// 报表主键字段名默认为FIDENTITYID可以修改
//this.ReportProperty.IdentityFieldName = "FIDENTITYID";
//
// 设置精度控制
var list = new List<DecimalControlField>();
//// 数量
//list.Add(new DecimalControlField
//{
// ByDecimalControlFieldName = "FQty",
// DecimalControlFieldName = "FUnitPrecision"
//});
//// 单价
//list.Add(new DecimalControlField
//{
// ByDecimalControlFieldName = "FTAXPRICE",
// DecimalControlFieldName = "FPRICEDIGITS"
//});
//// 金额
//list.Add(new DecimalControlField
//{
// ByDecimalControlFieldName = "FALLAMOUNT",
// DecimalControlFieldName = "FAMOUNTDIGITS"
//});
this.ReportProperty.DecimalControlFieldList = list;
}
public override string GetTableName()
{
var result = base.GetTableName();
return result;
}
/// <summary>
/// 向报表临时表,插入报表数据
/// </summary>
/// <param name="filter"></param>
/// <param name="tableName"></param>
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
base.BuilderReportSqlAndTempTable(filter, tableName);
// 拼接过滤条件 filter
// 略
// 默认排序字段需要从filter中取用户设置的排序字段
string seqFld = string.Format(base.KSQL_SEQ, " t0.FID ");
2023-12-15 09:08:09 +08:00
var year = filter.FilterParameter.CustomFilter["DataHoldYear"].Long2Int();
var month = filter.FilterParameter.CustomFilter["DataHoldMonth"].Long2Int();
var date = new DateTime(year, month, 1);
2023-12-14 10:31:17 +08:00
// 取数SQL
// FID, FEntryId, 编号、状态、物料、数量、单位、单位精度、单价、价税合计
2023-12-15 09:08:09 +08:00
object resa = 0;
var startDate = date.ToString("yyyy-MM-dd");
var endDate = date.AddMonths(1).AddDays(-1);
2023-12-14 10:31:17 +08:00
string sql = $@"
EXEC PROC_ProductionSchedule '{tableName}','{startDate}','{endDate}', {base.Context.UserLocale.LCID} ,'{seqFld}';
";
2023-12-15 09:08:09 +08:00
//var para = new List<SqlParam>
//{
// new SqlParam("@tableName", KDDbType.String,tableName),
// new SqlParam("@startDate", KDDbType.String,startDate),
// new SqlParam("@endDate", KDDbType.String,endDate),
// new SqlParam("@LCID", KDDbType.Int32,base.Context.UserLocale.LCID),
// new SqlParam("@seqFld", KDDbType.String,seqFld),
// new SqlParam("@HasId", KDDbType.Int32, resa,ParameterDirection.Output)
//};
//var res = DBUtils.ExecuteStoreProcedure(this.Context, "PROC_ProductionSchedule", para);
2023-12-14 10:31:17 +08:00
DBUtils.ExecuteDynamicObject(this.Context, sql);
2023-12-15 09:08:09 +08:00
//filter.FilterParameter.CustomOption.Add("res", res[0].Value);
2023-12-14 10:31:17 +08:00
}
protected override string GetIdentityFieldIndexSQL(string tableName)
{
string result = base.GetIdentityFieldIndexSQL(tableName);
return result;
}
protected override void ExecuteBatch(List<string> listSql)
{
base.ExecuteBatch(listSql);
}
2023-12-15 09:08:09 +08:00
/// <summary>
2023-12-14 10:31:17 +08:00
/// 构建出报表列
///
///
///
///
/// // 如下代码,演示如何设置同一分组的分组头字段合并
/// // 需配合Initialize事件设置分组依据字段(PrimaryKeyFieldName)
/// ReportHeader header = new ReportHeader();
/// header.Mergeable = true;
/// int width = 80;
/// ListHeader headChild1 = header.AddChild("FBILLNO", new LocaleValue("应付单号"));
/// headChild1.Width = width;
/// headChild1.Mergeable = true;
///
/// ListHeader headChild2 = header.AddChild("FPURMAN", new LocaleValue("采购员"));
/// headChild2.Width = width;
/// headChild2.Mergeable = true;
2023-12-15 09:08:09 +08:00
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
2023-12-14 10:31:17 +08:00
public override ReportHeader GetReportHeaders(IRptParams filter)
{
2023-12-15 09:08:09 +08:00
var year = filter.FilterParameter.CustomFilter["DataHoldYear"].Long2Int();
var month = filter.FilterParameter.CustomFilter["DataHoldMonth"].Long2Int();
var date = new DateTime(year, month, 1);
2023-12-14 10:31:17 +08:00
// FID, FEntryId,
var _colIndex = 0;
ReportHeader header = new ReportHeader();
header.AddChild("FNAME", new LocaleValue("产品名称"), _colIndex++);
header.AddChild("ShelfLife", new LocaleValue("有效期"), _colIndex++);
2023-12-15 09:08:09 +08:00
header.AddChild("StandardLot", new LocaleValue("标准批量"), _colIndex++);
2023-12-14 10:31:17 +08:00
header.AddChild("FLOTYIELD", new LocaleValue("每批产量"), _colIndex++);
header.AddChild("FPACKUNITCONVERRATIO", new LocaleValue("包装规格"), _colIndex++);
header.AddChild("FPACKUNITCONVT", new LocaleValue("包装规格"), _colIndex++);
header.AddChild("FPACKUNITNAME", new LocaleValue("单位"), _colIndex++);
2023-12-15 09:08:09 +08:00
header.AddChild("SAFESTOCKCOUNT", new LocaleValue("安全库存量"), _colIndex++);
2023-12-14 10:31:17 +08:00
header.AddChild("SAFESTOCK", new LocaleValue("安全库存数量"), _colIndex++);
header.AddChild("M01", new LocaleValue("本月预计需求量"), _colIndex++);
header.AddChild("S01", new LocaleValue(date.AddMonths(-1).ToString("yyyyMM") + "发货量"), _colIndex++);
header.AddChild("S02", new LocaleValue(date.AddMonths(-2).ToString("yyyyMM") + "发货量"), _colIndex++);
header.AddChild("S03", new LocaleValue(date.AddMonths(-3).ToString("yyyyMM") + "发货量"), _colIndex++);
2023-12-15 09:08:09 +08:00
header.AddChild("InStockQty", new LocaleValue("已入库量"), _colIndex++);
header.AddChild("InProductionQty", new LocaleValue("在生产量"), _colIndex++);
header.AddChild("TotalStockQty", new LocaleValue("合计入库量"), _colIndex++);
2023-12-14 10:31:17 +08:00
header.AddChild("OrderLotQty", new LocaleValue("系统计划生产批数"), _colIndex++);
header.AddChild("FirmLotQty", new LocaleValue("确认计划生产批数"), _colIndex++);
header.AddChild("FFirmQty", new LocaleValue("确认计划生产量"), _colIndex++);
header.AddChild("Note", new LocaleValue("备注"), _colIndex++);
return header;
}
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();
}
2023-12-15 09:08:09 +08:00
//var t = filter.FilterParameter.CustomOption["res"].Long2Int();
2023-12-14 10:31:17 +08:00
//result.AddTitle("F_JD_Date", Convert.ToString(dyFilter["F_JD_Date"]));
}
return result;
}
protected override string AnalyzeDspCloumn(IRptParams filter, string tablename)
{
string result = base.AnalyzeDspCloumn(filter, tablename);
return result;
}
protected override void AfterCreateTempTable(string tablename)
{
base.AfterCreateTempTable(tablename);
}
/// <summary>
/// 设置报表合计列
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
public override List<SummaryField> GetSummaryColumnInfo(IRptParams filter)
{
var result = base.GetSummaryColumnInfo(filter);
return result;
}
protected override string GetSummaryColumsSQL(List<SummaryField> summaryFields)
{
var result = base.GetSummaryColumsSQL(summaryFields);
return result;
}
protected override System.Data.DataTable GetListData(string sSQL)
{
var result = base.GetListData(sSQL);
return result;
}
protected override System.Data.DataTable GetReportData(IRptParams filter)
{
var result = base.GetReportData(filter);
return result;
}
protected override System.Data.DataTable GetReportData(string tablename, IRptParams filter)
{
var result = base.GetReportData(tablename, filter);
return result;
}
public override int GetRowsCount(IRptParams filter)
{
var result = base.GetRowsCount(filter);
return result;
}
protected override string BuilderFromWhereSQL(IRptParams filter)
{
string result = base.BuilderFromWhereSQL(filter);
return result;
}
protected override string BuilderSelectFieldSQL(IRptParams filter)
{
string result = base.BuilderSelectFieldSQL(filter);
return result;
}
protected override string BuilderTempTableOrderBySQL(IRptParams filter)
{
string result = base.BuilderTempTableOrderBySQL(filter);
return result;
}
public override void CloseReport()
{
base.CloseReport();
}
protected override string CreateGroupSummaryData(IRptParams filter, string tablename)
{
string result = base.CreateGroupSummaryData(filter, tablename);
return result;
}
protected override void CreateTempTable(string sSQL)
{
base.CreateTempTable(sSQL);
}
public override void DropTempTable()
{
base.DropTempTable();
}
public override System.Data.DataTable GetList(IRptParams filter)
{
var result = base.GetList(filter);
return result;
}
public override List<long> GetOrgIdList(IRptParams filter)
{
var result = base.GetOrgIdList(filter);
return result;
}
public override List<TreeNode> GetTreeNodes(IRptParams filter)
{
var result = base.GetTreeNodes(filter);
return result;
}
}
}