电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

如何通过代码调用物料供需状态服务获取物料供需数据

来源:金蝶云社区作者:金蝶2024-09-238

如何通过代码调用物料供需状态服务获取物料供需数据

【应用场景】

有些业务场景是在系统的各业务对象要调用物料供需状态显示,这个办法详见:https://vip.kingdee.com/article/39174?productLineId=1。

但是,还有些业务场景是在业务对象上增加了一些自定义字段,需要获取物料供需状态的实时数据进行显示,本贴正是适用这个场景,介绍实现方法。


【注意事项】

系统已经将物料状态状态包装成服务,注意调用时尽量避免在循环中调用,毕竟该方法将实时读取各供需业务单据数据。


【案例演示】

调用本贴所述的物料供需状态服务,将得到一个IOperationResult类型的数据包,它的FuncResult 即是一个Tuple<List<DynamicObject>, Dictionary<string, List<DynamicObject>>>类型的业务数据包。

其中,Item1表示物料供需状态的时段表体数据,注意看Item1是个List,但每三行为一组表示一个物料(计划)维度的需求、供应和结存行,组别之间用后台字段FRowId来区分,同组的行FRowId相同。

另外,Item2表示物料供需状态的明细数据,注意到Item2本身是个字典,它的Key值对应的就是Item1各组的FRowId,它的Value值是个List,对应的就是Item1一组物料(计划)维度的供需状态信息。

 


【实现步骤】

本例示范在菜单点击来获取物料供需状态数据,步骤如下:

<1>编写表单插件,在BarItemClick事件中调用物料供需状态服务,示例代码如下。如下代码已经过编译验证功能正确,可直接拷贝做成一个表单插件插件验证和调试。有不明之处,可详加留意代码注释部分,或跟帖讨论。 


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ComponentModel;

using Kingdee.BOS.Core.DynamicForm;

using Kingdee.BOS.Core.Metadata;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.BOS.Util;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.K3.Core.MFG.PLN.DynamicReport;

using Kingdee.K3.MFG.ServiceHelper.PLN;

using Kingdee.K3.Core.MFG.Utils;

using Kingdee.K3.Core.MFG.EnumConst;

using Kingdee.K3.Core.MFG.EntityHelper;

using Kingdee.BOS.ServiceHelper;

using Kingdee.BOS.Core.Metadata.EntityElement;

using Kingdee.K3.Core.MFG;

using Kingdee.BOS.Core.Metadata.FieldElement;


namespace Test20230926

{

    public class Test20230926.TestCustDFPlugIn : AbstractDynamicFormPlugIn

    {

        /// <summary>

        /// 菜单单击事件

        /// </summary>

        /// <param name="e"></param>

        public override void BarItemClick(BarItemClickEventArgs e)

        {

            base.BarItemClick(e);


            if (e.BarItemKey.Equals("tbGetMtroDSDataTest"))

            {

                GetMtroDSDataTest();

            }

        }


        /// <summary>

        /// 菜单单击事件

        /// </summary>

        private void GetMtroDSDataTest()

