public override void Process(ProcessRecord recordInfo) { try { var voiceBllTemp = EngineContext.Current.Resolve <IPBA_VOICE_TEMPLATE>(); List <string> strArr = new List <string>(); if (base.getCurrParkInfo().blacklist) { var temp = EngineContext.Current.Resolve <IPL_BLACK_WHITE_MANAGER>(); /////////////////////////获?取¨?当ì?à前??入¨?口¨2车|ì牌?的ì?鉴?权¨?§///////////////////////// int role = temp.GetVEHICLE_NOType(recordInfo.INOUT_RECODE.VEHICLE_NO.ToString()); enumAuthenticationType authentionType = (enumAuthenticationType)role; ///////////////////////武?警?¥车|ì牌?默?认¨?VIP///////////////////////////////// if (CommHelper.ArmedPoliceCard(recordInfo.INOUT_RECODE.VEHICLE_NO)) { authentionType = enumAuthenticationType.SPECIAL_TYPE_VIP; } recordInfo.authenticationType = authentionType; CommHelper.getSoundByauthentionType(recordInfo); recordInfo.CheckPointResult = authentionType == enumAuthenticationType.SPECIAL_TYPE_BLACK ? false : true; if (!recordInfo.CheckPointResult) { Sound(recordInfo); return; } } //如¨?果?是o?贵¨?宾à?车|ì不?需¨¨鉴?权¨?§,ê?直?à接¨?放¤?行D if (recordInfo.authenticationType == enumAuthenticationType.SPECIAL_TYPE_VIP) { recordInfo.CheckPointResult = true; base.ShowLED(recordInfo); return; } //////////////////////////////临¢¨′时o?à通a?§行D权¨?§限T/////////////////////////////// var tempAccessRight = EngineContext.Current.Resolve <IPL_ACCESS_RIGHTS_MANAGERS>(); var accessRight = tempAccessRight.GetModelByVEHICLE_NO(recordInfo.INOUT_RECODE.VEHICLE_NO); if (null != accessRight) { if (accessRight.ACCREDIT_TYPE == 1) { if (accessRight.ACCESS_CHANNEL_CODE.Contains(recordInfo.CHN_CODE) && accessRight.BEGIN_TIME <= DateTime.Now && DateTime.Now <= accessRight.END_TIME) { var tempInOutRecordArchive = EngineContext.Current.Resolve <ICR_INOUT_RECODE_ARCHIVE>(); int InCount = tempInOutRecordArchive.GetInOutCount(accessRight); if (InCount < accessRight.ACCREDIT_NUMBER) { //临¢¨′时o?à授o¨2权¨?§车|ì入¨?场? recordInfo.authenticationType = enumAuthenticationType.TempAuthorization; recordInfo.CheckPointResult = true; recordInfo.IsFree = accessRight.TIMEOUT_BILING == 0 ? true : false; recordInfo.temporaryBilling = (enumTemporaryBilling)accessRight.TIMEOUT_BILING; return; } else { recordInfo.CheckPointResult = false; recordInfo.SpeechType = enumSpeechType.NoPermissions; Sound(recordInfo); return; } } else { recordInfo.CheckPointResult = false; recordInfo.SpeechType = enumSpeechType.NoPermissions; Sound(recordInfo); return; } } else { if (accessRight.ACCESS_CHANNEL_CODE.Contains(recordInfo.CHN_CODE) && accessRight.BEGIN_TIME <= DateTime.Now && DateTime.Now <= accessRight.END_TIME) { recordInfo.CheckPointResult = false; recordInfo.SpeechType = enumSpeechType.NoPermissions; Sound(recordInfo); return; } } } ///////////////////////月?卡?§暂Y停a?ê,ê?转áa临¢¨′时o?à卡?§///////////////////////// if (recordInfo.CARD_TYPE == enumCardType.CAR_TYPE_MONTH) { var tempPermit = EngineContext.Current.Resolve <Parking.DBService.IBLL.ICR_TRAFFIC_PERMIT_INFO>(); var permitList = tempPermit.GetIssueInfo(recordInfo.INOUT_RECODE.VEHICLE_NO).ToList(); var permitSigle = permitList.Where(x => x.CARDTYPE == enumCardType.CAR_TYPE_MONTH && x.BEGAIN_TIME <= DateTime.Now && x.END_TIME >= DateTime.Now).FirstOrDefault(); if (null != permitSigle) { if (permitSigle.TRAFFIC_PERMIT_STATUS == 0) { /////////////////凭?证?è停a?ê用??则¨°月?转áa临¢¨′处?|理¤¨a///////////// if (GlobalEnvironment.MonthToTemp) { recordInfo.SpeechType = enumSpeechType.MonthCarLocking; recordInfo.IsMonthToTemp = true; recordInfo.CARD_TYPE = enumCardType.CAR_TYPE_TEMP; recordInfo.CheckPointResult = true; } else { recordInfo.CheckPointResult = false; recordInfo.SpeechType = enumSpeechType.MonthCarLocking; Sound(recordInfo); return; } } } else { recordInfo.CheckPointResult = false; recordInfo.SpeechType = enumSpeechType.MonthCarLocking; Sound(recordInfo); return; } /////////////////////重?新?选?择?车|ì位?////////////////// if (GlobalEnvironment.MVMP) { if (string.IsNullOrEmpty(recordInfo.SPACE_CODE)) { var permit = permitList.Where(x => x.CARDTYPE == enumCardType.CAR_TYPE_MONTH && x.BEGAIN_TIME <= DateTime.Now && x.END_TIME >= DateTime.Now && x.SPACE_STATUS == 0 && x.TRAFFIC_PERMIT_STATUS == 1 && string.IsNullOrEmpty(x.INOUT_RECORD_ID)).FirstOrDefault(); if (null != permit) { TimeSpan sp = permit.END_TIME.Subtract(DateTime.Now.AddDays(-1)); recordInfo.SPACE_CODE = permit.SPACE_CODE; recordInfo.Validity = sp.Days; } else { string InOutRecords = string.Empty; var ls = permitList.Where(x => x.CARDTYPE == enumCardType.CAR_TYPE_MONTH && x.BEGAIN_TIME <= DateTime.Now && x.END_TIME >= DateTime.Now && x.SPACE_STATUS == 1 && x.TRAFFIC_PERMIT_STATUS == 1).GroupBy(x => new { x.INOUT_RECORD_ID }).Select(g => new { INOUT_RECORD_ID = g.Key.INOUT_RECORD_ID }); foreach (var t in ls) { InOutRecords += t.INOUT_RECORD_ID + ","; } if (!string.IsNullOrEmpty(InOutRecords)) { recordInfo.INOUT_RECODE.OccupyIds = InOutRecords.TrimEnd(','); } if (GlobalEnvironment.MonthToTemp) { recordInfo.IsMonthToTemp = true; recordInfo.CARD_TYPE = enumCardType.CAR_TYPE_TEMP; recordInfo.SpeechType = enumSpeechType.ParkingOccupyTempIn; } else { recordInfo.CheckPointResult = false; recordInfo.SpeechType = enumSpeechType.ParkingOccupy; Sound(recordInfo); return; } } } } } ///////////////////////////校?ê验¨|卡?§类¤¨¤通a?§行D权¨?§限T/////////////////////////////// var strArea = GlobalEnvironment.CurrWorkStationOragnization.Where(x => x.ORGANIZATION_CODE == recordInfo.CHN_CODE).FirstOrDefault() as Area; if (strArea.ckIE.Contains(((int)recordInfo.CARD_TYPE).ToString())) { recordInfo.CheckPointResult = true; //////////////////月?卡?§权¨?§限T组á¨|通a?§行D权¨?§限T////////////////////// if (!base.HasPermit(recordInfo) && recordInfo.CARD_TYPE == enumCardType.CAR_TYPE_MONTH) { ////////////////////////月?卡?§无T通a?§行D权¨?§限T,ê?月?转áa临¢¨′/////////////////////// recordInfo.IsMonthToTemp = true; } } else { recordInfo.CheckPointResult = false; recordInfo.SpeechType = enumSpeechType.NoPermissions; Sound(recordInfo); return; } base.ShowLED(recordInfo); } catch (Exception ex) { LogHelper.Log.Error(ex.Message); recordInfo.CheckPointResult = false; } }