public override void Process(ProcessRecord recordInfo) { try { ///////////////////////////车|ì位?已°?锁?定?§/////////////////////////////// if (1 == recordInfo.INOUT_RECODE.LOCK_FLAG) { recordInfo.CheckPointResult = false; recordInfo.SpeechType = enumSpeechType.CarLocked; Sound(recordInfo); return; } ///////////////////////////黑¨2名?单죤校?ê验¨|/////////////////////////////// if (base.getCurrParkInfo().blacklist) { //////////////////////获?取¨?当ì?à前??出?口¨2车|ì牌?的ì?鉴?权¨?§////////////////////////// recordInfo.CheckPointResult = recordInfo.authenticationType == enumAuthenticationType.SPECIAL_TYPE_BLACK ? false : true; if (!recordInfo.CheckPointResult) { recordInfo.SpeechType = enumSpeechType.BlacklistCarOut; Sound(recordInfo); return; } } //如¨?果?是o?贵¨?宾à?车|ì不?需¨¨鉴?权¨?§,ê?直?à接¨?放¤?行D if (recordInfo.authenticationType == enumAuthenticationType.SPECIAL_TYPE_VIP) { recordInfo.CheckPointResult = true; return; } //////////////////////////////临¢¨′时o?à通a?§行D权¨?§限T/////////////////////////////// var tempAccessRight = EngineContext.Current.Resolve <IPL_ACCESS_RIGHTS_MANAGERS>(); var accessRight = tempAccessRight.GetModelByVEHICLE_NO(recordInfo.INOUT_RECODE.VEHICLE_NO); //判D断?是o?否¤?是o?临¢¨′时o?à授o¨2权¨?§车|ì并?é且¨°入¨?场?时o?à间?是o?否¤?在¨2临¢¨′时o?à授o¨2权¨?§时o?à间?内¨2 if (null != accessRight && accessRight.BEGIN_TIME <= recordInfo.INOUT_RECODE.IN_TIME && recordInfo.INOUT_RECODE.IN_TIME <= accessRight.END_TIME) { if (accessRight.ACCREDIT_TYPE == 1) { if (accessRight.ACCESS_CHANNEL_CODE.Contains(recordInfo.CHN_CODE)) { recordInfo.authenticationType = enumAuthenticationType.TempAuthorization; recordInfo.IsFree = accessRight.TIMEOUT_BILING == 0 ? true : false; recordInfo.temporaryBilling = (enumTemporaryBilling)accessRight.TIMEOUT_BILING; if (recordInfo.temporaryBilling == enumTemporaryBilling.CHARGE) { if (accessRight.END_TIME > System.DateTime.Now) { recordInfo.IsFree = true; } else { recordInfo.TemporaryEndTime = accessRight.END_TIME; } } recordInfo.CheckPointResult = true; return; } else { recordInfo.CheckPointResult = false; recordInfo.SpeechType = enumSpeechType.NoPermissions; Sound(recordInfo); return; } } } var tempPermit = EngineContext.Current.Resolve <Parking.DBService.IBLL.ICR_TRAFFIC_PERMIT_INFO>(); var permitList = tempPermit.GetIssueInfo(recordInfo.INOUT_RECODE.VEHICLE_NO).ToList(); var firstSigle = permitList.OrderBy(x => x.END_TIME).FirstOrDefault(); //月?卡?§停a?ê用??则¨°月?转áa临¢¨′处?|理¤¨a if (recordInfo.CARD_TYPE == enumCardType.CAR_TYPE_MONTH) { if (null != permitList && permitList.Count > 0) { int count = permitList.Where(x => x.TRAFFIC_PERMIT_STATUS == 0).Count(); if (count > 0) { recordInfo.CARD_TYPE = enumCardType.CAR_TYPE_TEMP; recordInfo.IsMonthToTemp = true; recordInfo.SpeechType = enumSpeechType.MonthCarLocking; } } } ///////////////////////车|ì位?权¨?§限T,ê?查¨|询?¥入¨?场?时o?à是o?否¤?占?用??车|ì位?,ê?没?有?D占?用??车|ì位?当ì?à月?转áa临¢¨′处?|理¤¨a///////////////////////// if (recordInfo.CARD_TYPE == enumCardType.CAR_TYPE_MONTH || recordInfo.IsMonthToTemp) { var spaceBllTemp = EngineContext.Current.Resolve <IPBA_PARKING_SPACE_MANAGER>(); var model = spaceBllTemp.GetModelByINOUTID(recordInfo.INOUT_RECODE.ID); //////////////////////无T场?内¨2记?录?////////////////////////// if (null != model && DateTime.Now < model.END_TIME) { recordInfo.SPACE_CODE = model.SPACE_CODE; TimeSpan sp = model.END_TIME.Subtract(DateTime.Now.AddDays(-1)); recordInfo.Validity = sp.Days; } else { //如¨?果?场?内¨2过y期¨2当ì?à临¢¨′时o?à车|ì处?|理¤¨a并?é产¨2生|¨2订?单죤 if ((null != model && DateTime.Now > model.END_TIME) || recordInfo.IsMonthToTemp) { recordInfo.IsMonthToTemp = true; recordInfo.SpeechType = enumSpeechType.MonthCardOverdueOut; if (GlobalEnvironment.MVMP && null != model) { recordInfo.SPACE_CODE = model.SPACE_CODE; recordInfo.ChargingStartTime = model.END_TIME; } else { if (recordInfo.INOUT_RECODE.IN_TIME < firstSigle.END_TIME && firstSigle.END_TIME < DateTime.Now) { recordInfo.ChargingStartTime = firstSigle.END_TIME; } } var orderBll = EngineContext.Current.Resolve <ICR_ORDER_RECORD_INFO>(); var recordBll = EngineContext.Current.Resolve <ICR_INOUT_RECODE>(); var recordTemp = recordBll.GetInSideCarNo(recordInfo.INOUT_RECODE); var OrderEnter = orderBll.GetCurrentPartitionOrder(recordInfo.PARTITION_CODE, recordInfo.INOUT_RECODE.ID); if (null == OrderEnter) { CR_ORDER_RECORD_INFO orderTemp = new CR_ORDER_RECORD_INFO(); orderTemp.ID = Guid.NewGuid().ToString("N"); orderTemp.INOUT_RECODE_ID = recordTemp.ID; orderTemp.PARTITION_CODE = recordInfo.PARTITION_CODE; orderTemp.IN_CHANNEL_CODE = recordInfo.CHN_CODE; orderTemp.TOTAL_TIME = 0; orderTemp.VEHICLE_NO = recordInfo.INOUT_RECODE.VEHICLE_NO; orderTemp.DUE_MONEY = 0; orderTemp.PER_MONEY = 0; orderTemp.PAY_PLATFORM = 0; orderTemp.PAY_TYPE = 0; orderTemp.IS_PAY = false; orderTemp.CREATE_TIME = DateTime.Now; recordInfo.CheckPointResult = recordInfo.CheckPointResult && orderBll.Add(orderTemp); } } //if (GlobalEnvironment.MVMP) //{ // //没?有?D剩o?ê余?¨¤车|ì位?月?转áa临¢¨′ // if (null == model && !spaceBllTemp.IsSurplus(recordInfo.VEHICLE_NO)) // { // recordInfo.CARD_TYPE = enumCardType.CAR_TYPE_TEMP; // recordInfo.IsMonthToTemp = true; // recordInfo.SpeechType = enumSpeechType.ParkingOccupyOut; // } //} } } ///////////////////////////校?ê验¨|卡?§类¤¨¤通a?§行D权¨?§限T/////////////////////////////// var strArea = GlobalEnvironment.ListOragnization.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; } } catch (Exception ex) { LogHelper.Log.Error(ex.Message); recordInfo.CheckPointResult = false; } }
public override void Process(ProcessRecord recordInfo) { recordInfo.CheckPointResult = true; if (recordInfo.CARD_TYPE != enumCardType.CAR_TYPE_MONTH || recordInfo.IsMonthToTemp) { var orderBll = EngineContext.Current.Resolve <ICR_ORDER_RECORD_INFO>(); var orderDetailsBll = EngineContext.Current.Resolve <ICR_ORDER_RECORD_DETAILS>(); //如果是贵宾车,直接放行 if (recordInfo.authenticationType == enumAuthenticationType.SPECIAL_TYPE_VIP) { return; } /////////////////当前区域//////////////// string Leave = recordInfo.INOUT_RECODE.CURR_PARTITION_CODE; string Enter = base.getCurrChannel(recordInfo) == null ? string.Empty : base.getCurrChannel(recordInfo).Enter; var Order = orderBll.GetCurrentPartitionOrder(recordInfo.INOUT_RECODE); ////////////////////////////大车场入小车场//////////////////////// if (!string.IsNullOrEmpty(Leave)) { if (null != Order) { recordInfo.Order = Order; ////////////////////已经中央缴费/////////////////// if (DateTime.Now < Order.FREE_TIME && Order.IS_PAY) { recordInfo.IsCenterPay = true; recordInfo.CheckPointResult = true; /////////////////////如果是中央缴费则播报中央已缴费语音////////////////////////// if (recordInfo.CHANNEL_TYPE == enumChannelType.centerPayment) { var voiceBllTemp = EngineContext.Current.Resolve <IPBA_VOICE_TEMPLATE>(); List <string> strArr = new List <string>(); PBA_VOICE_TEMPLATE voiceModel = voiceBllTemp.GetModelByType((int)enumTemplateType.MODEL_TYPE_VOICE, (int)enumSpeechType.CenterPayed); strArr.Add(CommHelper.VoiceContent(voiceModel.CUSTOM_MODEL, recordInfo)); CommHelper.Sound(recordInfo, strArr.ToArray()); recordInfo.CheckPointResult = false; new G5MessageBox("您已经缴费,请在规定时间内出场").ShowDialog(); } else if (recordInfo.CHANNEL_TYPE == enumChannelType.chn_out) { var temp = EngineContext.Current.Resolve <ICR_PREFERENTIAL_RECORD>(); var discounts = temp.GetListByInOutRecordCode(recordInfo.INOUT_RECODE.ID); decimal preMoney = 0; decimal totalMoney = 0; foreach (var discount in discounts) { preMoney += discount.PREFERENTIAL_MONEY; totalMoney = discount.CHARGE_MONEY; } recordInfo.INOUT_RECODE.PRE_MONEY = preMoney; recordInfo.INOUT_RECODE.DUE_MONEY = totalMoney; recordInfo.INOUT_RECODE.CHARGE_MONEY = totalMoney - preMoney; } } else { CR_ORDER_RECORD_DETAILS orderDetails = new CR_ORDER_RECORD_DETAILS(); var OrderDetails = orderDetailsBll.GetOrderDetailsInfo(recordInfo); if (null != OrderDetails) { orderDetails = OrderDetails; orderDetails.OUT_TIME = DateTime.Now; orderDetails.OUT_CHANNEL_CODE = recordInfo.CHN_CODE; recordInfo.INOUT_RECODE.IN_TIME = OrderDetails.IN_TIME; recordInfo.INOUT_RECODE.OUT_TIME = OrderDetails.OUT_TIME; recordInfo.CheckPointResult = recordInfo.CheckPointResult && orderDetailsBll.Update(orderDetails); } else { orderDetails.ID = Guid.NewGuid().ToString("N"); orderDetails.ORDER_CODE = Order.ID; orderDetails.IN_CHANNEL_CODE = Order.IN_CHANNEL_CODE; orderDetails.OUT_CHANNEL_CODE = recordInfo.CHN_CODE; orderDetails.IN_TIME = recordInfo.INOUT_RECODE.IN_TIME; orderDetails.OUT_TIME = DateTime.Now; orderDetails.VEHICLE_NO = recordInfo.INOUT_RECODE.VEHICLE_NO; recordInfo.CheckPointResult = recordInfo.CheckPointResult && orderDetailsBll.Add(orderDetails); } } } } if (!string.IsNullOrEmpty(Enter)) { if (null == Order) { CR_ORDER_RECORD_INFO orderTemp = new CR_ORDER_RECORD_INFO(); orderTemp.ID = Guid.NewGuid().ToString("N"); orderTemp.INOUT_RECODE_ID = recordInfo.INOUT_RECODE.ID; orderTemp.PARTITION_CODE = recordInfo.PARTITION_CODE; orderTemp.IN_CHANNEL_CODE = recordInfo.CHN_CODE; orderTemp.TOTAL_TIME = 0; orderTemp.VEHICLE_NO = recordInfo.INOUT_RECODE.VEHICLE_NO; orderTemp.DUE_MONEY = 0; orderTemp.PER_MONEY = 0; orderTemp.PAY_PLATFORM = 0; orderTemp.PAY_TYPE = 0; orderTemp.IS_PAY = false; orderTemp.CREATE_TIME = DateTime.Now; recordInfo.CheckPointResult = recordInfo.CheckPointResult && orderBll.Add(orderTemp); } } } }