private void reader_PaymentOk(object sender, ZSTReaderEventArgs e) { ZSTHandlerInfo zst = _HandlerInfoes.SingleOrDefault(item => item.ReaderIP == e.ReaderIP); if (zst != null && zst.ProcessingEvent != null) { if (zst.ProcessingEvent.CardPaymentInfo != null) { zst.ProcessingEvent.CardPaymentInfo.Paid = zst.ProcessingEvent.CardPaymentInfo.Accounts; zst.ProcessingEvent.CardPaymentInfo.Discount = zst.ProcessingEvent.CardPaymentInfo.Accounts - zst.ProcessingEvent.CardPaymentInfo.Paid; zst.ProcessingEvent.CardPaymentInfo.PaymentMode = PaymentMode.ZhongShanTong; zst.ProcessingEvent.CardPaymentInfo.OperatorID = OperatorInfo.CurrentOperator.OperatorName; zst.ProcessingEvent.CardPaymentInfo.StationID = WorkStationInfo.CurrentStation.StationName; zst.ProcessingEvent.CardPaymentInfo.IsCenterCharge = false; CommandResult ret = (new CardBll(AppSettings.CurrentSetting.ParkConnect)).PayParkFee(zst.ProcessingEvent.CardPaymentInfo); } IParkingAdapter pad = ParkingAdapterManager.Instance[zst.ProcessingEvent.ParkID]; if (pad != null) { EventValidNotify n = new EventValidNotify(zst.ProcessingEvent.EntranceID, OperatorInfo.CurrentOperator, WorkStationInfo.CurrentStation.StationName, 0); pad.EventValid(n); } zst.ClearCardInfo(); //清空读卡器内的卡片信息 } }
private void reader_PaymentFail(object sender, ZSTReaderEventArgs e) { ZSTHandlerInfo zst = _HandlerInfoes.SingleOrDefault(item => item.ReaderIP == e.ReaderIP); if (zst != null && zst.ProcessingEvent != null) { _Reader.MessageConfirm(zst.ReaderIP); //发送中山通读卡确认消息 IParkingAdapter pad = ParkingAdapterManager.Instance[zst.ProcessingEvent.ParkID]; if (pad != null) { EventInvalidNotify n = new EventInvalidNotify() { InvalidType = EventInvalidType.INV_ReadCard, Balance = zst.Balance, CardEvent = zst.ProcessingEvent }; pad.EventInvalid(n); } zst.ClearCardInfo(); //清空读卡器内的卡片信息 } }
public void ProcessReport(BusinessModel.Report.ReportBase report) { EntranceInfo entrance = ParkBuffer.Current.GetEntrance(report.EntranceID); if (entrance == null) { return; } if (entrance.IsExitDevice) //处理出口 { if (report is CardEventReport) { CardEventReport cer = report as CardEventReport; if (cer.EventStatus == CardEventStatus.Pending) { ZSTHandlerInfo zst = GetZSTHandlerInstance(cer.EntranceID); if (zst != null && !string.IsNullOrEmpty(zst.CardID) && zst.CardID == cer.CardID) { if (zst.Balance >= cer.CardPaymentInfo.Accounts) { zst.ProcessingEvent = cer; _Reader.Consumption(zst.ReaderIP, cer.CardPaymentInfo.Accounts); //余额足够的话就直接扣款 IParkingAdapter pad = ParkingAdapterManager.Instance[cer.ParkID]; if (pad != null) { SetLedDisplayNotify notify = new SetLedDisplayNotify(entrance.ParkID, CanAddress.TicketBoxLed, string.Format("扣款{0}元", cer.CardPaymentInfo.Accounts), false, 0); pad.LedDisplay(notify); } } else { _Reader.MessageConfirm(zst.ReaderIP); //发送中山通读卡确认消息 zst.ClearCardInfo(); //清空读卡器内的卡片信息 IParkingAdapter pad = ParkingAdapterManager.Instance[cer.ParkID]; if (pad != null) { EventInvalidNotify n = new EventInvalidNotify() { InvalidType = EventInvalidType.INV_Balance, Balance = zst.Balance, CardEvent = cer }; pad.EventInvalid(n); } } } } else { ZSTHandlerInfo zst = GetZSTHandlerInstance(cer.EntranceID); if (zst != null && !string.IsNullOrEmpty(zst.CardID) && zst.CardID == cer.CardID) { _Reader.MessageConfirm(zst.ReaderIP); //发送中山通读卡确认消息 zst.ClearCardInfo(); //清空读卡器内的卡片信息 } } } else if (report is CardInvalidEventReport) { CardInvalidEventReport cier = report as CardInvalidEventReport; ZSTHandlerInfo zst = GetZSTHandlerInstance(report.EntranceID); if (zst != null && !string.IsNullOrEmpty(zst.CardID) && zst.CardID == cier.CardID) { _Reader.MessageConfirm(zst.ReaderIP); //发送中山通读卡确认消息 zst.ClearCardInfo(); //清空读卡器内的卡片信息 } } } }