Пример #1
0
        /// <summary>
        /// 读取到卡号处理
        /// </summary>
        /// <param name="cardID">卡号</param>
        /// <param name="info">从卡片扇区数据中读取到的卡片信息</param>
        private void ReadCardIDHandler(string cardID, CardInfo info)
        {
            txtCardID.TextChanged  -= txtCardID_TextChanged;
            this.txtCardID.Text     = cardID;
            this.txtCardID.ReadOnly = true;
            string   msg  = string.Empty;
            CardInfo card = _CardBll.GetCardDetail(this.txtCardID.Text);

            if (card == null)
            {
                msg = CardInvalidDescripition.GetDescription(EventInvalidType.INV_UnRegister);
            }
            else if (AppSettings.CurrentSetting.EnableWriteCard &&
                     !card.OnlineHandleWhenOfflineMode &&
                     !CardDateResolver.Instance.CopyCardDataToCard(card, info))
            {
                //写卡模式时,卡片信息从扇区数据中获取
                msg = Resource1.FrmCardCenterCharge_CardDataErr;
            }
            else if (!ValidateCard(card, out msg))
            {
                //卡片无效
            }
            else if (TariffSetting.Current.GetTariff(card.CardType.ID, card.CarType) == null)
            {
                //msg = Resource1.FrmCardPaying_NotTempCard;
                msg = Resource1.FrmCardCenterCharge_NotPaymentCard;
            }
            else if (!card.IsInPark)
            {
                msg = CardInvalidDescripition.GetDescription(EventInvalidType.INV_StillOut);
            }
            else if (card.LastDateTime > DateTime.Now)
            {
                msg = CardInvalidDescripition.GetDescription(EventInvalidType.INV_WrongInTime);
            }
            else
            {
                _cardInfo     = card;
                _ChargeRecord = CardPaymentInfoFactory.CreateCardPaymentRecord(_cardInfo, TariffSetting.Current, _cardInfo.CarType, DateTime.Now);
                ShowCardPaymentInfo(_ChargeRecord);
            }
            if (!string.IsNullOrEmpty(msg))
            {
                if (_ChargeLed != null)
                {
                    _ChargeLed.DisplayMsg(msg);
                }
                if (AppSettings.CurrentSetting.EnableTTS)
                {
                    TTSSpeech.Instance.Speek(msg);
                }
                ClearInput();
                this.txtCardID.Text = cardID;
                this.txtMemo.Text   = msg;
            }
            txtCardID.TextChanged += txtCardID_TextChanged;
        }
Пример #2
0
        private CardInfo _OriginalCard; //卡片原始信息

        #region 私有方法
        /// <summary>
        /// 读取到卡号处理
        /// </summary>
        /// <param name="cardID">卡号</param>
        /// <param name="info">从卡片扇区数据中读取到的卡片信息</param>
        private void ReadCardIDHandler(string cardID, CardInfo info)
        {
            txtCardID.TextChanged  -= txtCardID_TextChanged;
            this.txtCardID.Text     = cardID;
            this.txtCardID.ReadOnly = true;
            string msg = string.Empty;
            bool   offlineHandleCard = AppSettings.CurrentSetting.EnableWriteCard &&
                                       info != null &&
                                       !info.OnlineHandleWhenOfflineMode;
            CardBll bll = new CardBll(AppSettings.CurrentSetting.CurrentMasterConnect);
            //如果只是免费授权,卡片信息只要从主数据库获取就可以了
            CardInfo card = bll.GetCardDetail(cardID);

            if (card == null && offlineHandleCard)
            {
                card = info.Clone();
            }

            if (!WorkStationInfo.CurrentStation.CanFreeAuthorization(offlineHandleCard, out msg))
            {
                //该工作站不能进行授权
            }
            else if (card == null)
            {
                msg = CardInvalidDescripition.GetDescription(EventInvalidType.INV_UnRegister);
            }
            else if (AppSettings.CurrentSetting.EnableWriteCard &&
                     !card.OnlineHandleWhenOfflineMode &&
                     !CardDateResolver.Instance.CopyPaidDataToCard(card, info))//只复制缴费相关的信息,如果复制了所有的信息,会覆盖数据库内的卡片状态,如挂失,禁用等状态
            //&& !CardDateResolver.Instance.CopyCardDataToCard(card, info))
            {
                //写卡模式时,卡片信息从扇区数据中获取
                msg = Resource1.FrmCardCenterCharge_CardDataErr;
            }
            else if (!ValidateCard(card, out msg))
            {
                //卡片无效
            }
            else
            {
                _cardInfo     = card;
                _OriginalCard = card.Clone();
                ShowCardInfo(_cardInfo);
            }
            if (!string.IsNullOrEmpty(msg))
            {
                if (AppSettings.CurrentSetting.EnableTTS)
                {
                    TTSSpeech.Instance.Speek(msg);
                }
                ClearInput();
                this.txtCardID.Text = cardID;
                MessageBox.Show(msg);
            }
            txtCardID.TextChanged += txtCardID_TextChanged;
        }
