Exemple #1
0
 /// <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),
                                                              "保存提示"
                                                          ));
                             }
                         }
                     }
                 }
             }
         }
     }
 }