protected override void ProcessRule(InputAgs args, ResultAgs rst) { rst.InOutBaseCardType = BaseCarType.TempCar; string errorMsg = ""; if (args.CarTypeInfo.IsIgnoreHZ && args.Plateinfo.LicenseNum.Length >= 7) { var plateNumber = args.Plateinfo.LicenseNum.Substring(1, args.Plateinfo.LicenseNum.Length - 1); var iorecord = ParkIORecordServices.QueryInCarTempIORecordByLikePlateNumber(args.AreadInfo.PKID, plateNumber, out errorMsg); if (iorecord != null) { args.Plateinfo.LicenseNum = iorecord.PlateNumber; } } IsPoliceFree(args, rst); var blackList = ParkBlacklistServices.GetBlacklist(args.AreadInfo.PKID, args.Plateinfo.LicenseNum, out errorMsg); if (blackList != null) { if (blackList.Status == BlackListStatus.NotEnterAndOut) { rst.ResCode = ResultCode.BlacklistCar; return; } if (args.GateInfo.IoState == IoState.GoOut && blackList.Status == BlackListStatus.CanEnterAndNotOut) { rst.ResCode = ResultCode.BlacklistCar; return; } } if (args.GateInfo.IsTempInOut == YesOrNo.No)//子区域允许月卡进出 { if (!rst.IsPoliceFree) { rst.ResCode = ResultCode.NoPermissionsInOut; return; } } }
protected override void ProcessRule(InputAgs args, ResultAgs rst) { rst.InOutBaseCardType = BaseCarType.TempCar; string errorMsg = ""; if (args.CarTypeInfo.IsIgnoreHZ && args.Plateinfo.LicenseNum.Length >= 7) { var plateNumber = args.Plateinfo.LicenseNum.Substring(1, args.Plateinfo.LicenseNum.Length - 1); var iorecord = ParkIORecordServices.QueryInCarTempIORecordByLikePlateNumber(args.AreadInfo.PKID, plateNumber, out errorMsg); if (iorecord != null) { args.Plateinfo.LicenseNum = iorecord.PlateNumber; } } IsPoliceFree(args, rst); var blackList = ParkBlacklistServices.GetBlacklist(args.AreadInfo.PKID, args.Plateinfo.LicenseNum, out errorMsg); if (blackList != null) { if (blackList.Status == BlackListStatus.NotEnterAndOut) { rst.ResCode = ResultCode.BlacklistCar; return; } if (args.GateInfo.IoState == IoState.GoOut && blackList.Status == BlackListStatus.CanEnterAndNotOut) { rst.ResCode = ResultCode.BlacklistCar; return; } } var vistar = ParkVisitorServices.GetNormalVisitor(args.AreadInfo.Parkinfo.VID, args.Plateinfo.LicenseNum, out errorMsg); if (vistar != null && args.Plateinfo.TriggerTime >= vistar.BeginDate && args.Plateinfo.TriggerTime <= vistar.EndDate && (vistar.VisitorCount > 0 || vistar.VisitorCount == -1)) { var vistarcar = ParkVisitorServices.GetVisitorCar(args.AreadInfo.PKID, vistar.RecordID, out errorMsg); if (vistarcar != null && (vistar.VisitorCount == -1 || vistar.VisitorCount > vistarcar.AlreadyVisitorCount)) { //访客表中 在时段内 且进出次数大于已经进出次数时 允许进出 var carModelid = vistar.CarModelID; if (!carModelid.IsEmpty()) { var carModel = ParkCarModelServices.QueryByRecordId(vistar.CarModelID); if (carModel != null) { args.CarModel = carModel; } } rst.ValidMsg = "访客车辆"; rst.IsVisitorCar = true; rst.VisitorCar = vistarcar; return; } else if (args.GateInfo.IsTempInOut == YesOrNo.No) { rst.ResCode = ResultCode.NoPermissionsInOut; return; } } else if (args.GateInfo.IsTempInOut == YesOrNo.No) //子区域允许月卡进出 { if (!rst.IsPoliceFree) { rst.ResCode = ResultCode.NoPermissionsInOut; return; } } }
protected override void ProcessRule(InputAgs args, ResultAgs rst) { string errorMsg = ""; var blackList = ParkBlacklistServices.GetBlacklist(args.AreadInfo.PKID, args.Plateinfo.LicenseNum, out errorMsg); if (blackList != null) { if (blackList.Status == BlackListStatus.NotEnterAndOut) { rst.ResCode = ResultCode.BlacklistCar; } else if (args.GateInfo.IoState == IoState.GoOut && blackList.Status == BlackListStatus.CanEnterAndNotOut) { rst.ResCode = ResultCode.BlacklistCar; } else { rst.ValidMsg = "黑名单车辆"; } } if (args.CardInfo != null && args.CarTypeInfo != null) { var siglelist = ParkCarTypeSingleServices.QueryParkCarTypeByCarTypeID(args.CarTypeInfo.CarTypeID); if (siglelist == null || siglelist.Count <= 0) { return; } var sigle = siglelist.Find(s => s.Week == (int)DateTime.Now.DayOfWeek); if (sigle == null) { return; } if (sigle.SingleType == 0) { return; } // sigle.SingleType 0 单双可进出 1 单可进出 2 双可进出 if (args.Plateinfo.LicenseNum.Length < 1) { return; } List <string> stringplates = new List <string> { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; var cplate = args.Plateinfo.LicenseNum.Substring(args.Plateinfo.LicenseNum.Length - 2, 1); var index = 0; if (cplate.IsInteger()) { index = cplate.ToInt(); } else { index = stringplates.IndexOf(cplate) + 1; } if (index.IsEvennumber() && sigle.SingleType == 2)//偶数 { return; } else if (!index.IsEvennumber() && sigle.SingleType == 1)//奇数 { return; } else { rst.ResCode = ResultCode.NoPermissionsInOut; rst.ValidMsg = "车辆在限行时间"; } } }