/// <summary>初始化 <see cref="TrainHbAvailableEventArgs" /> 类的新实例。</summary> public TrainHbAvailableEventArgs(QueryResult result, QueryResultItem resultItem, LeftTicketData ticketData, HbQueueInfoCacheItem cacheItem) { Result = result; ResultItem = resultItem; TicketData = ticketData; CacheItem = cacheItem; }
//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); }); } }
/// <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); }