生产订单生成工序计划插件二开指导使用场景:对于生产订单生成工序计划的某些应用场景,无法通过BOSIDE配置带出工序计划上的一些字段。例如:1、某个字段是通过工序计划本身的某几个计算而来;2、要从其他单据上获取某些字段赋值到工序计划上。这个时候,需要使用插件来干预生产订单生成工序计划的过程。生产订单生成工序计划的二开插件开发步骤如下:1、二开工程,添加对Kingdee.K3.MFG.SFC.App.Core.dll组件的引用(组件在应用服务器的安装目录:Kingdee\K3Cloud\WebSite\bin下能够找到)。2、新建一个二开的类,继承一下AbstractSFCPlugIn类,如图所示:3、重写一下BeforeExecute方法,如图所示:BeforeExecute方法的参数BeforeExecuteEventArgse中有两个信息:1)e.Context:当前登录上下文,这里包含了当前登录用户的相关信息,一般在执行sql的时候需要传入这个参数;2)e.ObjectLst:当前待处理的工序计划对象集合,工序计划保存前的完整数据包。因此,如果想要对生成的工序计划进行干预,只需要在重写的BeforeExecute方法中,对e.ObjectLst中的数据进行相应的处理即可。需要循环处理每一个数据包的每一行分录,示例代码清单如下(详细代码根据具体情况作相应的修改即可):///
///保存前操作//////
publicoverridevoidBeforeExecute(BeforeExecuteEventArgse){base.BeforeExecute(e);ListlstObject=e.ObjectLst;foreach(DynamicObjectobjinlstObject){//工序序列列表DynamicObjectCollectionentryCols=obj["Entity"]asDynamicObjectCollection;//循环处理每一个工序序列foreach(DynamicObjectentryinentryCols){//获取当前工序序列对应的工序列表DynamicObjectCollectionsubEntity=entry["SubEntity"]asDynamicObjectCollection;//下面循环处理工序列表的每一个分录foreach(DynamicObjectoperinsubEntity){//在这里进行相应的操作,例如将某两个数量字段想乘,赋值到另一个二开所加的字段中decimaloperQty=Convert.ToDecimal(oper["OperQty"]);//工序数量decimalactivity1BaseQty=Convert.ToDecimal(oper["Activity1BaseQty"]);//活动1基本量oper["PAEZ_Qty"]=operQty*activity1BaseQty;//给二开所的字段赋值,PAEZ_Qty为二开所加字段的绑定实体属性}}}}绑定实体属性,在字段属性中的位置如下图所示:注:如果在生成工序计划时还有其他的需求,也可以在BeforeExecute方法中进行相应的处理。这个方法是在工序计划保存前的处理,所以对工序计划的相应处理,在后面保存时均会保存到数据库中。4、插件注册:到上面3为止,插件的开发就完成了(如果代码有问题再做相应的修改即可),但是现在插件还是独立的,现在生产订单生成工序计划时还不会执行二开的代码,所以需要将插件注册到系统中。插件注册的步骤如下:4.1首先,编译工程得到二开的dll文件。例如(示例,具体命名可以自由指定):SecondDev.K3.MFG.SFC.App.Core.dll。将编译得到的二开dll文件拷贝到1中的安装目录下:Kingdee\K3Cloud\WebSite\bin4.2打开BOSIDE,将《车间插件定义》发布到主控台,发布步骤如下:4.2.1点击发布按钮,打开功能发布管理界面:4.2.2选择车间管理工序执行新增,打开维护界面:4.2.3指定编码,名称后,选择业务对象:【车间插件定义】,选择发布类型:列表,勾选桌面端和浏览器复选框。最后,保存即可。4.3进入金蝶云星空系统,找到车间插件定义菜单,打开车间插件列表界面:4.4查看是否存在一个编码为”MO2OptPlan”的数据,如图所示:4.5如果存在编码为”MO2OptPlan”的单据,则打开该单据,反审核该单据,新增一行分录,将二开的插件维护进去,例如:SecondDev.K3.MFG.SFC.App.Core.Example,SecondDev.K3.MFG.SFC.App.Core1、逗号前为二开类的完整路径;2、逗号后为dll文件名。如图所示:4.6如果不存在编码为”MO2OptPlan”的单据,则新增一个编码为”MO2OptPlan”的单据,分录维护和4.5同样。4.7维护完成后,将编码为”MO2OptPlan”的单据提交审核。5、完成上述4个步骤后,还有一步必不可少,重启应用服务器的IIS。打开命令行(快捷键win+R,输入cmd),输入iisreset命令回车即可。感谢智慧工厂同事雷本鑫提供本方案。