
## 生产订单生成工序计划-携带数据到工序列表
需求:生产订单自动生成工序计划时,需要自动从其他单据携带数据过来填充到“工序列表”子单据体。
对于较为简单的字段携带,可以直接通过配置制造字段映射,将字段值填充到工序计划。但对于不方便配置的情况,就需要插件干预。
1、直接配置字段映射(适用于简单的字段携带)
发布菜单“制造字段映射模型”:

配置字段映射:
登陆Cloud,打开“制造字段映射模型”,单据编号“SFC_OperationPlanning_Head”是生产订单到工序计划单据头的字段映射,单据编号“SFC_OperationPlanning_Entry”是工艺路线工序序列单据体到工序计划工序序列单据体的字段映射,单据号“SFC_OperationPlanning_SubEntry”是工艺路线工序列表子单据体到工序计划工序列表子单据体的字段映射。
如果工序计划工序列表的字段来源是工艺路线,就修改SFC_OperationPlanning_SubEntry,新增分录行,配置工艺路线字段到工序计划字段的映射,保存后提交审核:

重启IIS:
需要重启IIS,才能生效。
2、接口插件(适用于不方便配置的字段携带,PT133705之后的补丁)
发布菜单“车间插件定义”:

配置二开插件:
登陆Cloud,打开“车间插件定义”,单据编号“MO2OptPlan”是生产订单生成工序计划的插件定义,用于制造字段映射后批量更新工序计划对象集合、或保存操作后处理。
反审核后进行修改,新增分录行,填写“插件实现类”,序号表示执行顺序(由小到大),保存后提交审核:
插件实现类格式:命名空间.类名,组件名称(即生成的.dll的文件名)

实现二开插件:
继承Kingdee.K3.MFG.SFC.App.Core.PlugInDefine.AbstractSFCPlugIn,扩展方法BeforeExecute,通过参数BeforeExecuteEventArgs可以获取到已生成、但尚未保存到数据库的工序计划对象集合ObjectLst,直接给对象赋值即可;扩展方法AfterExecute,可以在工序计划已经保存到数据库后,直接进行数据库处理。参考代码如下:
```
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.K3.MFG.SFC.App.Core.PlugInDefine;
using Kingdee.K3.MFG.SFC.App.Core.PlugInDefine.Args;
using System.ComponentModel;
namespace K3.K3APP.SCTEST.BusinessPlugIn
{
[Description("生产订单生成工序计划插件")]
public class gxjhToscorder: AbstractSFCPlugIn
{
/// <summary>
/// 工序计划对象已生成,但尚未保存到数据库,可以直接给对象赋值