二开案例.工序计划.生产订单生成工序计划携带二开字段
生产订单生成工序计划插件二开指导
场景:对于生产订单生成工序计划的某些应用场景,无法通过BOS IDE配置带出工序计划上的一些字段。例如:1、某个字段是通过工序计划本身的某几个计算而来,或者2、要从其他单据上获取某些字段赋值到工序计划上。这个时候,需要使用插件来干预生产订单生成工序计划的过程。
生产订单生成工序计划的二开插件开发步骤如下:
1、二开工程,添加对Kingdee.K3.MFG.SFC.App.Core.dll组件的引用(组件在应用服务器的安装目录:Kingdee\K3Cloud\WebSite\bin下能够找到)。
2、新建一个二开的类,继承一下AbstractSFCPlugIn类,如图所示:
3、重写一下BeforeExecute方法,如图所示:
BeforeExecute方法的参数BeforeExecuteEventArgs e中有两个信息:
1)e.Context:当前登录上下文,这里包含了当前登录用户的相关信息,一般在执行sql的时候需要传入这个参数;
2)e.ObjectLst:当前待处理的工序计划对象集合,工序计划保存前的完整数据包。
因此,如果想要对生成的工序计划进行干预,只需要在重写的BeforeExecute方法中,对e.ObjectLst中的数据进行相应的处理即可。需要循环处理每一个数据包的每一行分录,示例代码清单如下(详细代码根据具体情况作相应的修改即可):
/// <summary> /// 保存前操作 /// </summary> /// <param name="e"></param> public override void BeforeExecute(BeforeExecuteEventArgs e) { base.BeforeExecute(e); List<DynamicObject> lstObject = e.ObjectLst; foreach (DynamicObject obj in lstObject) { // 工序序列 列表 DynamicObjectCollection entryCols = obj["Entity"] as DynamicObjectCollection; // 循环处理每一个工序序列 foreach (DynamicObject entry in entryCols) { // 获取当前工序序列对应的工序列表 DynamicObjectCollection subEntity = entry["SubEntity"] as DynamicObjectCollection; // 下面循环处理工序列表的每一个分录 foreach (DynamicObject oper in subEntity) { // 在这里进行相应的操作,例如将某两个数量字段想乘,赋值到另一个二开所加的字段中 decimal operQty = Convert.ToDecimal(oper["OperQty"]); // 工序数量 decimal activity1BaseQty = 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\bin
4.2 打开BOS IDE,将《车间插件定义》发布到主控台,发布步骤如下:
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.Core
1、逗号前为二开类的完整路径;
2、逗号后为dll文件名。
如图所示:
4.6 如果不存在编码为”MO2OptPlan”的单据,则新增一个编码为”MO2OptPlan”的单据,分录维护和4.5同样。
4.7 维护完成后,将编码为”MO2OptPlan”的单据提交审核。
5、完成上述4个步骤后,还有一步必不可少,重启应用服务器的IIS。打开命令行(快捷键win+R,输入cmd),输入iisreset命令回车即可。
二开案例.工序计划.生产订单生成工序计划携带二开字段
本文2024-09-23 03:26:28发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-158876.html