using Demo.BillView.PRD;
|
using Kingdee.BOS;
|
using Kingdee.BOS.App.Data;
|
using Kingdee.BOS.Core;
|
using Kingdee.BOS.Core.DynamicForm.PlugIn;
|
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
using Kingdee.BOS.Core.Validation;
|
using Kingdee.BOS.Orm.DataEntity;
|
using Kingdee.BOS.ServiceHelper;
|
using Kingdee.BOS.Util;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace Demo.BillView.PRD
|
{
|
[Description("[日计划工单-删除校验器] 服务插件"), HotUpdate]
|
public class Pro_DayPlanDeleteVal : AbstractOperationServicePlugIn
|
{
|
public override void OnPreparePropertys(PreparePropertysEventArgs e)
|
{
|
base.OnPreparePropertys(e);
|
e.FieldKeys.Add("FMoEntryId");
|
e.FieldKeys.Add("FMoBillNo");
|
e.FieldKeys.Add("FPRDMOENTYID");
|
}
|
//自定义校验器
|
public override void OnAddValidators(AddValidatorsEventArgs e)
|
{
|
base.OnAddValidators(e);
|
TestValidator validator = new TestValidator();
|
validator.AlwaysValidate = true;
|
validator.EntityKey = "FBillHead";
|
e.Validators.Add(validator);
|
}
|
/// <summary>
|
/// 保存单据头校验器
|
/// </summary>
|
private class TestValidator : AbstractValidator
|
{
|
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
|
{
|
foreach (var data in dataEntities)
|
{
|
DynamicObject item = data.DataEntity;
|
//LogService.Write(item);
|
var FId = Convert.ToInt32(item["Id"].ToString());
|
var FBillNo = item["BillNo"].ToString();
|
var FMoEntryId = Convert.ToInt32(item["FMoEntryId"].ToString());
|
var FMoBillNo = item["FMoBillNo"].ToString();
|
var FPRDMOENTYID = Convert.ToInt32(item["FPRDMOENTYID"].ToString());
|
if (FMoEntryId == 0 || FMoEntryId == FPRDMOENTYID)
|
continue;
|
string sql = $"select FbillNo from T_PRD_MOCHANGE t1 join T_PRD_MOCHANGEENTRY t2 on t1.FID =T2.FID where t2.FDayPlanFid = {FId}";
|
var FMOChangeBillNo = DBServiceHelper.ExecuteScalar<string>(Context, sql, "");
|
sql = $"select FbillNo from T_PRD_MO t1 join T_PRD_MOENTRY t2 on t1.FID =T2.FID where t2.FDayPlanFid = {FId}";
|
var FMONewBillNo = DBServiceHelper.ExecuteScalar<string>(Context, sql, "");
|
if (FMOChangeBillNo == "" && FMONewBillNo == "")
|
continue;
|
validateContext.AddError(item,
|
new ValidationErrorInfo
|
(
|
"",// 出错的字段Key,可以空
|
item["Id"].ToString(),// 数据包内码,必填,后续操作会据此内码避开此数据包
|
data.DataEntityIndex, // 出错的数据包在全部数据包中的顺序
|
data.RowIndex,// 出错的数据行在全部数据行中的顺序,如果校验基于单据头,此为0
|
"001",// 错误编码,可以任意设定一个字符,主要用于追查错误来源
|
$"日计划工单已生成关联订单;生产订单号:{FMoBillNo},生产订单变更单:{FMOChangeBillNo}",// 错误的详细提示信息
|
"保存:" + data.BillNo,// 错误的简明提示信息
|
Kingdee.BOS.Core.Validation.ErrorLevel.Error//// 错误级别:警告、错误...
|
));
|
}
|
}
|
}
|
}
|
}
|