检验单样本检测值表体检验值必录校验二开方案

方案整体思路:检验单保存操作上增加二开插件,挂在标准产品保存插件之后,插件中添加校验器,逻辑如下:如果检验单对应的单据类型中未启用样本检测值检验则不校验;如果对应的检验项目的样本量为0则不校验,其余情况下根据检验项目的分析方法校验样本检测值表体对应的检测值是否全部录入,未全部录入则不允许保存;

示例代码如下:
using Kingdee.BOS;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Validation;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.K3.Core.MFG;
using Kingdee.K3.Core.MFG.EnumConst;
using Kingdee.K3.MFG.App;
using Kingdee.K3.MFG.App.ServicePlugIn;
using Kingdee.K3.MFG.App.ServiceValidator;
using System; using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.K3.Core.MFG.EntityHelper;
using Kingdee.BOS.Util;
namespace Kingdee.K3.MFG.QM.App.ServicePlugIn.InspectBill
{
public class testSave : AbstractMfgOperationPlugIn
{
public override void OnAddValidators(BOS.Core.DynamicForm.PlugIn.Args.AddValidatorsEventArgs e)
{
base.OnAddValidators(e);
//样本检测值必录校验
e.Validators.Add(new InspectValueMustInputValidator()
{
EntityKey = CONST_QM_InspectBill.CONST_FBillHead.ENTITY_FBillHead,
TimingPointString = ",Save,",
Option = this.Option,
});
}
}
public class InspectValueMustInputValidator : AbstractMfgServiceValidator
{
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
{
base.Validate(dataEntities, validateContext, ctx);
foreach (ExtendedDataEntity dataEntity in dataEntities)
{
string billTypeId = Convert.ToString(dataEntity.DataEntity[CONST_QM_InspectBill.CONST_FBillHead.ORM_FBillTypeID_Id]);
IBusinessDataService businessDataService =
AppServiceContext.GetService<IBusinessDataService>();
DynamicObject billTypePara = businessDataService.LoadBillTypePara(this.Context, MFGFormIdConst.SubSys_QM.InspectBillTPS, billTypeId);
bool enableInspectValue = billTypePara.GetDynamicObjectItemValue<bool>(CONST_InspectBillTPS.CONST_FBillHead.ORM_EnableSampleInspectValue, false);//启用样本检测值
if(!enableInspectValue) continue;
string billNo = dataEntity.DataEntity.GetDynamicValue<string>(CONST_QM_InspectBill.CONST_FBillHead.ORM_BillNo);
DynamicObjectCollection entryDyObjCol = dataEntity.DataEntity.GetDynamicValue<DynamicObjectCollection>(CONST_QM_InspectBill.CONST_FEntity.ENTITY_ORM_Entity);
Dictionary<int, List<int>> UnseqList = new Dictionary<int, List<int>>();
foreach (DynamicObject entryDyObj in entryDyObjCol)
{
int mainSeq = entryDyObj.GetDynamicValue<int>("Seq");
DynamicObjectCollection inspectitemCol = entryDyObj.GetDynamicValue<DynamicObjectCollection>(CONST_QM_InspectBill.CONST_FItemDetail.ENTITY_ORM_ItemDetail);//获取检验项目表体
if (inspectitemCol.IsEmpty()) continue;
List<int> seqList = new List<int>();//未全部录入样本检验值的检验项目分录序号
foreach (DynamicObject inspectItem in inspectitemCol)
{
int seq=inspectItem.GetDynamicValue<int>("Seq");
int sampleQty = inspectItem.GetDynamicValue<int>(CONST_QM_InspectBill.CONST_FItemDetail.ORM_SampleQty);//样本量
string analysisMethod = inspectItem.GetDynamicValue<string>(CONST_QM_InspectBill.CONST_FIte
检验单样本检测值表体检验值必录校验二开方案
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



