二开案例-【C#】如何在生产订单下达操作上增加自定义的校验器?

由于生产订单状态机(指生产订单订单上计划确认、下达、开工、完工、结案等状态转换)只是个空操作,它的作用只是承担状态发起的作用,添加的标准校验器不能干预到状态的逻辑,目前这些状态的转换校验是由内部状态机的校验来实现,通过标准的操作校验和前台表单插件无法生效,所以提供下面的方法供客户自定义添加校验器,以结案为例。
1、打开【BOSIDE-生产制造-基础管理-普通基础资料】下的单据业务状态机发布到菜单(注意:发布类型为列表)如图:


2、开始编辑自定义的校验器,以【下达】为例,检验生产订单分录自定义基础资料客户下达时必录;

3、代码编写步骤
新加的类(Ext_Release.cs)继承结案的实现类(Release.cs),需要引用下Kingdee.K3.MFG.PRD.App.Core组件;
重写GetValidator方法;
首先要执行下基类的base.GetValidator,然后添加自己的校验器(Ext_ReleaseValidator.cs);
注意:Confirm【计划确认】,Release【下达】,Start【开工】,Finish【完工】,Close【结案】,CloseAccount【结算】。
代码如下:
using Kingdee.BOS.Util;
using Kingdee.K3.Core.MFG.EnumConst;
using Kingdee.K3.MFG.App.BizEngine.Validator;
using Kingdee.K3.MFG.PRD.App.Core.MOBizState;
using Kingdee.K3.MFG.PRD.App.Core.Validate;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using Kingdee.K3.Core.MFG.EntityHelper;
using Kingdee.BOS.Orm.DataEntity;
namespace ITIBB.App.ServicePlugIn
{
[Description("生产订单下达校验器")]
public class Ext_Release : Release
{
/// <summary>
/// 获取标准产品下达校验器,并注册二开校验器【注意需要执行base,以保证标准逻辑的执行】
/// </summary>
/// <returns></returns>
public override AbstractBusinessStateValidator[] GetValidator()
{
//获取标准产品存在的校验器
AbstractBusinessStateValidator[] validatorArr = base.GetValidator();
//判断标准产品本身是否存在校验器,存在则直接转换类型,不存在则实例化
List<AbstractBusinessStateValidator> validatorLst = validatorArr.IsEmpty() ?
new List<AbstractBusinessStateValidator>() : validatorArr.ToList();
//添加二开的校验器
validatorLst.Add(new Ext_ReleaseValidator());
//返回校验器
return validatorLst.ToArray();
}
}
[Description("下达校验器逻辑")]
public class Ext_ReleaseValidator : AbstractMoBusinessStateValidator
{
protected override void ValidateData()
{
//二开校验器逻辑主要写在该位置
base.ValidateData();
//例如:检验自定义客户字段是否填值
this.ExtCheckCustomerMustInput();
}
/// <summary>
/// 检查自定义字段下达时必录
/// 生产订单分录数据包:this.BizStateContext.InputBizData
/// </summary>
private void ExtCheckCustomerMustInput()
{
//具体逻辑实现
foreach (var data in this.BizStateContext二开案例-【C#】如何在生产订单下达操作上增加自定义的校验器?
由于生产订单状态机(指生产订单订单上计划确认、下达、开工、完工、结案等状态转换)只是个空操作,它的作用只是承担状态发起的...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