        {

            //首先,构建物料供需状态查询参数包

            DemandSupplyStateQueryParam dssqPara = new DemandSupplyStateQueryParam();

            dssqPara.BeginDate = new DateTime(1900, 1, 1);

            dssqPara.EndDate = new DateTime(2100, 12, 31);

            dssqPara.CurrDate = DateTime.Today.Date;

            dssqPara.OrgIds = new List<long>() { 1 };

            dssqPara.ProSchedule = string.Empty;

            

            //指定需求参数单据类型,相当于过滤界面勾选需求单据:dssqPara.DemandBill.Add("PRD_MO", new List<string>() { "单据类型内码0", "单据类型内码1" });

            dssqPara.DemandBill.Add("SAL_SaleOrder", new List<string>() { "eacb50844fc84a10b03d7b841f3a6278", "1e17ce9c878a483da7fe38e5a4e992a0", "88de45ad2499437f9b21096997b297e2", "7e206b700d1343b5b60e20b992c84469", "a300e2620037435492aed9842875b451", "abcdce9c878a483da7fe38e5a4e992a0", "abcd6b700d1343b5b60e20b992c84469", "78acc0ac34018b1e11e303f97ece4232", "54a350fbb6c248", "636372c501021e" });

            dssqPara.DemandBill.Add("STK_OutStockApply", new List<string>() { "59dc3f6446d6c2", "59dc68755e39b2", "59dc68b45e3a46", "6397d59bd425e2", "642f86d750f6c7", "649114afd694a9" });

            dssqPara.DemandBill.Add("STK_TRANSFEROUT", new List<string>() { "546abb491109ba", "de3bcacc98434ec68a358aa5abcd9183" });

            dssqPara.DemandBill.Add("PLN_PLANORDER", new List<string>() { "4c1b07214adb4651aa2437ef48738af9", "77ddfb5c4daa44d288b4e9efbd768e94" });

            dssqPara.DemandBill.Add("STK_MisDelivery", new List<string>() { "005056941128814b11e31b9d2979ed35", "0050569448a4966511e336d026c93cba", "136bf6db80a14da8b3c332383f796739", "54533291F9A44D38809F70000499BEE9", "551debb583e5ce", "6333bcf6dbb501", "6340cb2a34844b", "6397df6cd42a6c", "64910f29d678d5" });

            dssqPara.DemandBill.Add("PRD_FeedMtrl", new List<string>() { "ca103ed148d0492dbe81d89f54d9ef85" });

            dssqPara.DemandBill.Add("PRD_MO", new List<string>() { "123f39178eb2424c8449f992e1fff1ee", "0e74146732c24bec90178b6fe16a2d1c", "005056945fca85e511e42420f363da25", "6363a88801084d" });

            dssqPara.DemandBill.Add("PRD_ReturnMtrl", new List<string>() { "577658dd483b7d", "c4e4cef46c844a2bb2a7faf0cf6dc2cb" });

            dssqPara.DemandBill.Add("REM_IndepenReqPlan", new List<string>() { "005056a06707af9511e3e6efe1be1b00" });

            dssqPara.DemandBill.Add("REM_MixedFlowPlan", new List<string>() { "005056a06707af9511e3e7ceb5cdc3fe" });

            dssqPara.DemandBill.Add("REM_ProdSubDayPlan", new List<string>() { "547547f815fc40544e" });

            dssqPara.DemandBill.Add("STK_TRANSFERAPPLY", new List<string>() { "59c46b1074cd1d", "59c46b3974cd6f" });

            dssqPara.DemandBill.Add("SUB_FEEDMTRL", new List<string>() { "532c672029694473916a258fae962b1c" });

            dssqPara.DemandBill.Add("SUB_EXCONSUME", new List<string>() { "584f4087a14649" });

            dssqPara.DemandBill.Add("SUB_SUBREQORDER", new List<string>() { "87035fdb6a31407a8819750df751d233", "93904bf745d84ae0ad08da30949754e0" });

            dssqPara.DemandBill.Add("SUB_RETURNMTRL", new List<string>() { "0c2c96bb7f534768a96ab08cdd6fc26e", "b943c27f285546f8a5c0d544034328de" });

            dssqPara.DemandBill.Add("PLN_FORECAST", new List<string>() { "123ab4b2e10943ea8fe52dc771a727f9", "5b0f9aa7381170", "6334492cdc0977" });

            dssqPara.DemandBill.Add("STK_TransferDirect", new List<string>() { "005056941128823c11e323525db18103", "0bcc8f3ce0a64171b1a901344d1ac239", "a7c7f20d5faa46ecbeb88ee4e207390e", "b15923ad5e39421aa188380c89849cb5", "ce8f49055c5c4782b65463a3f863bb4a" });

            dssqPara.DemandBill.Add("PLN_REQUIREMENTORDER", new List<string>() { "f94e4845700c4dab93e652b61edcb819" });


            //指定供应参数单据类型,相当于过滤界面勾选供应单据:dssqPara.SupplyBill.Add("PRD_MO", new List<string>() { "单据类型内码0", "单据类型内码1" });

            dssqPara.SupplyBill.Add("PUR_PurchaseOrder", new List<string>() { "83d822ca3e374b4ab01e5dd46a0062bd", "6d01d059713d42a28bb976c90a121142", "ba3ad5fc48d44271a048da26b615b589", "0023240234df807511e308990e04cf6a", "5abd9deba59210", "6247e8be5b17b0" });

            dssqPara.SupplyBill.Add("PUR_Requisition", new List<string>() { "03c6c047c65c4a17a792f85dcf3cabec", "60d2460b0e5742d58432f70a06f193b6", "93591469feb54ca2b08eb635f8b79de3", "ba0754db8aa04f8cb3d42d186858ed03" });

            dssqPara.SupplyBill.Add("STK_TRANSFERIN", new List<string>() { "546ab95111081b", "e65a4f29743a44b7b67dc8145e1f9c92" });

            dssqPara.SupplyBill.Add("PLN_PLANORDER", new List<string>() { "4c1b07214adb4651aa2437ef48738af9", "77ddfb5c4daa44d288b4e9efbd768e94" });

            dssqPara.SupplyBill.Add("STK_MISCELLANEOUS", new List<string>() { "d772ead981e748d69dda1caac7583f8c" });

            dssqPara.SupplyBill.Add("PRD_MO", new List<string>() { "123f39178eb2424c8449f992e1fff1ee", "0e74146732c24bec90178b6fe16a2d1c", "005056945fca85e511e42420f363da25", "6363a88801084d" });

            dssqPara.SupplyBill.Add("REM_IndepenReqPlan", new List<string>() { "005056a06707af9511e3e6efe1be1b00" });

            dssqPara.SupplyBill.Add("REM_MixedFlowPlan", new List<string>() { "005056a06707af9511e3e7ceb5cdc3fe" });

            dssqPara.SupplyBill.Add("REM_ProdSubDayPlan", new List<string>() { "547547f815fc40544e" });

            dssqPara.SupplyBill.Add("SUB_SUBREQORDER", new List<string>()

如何通过代码调用物料供需状态服务获取物料供需数据

【应用场景】有些业务场景是在系统的各业务对象要调用物料供需状态显示,这个办法详见:https://vip.kingdee.com/article/39174?productLin...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信