private void reader_PaymentOk(object sender, ZSTReaderEventArgs e) { _Reader.MessageConfirm(e.ReaderIP); OpenCardEventArgs args = null; lock (_WaitingPayingCardsLocker) { if (_WaitingPayingCards.ContainsKey(e.CardID)) { args = _WaitingPayingCards[e.CardID]; _WaitingPayingCards.Remove(e.CardID); } } if (args != null) { args.Paid = args.Payment.GetPaying(); //默认是直接扣除应收款所以如果扣款成功,已交费用等于应收费用 args.Payment.PaymentCode = Ralid.Park.BusinessModel.Enum.PaymentCode.Computer; args.Payment.PaymentMode = Ralid.Park.BusinessModel.Enum.PaymentMode.ZhongShanTong; args.Balance = e.Balance; if (this.OnPaidOk != null) { this.OnPaidOk(this, args); } } }
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 ZSTReader_MessageRecieved(object sender, ZSTReaderEventArgs e) { if (e.ReaderIP == AppSettings.CurrentSetting.ZSTReaderIP && e.MessageType == "1") { CardReadEventArgs args = new CardReadEventArgs() { CardID = e.CardID }; CardReadHandler(sender, args); } }
private void reader_CardReadHandler(object sender, ZSTReaderEventArgs e) { if (_ZSTSetting == null || _ZSTSetting.Items == null || !_ZSTSetting.HasReader(e.ReaderIP)) { _Reader.MessageConfirm(e.ReaderIP); return; } EntranceInfo entrance = ParkBuffer.Current.GetEntrance(_ZSTSetting.GetReader(e.ReaderIP).EntranceID); if (entrance == null) { _Reader.MessageConfirm(e.ReaderIP); return; } CardInfo card = (new CardBll(AppSettings.CurrentSetting.ParkConnect)).GetCardByID(e.CardID).QueryObject; if (!entrance.IsExitDevice) { _Reader.MessageConfirm(e.ReaderIP); if (card == null) //入口,如果卡片不在系统中,则先在系统中增加此中山通卡片 { //寻找系统中是否存在名称为"中山通"的自定义卡片类型 CardType ct = null; if (CustomCardTypeSetting.Current != null) { ct = CustomCardTypeSetting.Current.GetCardType("中山通"); } if (ct == null) { return; } if (!SaveZSTCard(e.CardID, ct, e.Balance)) { return; } } } ZSTHandlerInfo zst = GetZSTHandlerInstance(e.ReaderIP); zst.CardID = e.CardID; zst.Balance = e.Balance; //通过远程读卡方式 IParkingAdapter pad = ParkingAdapterManager.Instance[entrance.RootParkID]; if (pad != null) { pad.RemoteReadCard(new RemoteReadCardNotify(entrance.RootParkID, entrance.EntranceID, e.CardID)); } }
private void reader_MessageRecieved(object sender, ZSTReaderEventArgs e) { if (e.MessageType == "1") { reader_CardReadHandler(sender, e); } else if (e.MessageType == "2")//扣款成功 { reader_PaymentOk(sender, e); } else if (e.MessageType == "3") //扣款失败 { reader_PaymentFail(sender, e); } }
private void reader_PaymentFail(object sender, ZSTReaderEventArgs e) { _Reader.MessageConfirm(e.ReaderIP); OpenCardEventArgs args = null; lock (_WaitingPayingCardsLocker) { if (_WaitingPayingCards.ContainsKey(e.CardID)) { args = _WaitingPayingCards[e.CardID]; _WaitingPayingCards.Remove(e.CardID); } } if (args != null && args.CardID == e.CardID) { if (this.OnPaidFail != null) { this.OnPaidFail(this, args); } } }
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(); //清空读卡器内的卡片信息 } }
private void reader_CardReadHandler(object sender, ZSTReaderEventArgs e) { if (Setting == null) { _Reader.MessageConfirm(e.ReaderIP); return; } ZSTItem item = Setting.GetReader(e.ReaderIP); if (item == null) { _Reader.MessageConfirm(e.ReaderIP); return; } EntranceInfo entrance = null; entrance = ParkBuffer.Current.GetEntrance(item.EntranceID); OpenCardEventArgs args = new OpenCardEventArgs() { CardID = e.CardID, CardType = ZSTSettings.CardType, Balance = e.Balance, Entrance = entrance, }; if (entrance != null && !entrance.IsExitDevice) //入场时产生读卡事件 { _Reader.MessageConfirm(e.ReaderIP); if (this.OnReadCard != null) { this.OnReadCard(this, args); } } else //中央收费和出口产生收费事件 { if (this.OnPaying != null) { this.OnPaying(this, args); //产生收费事件 } if (args.Payment == null) { return; } if (args.Payment.GetPaying() == 0) //不用收费直接返回收款成功事件 { args.Payment.PaymentCode = Ralid.Park.BusinessModel.Enum.PaymentCode.Computer; args.Payment.PaymentMode = Ralid.Park.BusinessModel.Enum.PaymentMode.ZhongShanTong; if (this.OnPaidOk != null) { this.OnPaidOk(this, args); } } else { lock (_WaitingPayingCardsLocker) { _WaitingPayingCards[e.CardID] = args; //保存某个读卡器目前正在处理的收费记录 } _Reader.Consumption(e.ReaderIP, args.Payment.GetPaying()); //直接扣款 } } }