【研发讲坛】MRP如何进行子步骤的二次开发
金蝶云社区-苏格拉底
苏格拉底
3人赞赏了该文章 4220次浏览 未经作者许可,禁止转载编辑于2016年08月22日 11:31:45

一、步骤说明1、 MRP二次开发类必须继承com.kingdee.eas.mm.planning.app.mrp.MRPStep2、 自己的逻辑实现写在方法:protected Object innerExecute(MRPCalcParam runParam)3、 将二次开发类登记在T_MM_MRPExtendStep表中:FextendedClass varchar(255) 字段表示被扩展的步骤全路径名FextendClass varchar(255) 表示跟随的步骤全路径名FisMergeTransaction int 用于显示异常,一般设置为1FisRunStep int 用于设定一个步骤是否执行,0不执行,1执行
二、举例1、场景:更新本次MRP产生的计划订单的表头字段FReqRemark2、实现类[table]
[tr][td=642]


[tr][td] package com.kingdee.eas.mm.planning.app;import com.kingdee.bos.BOSException;import com.kingdee.eas.common.EASBizException;
import com.kingdee.eas.mm.planning.app.mrp.MRPCalcParam;import com.kingdee.eas.mm.planning.app.mrp.MRPStep;import com.kingdee.eas.util.app.DbUtil;public class UpdatePlannedOrder extends MRPStep { protected String getStepDesc() { return "更新MRP产生的计划订单二次开发字段FReqRemark"; } protected Object innerExecute(MRPCalcParam runParam) throws EASBizException, BOSException { StringBuffer sqlBuf = new StringBuffer(); sqlBuf.append("update t_mm_plannedorder as t0 set (FReqRemark) = ") .append("(select t1.FRemark from T_MM_RequirementPlan as t1 ") .append("where t0.FReqPlanID = t1.FID ") .append("and t0.FCalcID = ? ") //当前运算ID .append(")") ; DbUtil.[i]execute[/i](runParam.getCtx(), sqlBuf.toString(),new Object[]{runParam.getRunLogID()}); return null; }
protected boolean isNeedUpdateProgress() { return false; }}


3、 将二次开发类登记在T_MM_MRPExtendStep表中,执行SQL

[table]
[tr][td=4]
[tr][td][td=584]


[tr][td]INSERT INTO T_MM_MRPExtendStep(FextendedClass, FextendClass,FisMergeTransaction,FisRunStep)
VALUES (‘com.kingdee.eas.mm.planning.app.mrp. MRPOrderGenerator’, ‘com.kingdee.eas.mm.planning.app.UpdatePlannedOrder’,1,1)

说明是MRPOrderGenerator【生成计划订单】这个步骤下的增加UpdatePlannedOrder这个子步骤。