Esempio n. 1
0
        /// <summary>
        /// 解锁
        /// </summary>
        /// <param name="cardnumber"></param>
        /// <param name="flag"></param>
        private void UnlockDistanceCard(int flag)
        {
            try
            {
                StopTimeOutThread();
                int index = -1;
                foreach (KeyValuePair <CbCardInfo, int> item in _mUnLockList)
                {
                    index++;
                    if (_mUnLockCardInfo != null && item.Key == _mUnLockCardInfo)
                    {
                        if (flag == 0)
                        {
                            item.Key.Unlocked = 0;
                            Dbhelper.Db.Update <CbCardInfo>(item.Key);
                            dgv_UnlockList["c_State", index].Value = Properties.Resources.check;
                            OnLockChange(item);
                        }
                        _mUnLockCardInfo = null;
                        continue;
                    }
                    if (_mUnLockCardInfo != null)
                    {
                        continue;
                    }
                    if (item.Key.Unlocked == 0)
                    {
                        continue;
                    }
                    _mUnLockCardInfo = item.Key;
                    DistanceTypeParameter typeparam = new DistanceTypeParameter()
                    {
                        Lock = 0, Distance = item.Key.Distance
                    };
                    int    typebyte = DistanceCardHelper.SetCardTypeByte(typeparam, 1);
                    byte[] by       = PortAgreement.GetDistanceContent(item.Key.CardNumber, typebyte);
                    PortHelper.SerialPortWrite(by);

                    StartTimeOutThread();
                    return;
                }
                foreach (KeyValuePair <CbCardInfo, int> item in _mUnLockList)
                {
                    if (item.Key.Unlocked != 0)
                    {
                        UseControlEnabled();
                        return;
                    }
                }
                dgv_UnlockList.Rows.Clear();
                this.DialogResult = DialogResult.OK;
            }
            catch (Exception ex)
            {
                UseControlEnabled();
                CustomExceptionHandler.GetExceptionMessage(ex);
                MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 确认
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Btn_Enter_Click(object sender, EventArgs e)
        {
            //获取延期时间
            DateTime newtime = t_NewTime.Value;
            //获取车场分区的值
            int partition = cb_CardPartition.SelectedIndex == 0 ? 0 : GetPartition();

            if (_mCardInfo != null)//定距卡
            {
                btn_Enter.Enabled         = false;
                _mCardInfo.StopTime       = newtime;
                _mCardInfo.FieldPartition = partition;

                try
                {
                    if (_mCardCounting == null)
                    {
                        //获取定距卡计数信息
                        _mCardCounting = Dbhelper.Db.FirstDefault <CbCardCountingState>(" and UseNumber = '" + _mCardInfo.CardNumber + "' ");
                        //计数加1
                        _mCardCounting.UseCounting = DistanceCardHelper.LimitCount(_mCardCounting.UseCounting);
                    }
                    //将数据写入定距卡
                    byte[] by = DistanceCardHelper.SetDistanceData(_mCardInfo.CardNumber, _mCardCounting.UseCounting, _mCardInfo.StopTime, _mCardInfo.FieldPartition);
                    PortHelper.SerialPortWrite(by);
                    StartTimeOut();
                }
                catch (Exception ex)
                {
                    btn_Enter.Enabled = true;
                    CustomExceptionHandler.GetExceptionMessage(ex);
                    MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else if (_mAssociateCard != null)//单张副卡
            {
                _mAssociateCard.UpdateTime      = newtime;
                _mAssociateCard.SubCardDivision = partition;
                this.Tag          = _mAssociateCard;
                this.DialogResult = DialogResult.OK;
            }
            else //批量延期
            {
                foreach (CbAssociateCard item in _mAssociateCards)
                {
                    item.UpdateTime      = newtime;
                    item.SubCardDivision = partition;
                }
                this.Tag          = _mAssociateCards;
                this.DialogResult = DialogResult.OK;
            }
        }
        /// <summary>
        /// 获取副卡的计数信息
        /// </summary>
        /// <param name="cardnumber"></param>
        /// <returns></returns>
        private CbCardCountingState GetViceCardCounting(string cardnumber)
        {
            CbCardCountingState cardcounting = null;

            foreach (CbCardCountingState item in _mViceCardCounting)
            {
                if (item.UseNumber.Equals(cardnumber))
                {
                    item.UseCounting = DistanceCardHelper.LimitCount(item.UseCounting);
                    cardcounting     = item;
                    break;
                }
            }
            return(cardcounting);
        }
        /// <summary>
        /// 延期更新
        /// </summary>
        /// <param name="cardnumber"></param>
        /// <param name="flag"></param>
        private void SetUpdateCardData(int flag)
        {
            try
            {
                StopTimeOutThread();
                int index = -1;
                //遍历更新的集合
                foreach (KeyValuePair <CbCardInfo, int> item in _mUpdateList)
                {
                    index++;
                    if (_mCardInfo != null && item.Key == _mCardInfo)
                    {
                        if (flag != 0) //失败
                        {
                            dgv_DelayList["c_State", index].Value = Properties.Resources.block;
                        }
                        else
                        {
                            DateTime maxtime = DateTime.MinValue;
                            foreach (CbAssociateCard vicecarditem in _mViceCard)
                            {
                                if (vicecarditem.UseState == 1)
                                {
                                    vicecarditem.UseState          = 0;
                                    vicecarditem.AssociateCardTime = vicecarditem.UpdateTime;
                                }
                                if (vicecarditem.UpdateTime.Date > maxtime.Date)
                                {
                                    maxtime = vicecarditem.UpdateTime;
                                }
                            }
                            if (item.Key.StopTime.Date != maxtime.Date)
                            {
                                item.Key.StopTime = maxtime;
                                //更新主卡数据
                                Dbhelper.Db.Update <CbCardInfo>(item.Key);
                            }
                            //更新副卡数据
                            Dbhelper.Db.Update <CbAssociateCard>(_mViceCard.ToArray());
                            //更新计数数据
                            if (_mViceCardCounting != null)
                            {
                                _mViceCardCounting.Add(_mCardCounting);
                                Dbhelper.Db.Update <CbCardCountingState>(_mViceCardCounting.ToArray());
                            }
                            else
                            {
                                Dbhelper.Db.Update <CbCardCountingState>(_mCardCounting);
                            }
                            dgv_DelayList["c_State", index].Value = Properties.Resources.check;
                            OnUpdateChanage(item);
                        }
                        _mCardInfo = null;
                        continue;
                    }
                    if (_mCardInfo != null)
                    {
                        continue;
                    }
                    if (dgv_DelayList["c_State", index].Value == Properties.Resources.check)
                    {
                        continue;
                    }
                    _mCardInfo = item.Key;
                    //获取主卡计数字节数据
                    _mCardCounting = Dbhelper.Db.FirstDefault <CbCardCountingState>(" and UseNumber='" + item.Key.CardNumber + "' ");
                    //计数字节+1
                    _mCardCounting.UseCounting = DistanceCardHelper.LimitCount(_mCardCounting.UseCounting);
                    //获取副卡数据集
                    _mViceCard = Dbhelper.Db.ToList <CbAssociateCard>(" and CardID =" + item.Key.ID + " ");
                    byte[] by = null;
                    if (item.Key.CardType == (int)CardTypes.CombinationCard) //组合卡
                    {
                        StringBuilder sb = new StringBuilder();
                        foreach (CbAssociateCard vicecarditem in _mViceCard)
                        {
                            sb.AppendFormat(" UseNumber='{0}' or", vicecarditem.AssociateCardNumber);
                        }
                        if (sb.Length > 0)
                        {
                            sb.Remove(sb.Length - 2, 2);
                        }
                        //获取副卡集合的计数字节数据集
                        _mViceCardCounting = Dbhelper.Db.ToList <CbCardCountingState>(string.Format(" and ({0}) ", sb.ToString()));

                        List <CombinationCardViceCardDataParam> ViceCardParam = new List <CombinationCardViceCardDataParam>();
                        foreach (CbAssociateCard vicecarditem in _mViceCard)
                        {
                            CbCardCountingState vicecardcounting = GetViceCardCounting(vicecarditem.AssociateCardNumber);
                            ViceCardParam.Add(new CombinationCardViceCardDataParam()
                            {
                                ViceCardCount     = vicecardcounting.UseCounting,
                                ViceCardNumber    = vicecarditem.AssociateCardNumber,
                                ViceCardPartition = vicecarditem.SubCardDivision,
                                ViceCardTime      = vicecarditem.UpdateTime
                            });
                        }
                        by = DistanceCardHelper.SetDistanceData(item.Key.CardNumber, _mCardCounting.UseCounting, ViceCardParam);
                    }
                    else//车牌识别卡
                    {
                        List <LprCardViceCardParam> ViceCardParam = new List <LprCardViceCardParam>();
                        foreach (CbAssociateCard vicecarditem in _mViceCard)
                        {
                            ViceCardParam.Add(new LprCardViceCardParam()
                            {
                                PlateNumber       = vicecarditem.AssociateCardNumber,
                                ViceCardPartition = vicecarditem.SubCardDivision,
                                ViceCardTime      = vicecarditem.UpdateTime
                            });
                        }
                        by = DistanceCardHelper.SetDistanceData(item.Key.CardNumber, _mCardCounting.UseCounting, ViceCardParam);
                    }
                    //发送数据
                    PortHelper.SerialPortWrite(by);
                    //开始超时线程
                    StartTimeOutThread();
                    return;
                }
                btn_Enter.Enabled = PortHelper.IsConnection;
                this.DialogResult = DialogResult.OK;
            }
            catch (Exception ex)
            {
                SetControlEnabled();
                CustomExceptionHandler.GetExceptionMessage(ex);
                MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 确认
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Btn_Enter_Click(object sender, EventArgs e)
        {
            btn_Enter.Enabled = false;
            byte[] by = null;
            try
            {
                if (_mCardCounting == null)
                {
                    //获取主卡计数数据
                    _mCardCounting = Dbhelper.Db.FirstDefault <CbCardCountingState>(string.Format(" and UseNumber='{0}' ", _mCardInfo.CardNumber));
                    //当前计数+1
                    _mCardCounting.UseCounting = DistanceCardHelper.LimitCount(_mCardCounting.UseCounting);
                }
                //获取副卡集合
                _mViceCard = new List <CbAssociateCard>();
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < dgv_DataList.RowCount; i++)
                {
                    CbAssociateCard mvicecard = FormComm.GetDataSourceToClass <CbAssociateCard>(dgv_DataList, i);
                    _mViceCard.Add(mvicecard);
                    sb.AppendFormat(" UseNumber='{0}' or", mvicecard.AssociateCardNumber);
                }
                if (sb.Length > 0)
                {
                    sb = sb.Remove(sb.Length - 2, 2);
                }

                if (_mViceCardCounting == null && _mCardInfo.CardType == (int)CardTypes.CombinationCard)
                {
                    //获取副卡的计数数据
                    _mViceCardCounting = Dbhelper.Db.ToList <CbCardCountingState>(string.Format(" and ({0}) ", sb.ToString()));
                    List <CombinationCardViceCardDataParam> ViceCardParams = new List <CombinationCardViceCardDataParam>();
                    foreach (CbCardCountingState item in _mViceCardCounting)
                    {
                        //副卡计数+1
                        item.UseCounting = DistanceCardHelper.LimitCount(item.UseCounting);
                        //获取副卡
                        CbAssociateCard vicecard = GetViceCard(item.UseNumber);
                        ViceCardParams.Add(new CombinationCardViceCardDataParam()
                        {
                            ViceCardCount     = item.UseCounting,
                            ViceCardNumber    = item.UseNumber,
                            ViceCardPartition = vicecard.SubCardDivision,
                            ViceCardTime      = vicecard.UpdateTime
                        });
                    }
                    by = DistanceCardHelper.SetDistanceData(_mCardInfo.CardNumber, _mCardCounting.UseCounting, ViceCardParams);
                }
                else //车牌识别卡
                {
                    List <LprCardViceCardParam> ViceCardParams = new List <LprCardViceCardParam>();
                    foreach (CbAssociateCard item in _mViceCard)
                    {
                        ViceCardParams.Add(new LprCardViceCardParam()
                        {
                            PlateNumber       = item.AssociateCardNumber,
                            ViceCardPartition = item.SubCardDivision,
                            ViceCardTime      = item.UpdateTime
                        });
                    }
                    by = DistanceCardHelper.SetDistanceData(_mCardInfo.CardNumber, _mCardCounting.UseCounting, ViceCardParams);
                }
                PortHelper.SerialPortWrite(by);
                StartTimeOutThread();
            }
            catch (Exception ex)
            {
                btn_Enter.Enabled = true;
                CustomExceptionHandler.GetExceptionMessage(ex);
                MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }