如何用代码获取MRP订单供需查询结果数据

遇到一些场景,需要给第三方系统传输MRP订单供需查询结果数据,或者有一些自定义的报表想基于MRP订单供需查询结果的数据来做。但MRP订单供需查询在系统中是属于动态表单,根据运算编号查询当次运算的供需匹配情况,没有现成的API接口获取查询结果数据。本案基于该场景,说明如果用代码调用获取MRP订单供需结果数据。以下示例代码是以菜单点击事件来举例,示例代码如下。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using Kingdee.BOS.Util; //引用Kingdee.BOS.dll
using Kingdee.BOS.Core.DynamicForm.PlugIn; //引用Kingdee.BOS.Core.dll
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Orm.DataEntity; //引用Kingdee.BOS.DataEntity.dll
using Kingdee.K3.Core.MFG.PLN.ParamOption; //引用Kingdee.K3.Core.dll
using Kingdee.K3.MFG.ServiceHelper.PLN; //引用Kingdee.K3.MFG.ServiceHelper.dll
using Kingdee.K3.Core.MFG; //引用Kingdee.K3.Core.dll
using Kingdee.K3.Core.MFG.EnumConst; //引用Kingdee.K3.MFG.PLN.Common.Core.dll
using Kingdee.K3.Core.MFG.EntityHelper;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Core.Metadata.FormElement;
namespace MyMRPQueryDSTestPlugIn_240608
{
public partial class MyMRPQueryDSTestPlugIn : AbstractDynamicFormPlugIn
{
/// <summary>
/// 菜单单击事件
/// </summary>
/// <param name="e"></param>
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
//tbGetMRPOrderDSInfos为菜单标识,可随意调整
if (e.BarItemKey.Equals("tbGetMRPOrderDSInfos"))
{
//mrpOdsqOption是获取MRP订单供需结果的主要参数
MRPOrderDSQueryOption mrpOdsqOption = new MRPOrderDSQueryOption();
//获取参与当次运算的销售订单和预测
string computeNo = "MRP000666"; //MRP000666只是举例,实际按业务场景获取
if (computeNo.IsNullOrEmptyOrWhiteSpace()) return;
QueryBuilderParemeter para = new QueryBuilderParemeter()
{
FormId = MFGFormIdConst.SubSys_PLN.PlanMrpCalcBill,
SelectItems = SelectorItemInfo.CreateItems(new string[]
{
CONST_PLN_MRPCALCBILL.CONST_FBillHead.KEY_FID,
CONST_PLN_MRPCALCBILL.CONST_FBillHead.KEY_FBillNo,
CONST_PLN_MRPCALCBILL.CONST_FDemandEntity.KEY_FDRelationFormId,
CONST_PLN_MRPCALCBILL.CONST_FDemandEntity.KEY_FDRelationBillNo,
CONST_PLN_MRPCALCBILL.CONST_FDemandEntity.KEY_FDRelationInterId,
CONST_PLN_MRPCALCBILL.CONST_FDemandEntity.KEY_FDRelationEntryId
}),
};
para.FilterClauseWihtKey = string.Format(" FBillNo='{0}' AND FDRelationFormId IN('SAL_SaleOrder','PLN_FORECAST') ", computeNo);
DynamicObjectCollection dInfos = QueryServiceHelper.GetDynamicObjectCollection(this.Context, para);
if (dInfos.IsEmpty()) return;
//以下是构建选单数据mrpOdsqOption,对应界面的就是选单表体数据
FormMetadata meta = MetaDataServiceHelper.Load(this.Context, "PLN_MRPOrderDSQuery") as FormMetadata;
DynamicObject mrpOrderDSData = new DynamicObject(meta.BusinessInfo.GetDynamicObjectType());
EntryEntity entryEntity = meta.BusinessInfo.GetEntryEntity(CONST_PLN_MRPOrderDSQuery.CONST_FSelEntity.ENTITY_FSelEntity);
DynamicObjectCollection selEntrys = mrpOrderDSData.GetDynamicValue<DynamicObjectCollection>(CONST_PLN_MRPOrderDSQuery.CONST_FSelEntity.ENTITY_ORM_SelEntity);
int seq = 1;
foreach (DynamicObject dInfo in dInfos)
{
DynamicObject selEntry = new DynamicObject(entryEntity.DynamicObjectType);
if (entryEntity.SeqDynamicProperty != null)
{
entryEntity.SeqDynamicProperty.SetValue(selEntry, seq++);
}
selEntry.SetDynamicObjectItemValue(CONST_PLN_MRPOrderDSQuery.CONST_FSelEntity.ORM_RelationFormId_Id
如何用代码获取MRP订单供需查询结果数据
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



