Exemplo n.º 1
0
        /// <summary>
        /// 从DB中获取所有列车的车次
        /// </summary>
        /// <returns></returns>
        public static List <string> GetAllTrains()
        {
            var result = (from q in TrainEntityServer.GetAllTrainNames().AsEnumerable()
                          select q.Field <string>("TrainNumber")).ToList();

            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 加载指定地方的列车
        /// </summary>
        /// <param name="startCode"></param>
        /// <param name="endCode"></param>
        /// <param name="date"></param>
        /// <returns></returns>
        public static bool LoadTrain(string startCode, string endCode, string date, List <string> trainNos)
        {
            if (trainNos == null)
            {
                trainNos = GetAllTrains();
            }

            //这里只需要按城市获取就可以,因为上海-贵港,跟上海南-贵港是一样的
            var qs = QueryTrain(startCode, endCode, date);

            foreach (var q in qs.Data.Result)
            {
                var qtr = GetQueryTrainResult(q);
                if (QueryTrainResultServer.ExistsQueryTrainResult(qtr.TrainNumber, qtr.QueryStartCode, qtr.QueryEndCode))
                {
                    continue;
                }
                //保存到数据库
                QueryTrainResultServer.InsertQueryTrainResult(qtr);

                //如果该车次还没有获取过则获取车次信息和路由
                //因为通过获取的路由和车次的信息都是完整的,所以不需要重新获取
                //比如获取一个上海-贵港,T81就获取完毕了,没必要在获取上海-南宁时再插入数据
                if (!trainNos.Contains(qtr.TrainNumber))
                {
                    trainNos.Add(qtr.TrainNumber);
                    var routeResult = QueryTrainRoute(qtr.TrainNo, qtr.StartCode, qtr.EndCode, date);
                    //保存到数据库
                    foreach (var r in routeResult.Data.Data)
                    {
                        r.TrainNumber = qtr.TrainNumber;
                        TrainRouteServer.InsertTrainRoute(r);
                    }

                    //列车也保存到数据库
                    var train = new TrainEntity()
                    {
                        TrainNumber  = qtr.TrainNumber,
                        StartStation = qtr.StartCode,
                        EndStation   = qtr.EndCode
                    };
                    if (routeResult.Data.Data.Length > 0)
                    {
                        train.GoTime   = routeResult.Data.Data[0].StartTime;
                        train.ComeTime = routeResult.Data.Data[routeResult.Data.Data.Length - 1].ArriveTime;
                    }
                    TrainEntityServer.InsertTrain(train);
                }
            }

            return(true);
        }