static void ProcessSingleColumn(string data, QueryLeftTicketItem item, char code, Dictionary <char, LeftTicketData> dic) { var tag = ParseLeftTicketData(code, data); if (tag == null) { return; } //动卧,4->F if (!item.seat_types.IsNullOrEmpty() && item.seat_types.IndexOf(code) == -1) { var map = ParamData.GetSeatCompatibleMap(code); if (map != null) { var gcode = map.FirstOrDefault(s => item.seat_types.IndexOf(s) != -1); if (gcode != 0) { code = gcode; } } } dic[code] = tag; }
//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); }); } }