Esempio n. 1
0
        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;
        }
Esempio n. 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);
                });
            }
        }