/// <summary>初始化 <see cref="TrainHbAvailableEventArgs" /> 类的新实例。</summary>
 public TrainHbAvailableEventArgs(QueryResult result, QueryResultItem resultItem, LeftTicketData ticketData, HbQueueInfoCacheItem cacheItem)
 {
     Result     = result;
     ResultItem = resultItem;
     TicketData = ticketData;
     CacheItem  = cacheItem;
 }
示例#2
0
        //public static readonly Dictionary<string, char> QueryColumnToSeatTypeMap = new Dictionary<string, char>()
        //{
        //	["swz_num"] = '9',
        //	["tz_num"] = 'P',
        //	["zy_num"] = 'M',
        //	["ze_num"] = 'O',
        //	["gr_num"] = '6',
        //	["rw_num"] = '4',
        //	["yw_num"] = '3',
        //	["rz_num"] = '2',
        //	["yz_num"] = '1',
        //	["wz_num"] = '0',
        //	["qt_num"] = '*',
        //	["yb_num"] = '5',
        //	["gg_num"] = 'Q'
        //};



        /// <summary>
        /// 分析余票数据
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public static void GetTicketCountFromOrderInfo(QueryLeftTicketItem item, Dictionary <char, LeftTicketData> dic)
        {
            //余票信息
            ProcessSingleColumn(item.swz_num, item, '9', dic);
            ProcessSingleColumn(item.tz_num, item, 'P', dic);
            ProcessSingleColumn(item.zy_num, item, 'M', dic);
            ProcessSingleColumn(item.ze_num, item, 'O', dic);
            ProcessSingleColumn(item.gr_num, item, '6', dic);
            ProcessSingleColumn(item.rw_num, item, '4', dic);
            ProcessSingleColumn(item.yw_num, item, '3', dic);
            ProcessSingleColumn(item.rz_num, item, '2', dic);
            ProcessSingleColumn(item.yz_num, item, '1', dic);
            ProcessSingleColumn(item.wz_num, item, '0', dic);
            ProcessSingleColumn(item.qt_num, item, '*', dic);
            //动卧
            ProcessSingleColumn(item.srrb_num, item, 'F', dic);

            var info = item.yp_info;

            if (Regex.IsMatch(info, @"^[A-Z\d]+$"))
            {
                Matches(@"([\dA-Za-z])(\d{5})(\d{4})", info, _ =>
                {
                    var tcode = _[1][0];
                    var count = _[3].TrimStart('0').ToInt32();
                    var price = _[2][0] == '*' ? null : (double?)(_[2].ToDouble() / 10);

                    if (count >= 3000)
                    {
                        tcode  = '0';
                        count -= 3000;
                    }

                    dic[tcode] = new LeftTicketData(count, price, tcode);
                });
            }
        }
示例#3
0
 /// <summary>
 /// 判断指定的选项是否符合规则。
 /// </summary>
 /// <param name="query">当前的查询</param>
 /// <param name="result">当前的结果</param>
 /// <param name="currentItem">当前的车次</param>
 /// <param name="ticket">当前的车票</param>
 /// <returns>
 /// 如果返回 <see langword="true" />,则说明此记录符合结果,将会继续处理;否则则会跳过
 /// </returns>
 public bool IsMatch(QueryParam query, QueryResult result, QueryResultItem currentItem, LeftTicketData ticket)
 {
     return((ticket.Count >= Count) ^ IsLessThan);
 }