二开案例.工序计划.生产订单生成工序计划携带二开字段

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.工序计划.生产订单生成工序计划携带二开字段

生产订单生成工序计划插件二开指导

场景:对于生产订单生成工序计划的某些应用场景,无法通过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命令回车即可。

二开案例.工序计划.生产订单生成工序计划携带二开字段

生产订单生成工序计划插件二开指导场景:对于生产订单生成工序计划的某些应用场景,无法通过BOS IDE配置带出工序计划上的一些字段。例如:...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息