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

MRP如何二开数据模型策略实现类

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

MRP如何二开数据模型策略实现类

【应用场景】

MRP数据模型方便的配实现字段映射携带,及增加一些过滤条件。但对于更复杂的应用场景中,可能需要获取MRP运行时数据再对对应的供需数据进行干预,则适合参照本贴实现。


【注意事项】

对于能配置实现的,尽可能在MRP数据模型中配置实现,或变通设置实现,重载MRP数据模型策略实现类是最后选择。


【案例演示】

本示例是根据销售订单,如果运算方案编码是MRPSCH01,则销售组织编码需要是10开头的数据才获取。


【实现步骤】

<1>编写数据策略实现类,代码如下。 

using Kingdee.BOS.Util;

using Kingdee.BOS.Core.Metadata.QueryElement;

using Kingdee.BOS.Core.SqlBuilder;

using Kingdee.BOS.Orm.DataEntity;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace CustMrpModel_23231206

{

    public class Cust_MyMrpDataPolicy : Kingdee.K3.MFG.PLN.App.MrpModel.PolicyImpl.Demand.SODataPolicy

    {

        /// <summary>

        /// 策略执行前事件

        /// </summary>

        /// <returns></returns>

        protected override bool BeforeExecuteDataPolicy()

        {

            //本策略返回一个值,决定本数据模型要不要在本次运算中取数。

            //注意返回值为真则取消,假为不取消,默认是不取消。

            bool isCancel = base.BeforeExecuteDataPolicy();


            //这里可对isCancel根据特定业务规则进行修改


            return isCancel;            

        }


        /// <summary>

        /// 准备查询对象,该事件核心功能就是干预查询对象的过滤条件

        /// </summary>

        /// <param name="queryObj"></param>

        /// <param name="queryInfo"></param>

        protected override void OnPrepareQueryObject(QueryObject queryObj, QueryInfo queryInfo)

        {

            base.OnPrepareQueryObject(queryObj, queryInfo);


            //注意在这里写的自定义过滤条件,一般能在对应的MRP数据模型的过滤条件中配置。

            //写在这里须注意增加表关联,然后再增加条件,如增加物料可销售条件如下:

            string joinSql = string.Format(" inner join T_BD_MATERIALBASE tmbs11 on tmbs11.fmaterialid={0}.fmaterialid ",

                this.MrpGlobalDataContext.T_MRP_MATERIALDATA);

            string whereSql = string.Format(" and tmbs11.FISSALE='1' ");


            queryObj.SQLFrom += "\r\n" + joinSql;

            queryObj.SQLWhere += "\r\n" + whereSql;

        }


        /// <summary>

        /// 处理内存数据。

        /// 若有些场景是需要根据计划方案来筛选数据,而无无法通过拼接SQL过滤条件解决时,适合重载该方法

        /// </summary>

        /// <param name="processObjects"></param>

        protected override void BeforeProcessDataEntities(IEnumerable<DynamicObject> processObjects)

   

MRP如何二开数据模型策略实现类

【应用场景】MRP数据模型方便的配实现字段映射携带,及增加一些过滤条件。但对于更复杂的应用场景中,可能需要获取MRP运行时数据再对对应的...
点击下载文档文档为doc格式

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

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