Пример #3
0
        /// <summary>
        /// 向控制板发送卡片无效
        /// </summary>
        /// <param name="cardevent"></param>
        public override void CardInValid(string cardID, CardType cardType, byte hcardType, EntranceReader reader, EventInvalidType invalidType, object param)
        {
            if (AppSettings.CurrentSetting.Debug)
            {
                FileLog.Log(EntranceName, "发送卡片无效" + CardInvalidDescripition.GetDescription(invalidType));
            }
            Packet p = _PacketCreater.CreateCardInvalidPacket(Address, invalidType, param);

            _CommComponent.SendPacket(p);
        }
Пример #4
0
        /// <summary>
        /// 读取到卡号处理
        /// </summary>
        /// <param name="cardID">卡号</param>
        /// <param name="info">从卡片扇区数据中读取到的卡片信息</param>
        private void ReadCardIDHandler(string cardID, CardInfo info)
        {
            this.txtCardID.Text     = cardID;
            this.txtCardID.ReadOnly = true;
            string   msg  = string.Empty;
            CardInfo card = info;

            if (card == null)
            {
                msg = Resource1.FrmCardCenterCharge_CardDataErr;
            }
            else if (!ValidateCard(card, out msg))
            {
                //卡片无效
            }
            else if (TariffSetting.Current.GetTariff(card.CardType.ID, card.CarType) == null)
            {
                msg = Resource1.FrmCardCenterCharge_NotPaymentCard;
            }
            else if (!card.IsInPark)
            {
                msg = CardInvalidDescripition.GetDescription(EventInvalidType.INV_StillOut);
            }
            else if (card.LastDateTime > DateTime.Now)
            {
                msg = CardInvalidDescripition.GetDescription(EventInvalidType.INV_WrongInTime);
            }
            else
            {
                _cardInfo              = card;
                _ChargeRecord          = CardPaymentInfoFactory.CreateCardPaymentRecord(_cardInfo, TariffSetting.Current, _cardInfo.CarType, DateTime.Now);
                _ChargeRecord.CarPlate = _cardInfo.CarPlate;
                ShowCardPaymentInfo(_ChargeRecord);
            }
            if (!string.IsNullOrEmpty(msg))
            {
                if (_ChargeLed != null)
                {
                    _ChargeLed.DisplayMsg(msg);
                }
                if (AppSettings.CurrentSetting.EnableTTS)
                {
                    TTSSpeech.Instance.Speek(msg);
                }
                ClearInput();
                this.txtCardID.Text = cardID;
                this.txtMemo.Text   = msg;
                this.eventList.InsertMessage(msg);
            }
        }
