/// <summary> /// 校验逻辑实现 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null) { return; } if (dataEntities != null && dataEntities.Length > 0) { DynamicObjectCollection dataEntry = dataEntities[0].DataEntity["POOrderEntry"] as DynamicObjectCollection; foreach (DynamicObject item in dataEntry) { DynamicObject materil = item["MaterialId"] as DynamicObject; if (materil == null) { continue; } if (Convert.ToBoolean(materil["FIsMeasure"]) && Convert.ToDecimal(item["FJNReqty"]) == 0) { validateContext.AddError(DataEntities[0].DataEntity, new ValidationErrorInfo ( "", DataEntities[0].DataEntity["Id"].ToString(), dataEntities[0].DataEntityIndex, 0, "001", string.Format("第{0}行为双计量物料时,需求酶活为必录字段", dataEntry.IndexOf(item) + 1), "保存提示" )); } } } }
/// <summary> /// 校验逻辑实现 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null) { return; } var enProp = validateContext.BusinessInfo.GetField(matFldKey).Entity.EntryName; this.EntityKey = enProp; var orgFldKey = validateContext.BusinessInfo.MainOrgField.Key; Field lotFld = validateContext.BusinessInfo.GetField(this.LotNoFldKey); Field matFld = validateContext.BusinessInfo.GetField(this.MatFldKey); Field auxFld = validateContext.BusinessInfo.GetField(this.AuxPropFldKey); foreach (var dataEntity in dataEntities) { DynamicObjectCollection rows = dataEntity[enProp] as DynamicObjectCollection; if (rows == null || rows.Count <= 0) { continue; } //取酶活量大于零的 var checkRows = rows.Where(f => Convert.ToDecimal(f["FJNUnitEnzymes"]) > 0).ToList(); if (checkRows == null || checkRows.Count() <= 0) { continue; } //先查本单的数据 var grp1 = (from p in checkRows select new { OrgID = long.Parse(dataEntity[validateContext.BusinessInfo.MainOrgField.PropertyName + "_Id"].ToString()), MatId = long.Parse(p[matFld.PropertyName + "_Id"].ToString()), AuxId = long.Parse(p[auxFld.PropertyName + "_Id"].ToString()), LotNumber = Convert.ToString(p[lotFld.PropertyName + "_Text"]), UnitEnzymes = Convert.ToDecimal(p["FJNUnitEnzymes"]) }).Distinct().ToList(); var grp2 = (from p in checkRows select new { OrgID = long.Parse(dataEntity[validateContext.BusinessInfo.MainOrgField.PropertyName + "_Id"].ToString()), MatId = long.Parse(p[matFld.PropertyName + "_Id"].ToString()), AuxId = long.Parse(p[auxFld.PropertyName + "_Id"].ToString()), LotNumber = Convert.ToString(p[lotFld.PropertyName + "_Text"]) }).Distinct().ToList(); if (grp1.Count != grp2.Count) { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBillNo", Convert.ToString(((DynamicObject)(dataEntity.DataEntity))["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-InStockCheck-002", string.Format("保存失败:启用双计量单位的物料,公司+物料+辅助属性+批号所对应的单位酶活量有多个!", dataEntity.BillNo), "金蝶提示")); continue; } //查数据库后台的数据 foreach (var item in checkRows) { var matVal = matFld.GetFieldValue(item) as DynamicObject; if (matVal == null) { continue; } CheckPara para = new CheckPara(); para.currEnFldName = validateContext.BusinessInfo.GetField(matFldKey).Entity.EntryPkFieldName; para.orgId = Convert.ToInt64(dataEntity.DataEntity[validateContext.BusinessInfo.MainOrgField.PropertyName + "_Id"]); para.matId = Convert.ToInt64(matVal["Id"]); var lotVal = lotFld.GetFieldValue(item); if (lotVal != null && !lotVal.IsNullOrEmptyOrWhiteSpace()) { para.lotNumber = lotVal.ToString(); } else { para.lotNumber = ""; } var aux = auxFld.GetFieldValue(item) as DynamicObject; if (aux != null) { para.auxPropId = Convert.ToInt64(aux["Id"]); } para.unitEnzymes = Convert.ToDecimal(item["FJNUnitEnzymes"]); para.currentEntryId = Convert.ToInt64(item["Id"]); para.currFormKey = validateContext.BusinessInfo.GetForm().Id; para.ctx = ctx; string errInfor = ""; if (CheckExists(para, out errInfor)) { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBillNo", Convert.ToString(dataEntity.DataEntity["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-InStockCheck-002", string.Format("保存失败:第{1}行物料,启用双计量单位,公司+物料+辅助属性+批号所对应的单位酶活量有多个({0})!", errInfor, rows.IndexOf(item) + 1), "金蝶提示")); continue; } } } }
/// <summary> /// 校验逻辑实现 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null) { return; } var enProp = validateContext.BusinessInfo.GetField(matFldKey).Entity.EntryName; this.EntityKey = enProp; var orgFldKey = validateContext.BusinessInfo.MainOrgField.Key; foreach (var dataEntity in dataEntities) { string billType = dataEntity["FBillTypeID_Id"].ToString(); if (!(billType == "005056c00008baa211e3097d9bc0332e" || billType == "005056945db184ed11e3af2dcda7ee49")) { continue; //产品检验单\自制工序检验单 } DynamicObjectCollection rows = dataEntity[enProp] as DynamicObjectCollection; if (rows == null || rows.Count <= 0) { continue; } //取酶活量大于零的 var checkRows = rows.Where(f => Convert.ToDecimal(f["FJNUnitEnzymes"]) > 0).ToList(); if (checkRows == null || checkRows.Count() <= 0) { continue; } //先查本单的数据 var grp1 = (from p in checkRows select new { OrgID = long.Parse(dataEntity[validateContext.BusinessInfo.MainOrgField.PropertyName + "_Id"].ToString()), MatId = long.Parse(p["MaterialId_Id"].ToString()), AuxId = long.Parse(p["AuxPropId_Id"].ToString()), LotNumber = Convert.ToString(p["Lot_Text"]), UnitEnzymes = Convert.ToDecimal(p["FJNUnitEnzymes"]) }).Distinct().ToList(); var grp2 = (from p in checkRows select new { OrgID = long.Parse(dataEntity[validateContext.BusinessInfo.MainOrgField.PropertyName + "_Id"].ToString()), MatId = long.Parse(p["MaterialId_Id"].ToString()), AuxId = long.Parse(p["AuxPropId_Id"].ToString()), LotNumber = Convert.ToString(p["Lot_Text"]) }).Distinct().ToList(); if (grp1.Count != grp2.Count) { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBillNo", Convert.ToString(((DynamicObject)(dataEntity.DataEntity))["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-InStockCheck-002", string.Format("保存失败:启用双计量单位的物料,公司+物料+辅助属性+批号所对应的单位酶活量有多个!", dataEntity.BillNo), "金蝶提示", ErrorLevel.Warning)); continue; } //查数据库后台的数据 foreach (var item in checkRows) { var matVal = item["MaterialId"] as DynamicObject; if (matVal == null) { continue; } CheckPara para = new CheckPara(); para.lotNumber = item["Lot_Text"].ToString(); if (para.lotNumber.Length == 0) { continue; } DynamicObjectCollection linkData = item["FEntity_Link"] as DynamicObjectCollection; para.tableName = linkData[0]["sTableName"].ToString(); para.linkId = string.Join(",", linkData.Select(s => Convert.ToInt32(s["SBillId"]))); para.currEnFldName = validateContext.BusinessInfo.GetField(matFldKey).Entity.EntryPkFieldName; para.orgId = Convert.ToInt64(dataEntity.DataEntity[validateContext.BusinessInfo.MainOrgField.PropertyName + "_Id"]); para.matId = Convert.ToInt64(matVal["Id"]); var aux = item["AuxPropId"] as DynamicObject; if (aux != null) { para.auxPropId = Convert.ToInt64(aux["Id"]); } para.unitEnzymes = Convert.ToDecimal(item["FJNUnitEnzymes"]); para.currentEntryId = Convert.ToInt64(item["Id"]); para.currFormKey = validateContext.BusinessInfo.GetForm().Id; para.ctx = ctx; string errInfor = ""; if (CheckExists(para, out errInfor)) { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBillNo", Convert.ToString(dataEntity.DataEntity["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-InStockCheck-002", string.Format("保存失败:第{1}行物料,启用双计量单位,公司+物料+辅助属性+批号所对应的单位酶活量有多个({0})!", errInfor, rows.IndexOf(item) + 1), "金蝶提示", ErrorLevel.Warning)); continue; } } } }
/// <summary> /// 校验逻辑实现 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null) { return; } if (dataEntities != null && dataEntities.Length > 0) { DynamicObjectCollection dataEntry = dataEntities[0].DataEntity["ReqEntry"] as DynamicObjectCollection; foreach (DynamicObject item in dataEntry) { DynamicObject materil = item["MaterialId"] as DynamicObject; if (materil == null) { continue; } if (Convert.ToBoolean(materil["FIsMeasure"]) && Convert.ToDecimal(item["FJNREQTY"]) == 0) { validateContext.AddError(DataEntities[0].DataEntity, new ValidationErrorInfo ( "", DataEntities[0].DataEntity["Id"].ToString(), dataEntities[0].DataEntityIndex, 0, "001", string.Format("第{0}行为双计量物料时,需求酶活为必录字段", dataEntry.IndexOf(item) + 1), "保存提示" )); } //辅助属性“具体描述名称”是否为空判断 DynamicObjectCollection auxMaterial = materil["MaterialAuxPty"] as DynamicObjectCollection;//物料辅助信息 foreach (DynamicObject item1 in auxMaterial) { string key = item1["AuxPropertyId_Id"].ToString(); if (key == "100002") { bool isUse = Convert.ToBoolean(item1["IsEnable1"]); if (isUse) { key = "F" + key; DynamicObject auxData = item["AuxpropId"] as DynamicObject;//辅助信息 if (auxData != null) { if (auxData[key] == null || string.IsNullOrWhiteSpace(auxData[key].ToString())) { validateContext.AddError(DataEntities[0].DataEntity, new ValidationErrorInfo ( "", DataEntities[0].DataEntity["Id"].ToString(), dataEntities[0].DataEntityIndex, 0, "001", string.Format("第{0}行为物料,启用了辅助属性'具体描述名称',该字段必填!", dataEntry.IndexOf(item) + 1), "保存提示" )); } } } } } } } }