Пример #1
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            ZSTSettings zst = new ZSTSettings();

            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (!string.IsNullOrEmpty(row.Cells["colEntrance"].Value.ToString()))
                {
                    Ralid.OpenCard.OpenCardService.ZSTItem item = new Ralid.OpenCard.OpenCardService.ZSTItem()
                    {
                        ReaderIP   = (string)row.Cells["colReaderIP"].Value,
                        EntranceID = (int)row.Cells["colEntrance"].Tag,
                        Memo       = (string)row.Cells["colMemo"].Value
                    };
                    zst.Items.Add(item);
                }
                else
                {
                    Ralid.OpenCard.OpenCardService.ZSTItem item = new Ralid.OpenCard.OpenCardService.ZSTItem()
                    {
                        ReaderIP   = (string)row.Cells["colReaderIP"].Value,
                        EntranceID = 0,
                        Memo       = (string)row.Cells["colMemo"].Value
                    };
                    zst.Items.Add(item);
                }
            }
            CommandResult ret = (new SysParaSettingsBll(AppSettings.CurrentSetting.ParkConnect)).SaveSetting <ZSTSettings>(zst);

            if (CustomCardTypeSetting.Current.GetCardType(ZSTSettings.CardType) == null) //增加自定义卡片类型
            {
                CustomCardTypeSetting.Current.AddCardType(ZSTSettings.CardType, (byte)Ralid.Park.BusinessModel.Enum.CardType.MonthRentCard);
                new SysParaSettingsBll(AppSettings.CurrentSetting.MasterParkConnect).SaveSetting <CustomCardTypeSetting>(CustomCardTypeSetting.Current);
            }
            if (ret.Result == ResultCode.Successful)
            {
                AppSettings.CurrentSetting.SaveConfig("EnableZST", chkEnable.Checked.ToString());
                OpenCardMessageHandler handler = GlobalSettings.Current.Get <OpenCardMessageHandler>();
                if (chkEnable.Checked)
                {
                    handler.InitService(zst);
                }
                else
                {
                    handler.CloseService <ZSTSettings>();
                }
                this.DialogResult = DialogResult.OK;
            }
            else
            {
                MessageBox.Show(ret.Message);
            }
        }
Пример #2
0
        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()); //直接扣款
                }
            }
        }