Пример #5
0
 /// <summary>
 /// 检验卡片有效性
 /// </summary>
 /// <param name="card"></param>
 /// <returns></returns>
 private bool ValidateCard(CardInfo card, out string msg)
 {
     if (card.Status == CardStatus.Recycled) //卡片已注销
     {
         msg = Resource1.FrmCardCenterCharge_CardRecycled;
         return(false);
     }
     if (card.Status == CardStatus.Disabled)  //卡片已锁定
     {
         msg = Resource1.FrmCardCenterCharge_CardDisabled;
         return(false);
     }
     if (card.Status == CardStatus.Loss)   //卡片已挂失
     {
         msg = Resource1.FrmCardCenterCharge_CardLoss;
         return(false);
     }
     if (card.ActivationDate > DateTime.Now) //卡片未到生效期
     {
         msg = Resource1.FrmCardCenterCharge_CardUnActivate;
         return(false);
     }
     if (card.ValidDate < DateTime.Today && card.CardType != Ralid.Park.BusinessModel.Enum.CardType.TempCard && !card.EnableWhenExpired) //卡片已过期
     {
         msg = Resource1.FrmCardCenterCharge_CardExpired;
         return(false);
     }
     if (!card.IsTempCard)
     {
         msg = Resource1.FrmAPMRefund_NoTempCard;
         return(false);
     }
     if (!card.IsInPark)
     {
         msg = CardInvalidDescripition.GetDescription(EventInvalidType.INV_StillOut);
         return(false);
     }
     msg = string.Empty;
     return(true);
 }
Пример #6
0
        protected override void OnCardCaptureReporting(CardCaptureReport report)
        {
            EntranceBase entrance = GetEntrance(report.EntranceID);

            if (entrance == null)
            {
                return;
            }
            RaiseCardCaptureReporting(report);

            if (entrance.ProcessingEvent != null && entrance.ProcessingEvent.CardType.IsTempCard)
            {
                if (UserSetting.Current.EnableCarPlateRecognize)
                {
                    CarPlateHandler(entrance, entrance.ProcessingEvent, entrance.ProcessingCard);
                }
                //如果启用车牌识别,且出入口车牌对比失败,
                if (entrance.ProcessingEvent.EventStatus == CardEventStatus.CarPlateFail)
                {
                    entrance.DisplayMsg(CardInvalidDescripition.GetDescription(Ralid.Park.BusinessModel.Enum.EventInvalidType.INV_CarPlateWrong), false);
                    //(entrance as NetEntrance).ParkDevice.Speak(DeviceVoice.eAUDIO_CPBF);
                    //(entrance as NetEntrance).ParkDevice.Speak(DeviceVoice.eAUDIO_ZZQRQSH);
                    entrance.CardWait();
                    RaiseCardEventReporting(entrance.ProcessingEvent);
                    return;
                }
                else
                {
                    entrance.CardValid();
                    if (!entrance.EntranceInfo.CardValidNeedResponse)
                    {
                        PermitCard(entrance, entrance.Operator, entrance.Station);
                    }
                }
            }
        }
Пример #7
0
        private void ReadCardHandler(string cardID, CardInfo info)
        {
            CardBll  bll  = new CardBll(AppSettings.CurrentSetting.ParkConnect);
            CardInfo card = bll.GetCardByID(cardID).QueryObject;

            string msg = string.Empty;

            if (card == null)
            {
                msg = CardInvalidDescripition.GetDescription(EventInvalidType.INV_UnRegister);
            }
            else if (AppSettings.CurrentSetting.EnableWriteCard &&
                     !card.OnlineHandleWhenOfflineMode &&
                     !CardDateResolver.Instance.CopyPaidDataToCard(card, info))
            {
                //写卡模式时,卡片收费信息从扇区数据中获取
                msg = Resource1.FrmCardCenterCharge_CardDataErr;
            }
            else if (!card.IsInPark)
            {
                msg = CardInvalidDescripition.GetDescription(EventInvalidType.INV_StillOut);
            }
            else if (!card.IsTempCard)
            {
                msg = Resource1.FrmCardOut_NoTempCard;
            }
            else
            {
                msg = CardOut(bll, card);
            }

            if (!string.IsNullOrEmpty(msg))
            {
                this.listMsg.InsertMessage(msg);
            }
        }