/// <summary>
        /// LevelTop只能有一个
        /// </summary>
        /// <param name="flight"></param>
        /// <param name="collection"></param>
        /// <returns></returns>
        public LevelTopFlightRecord FromLevel1RecordCollectionToLevelTopRecords(
            Flight flight, MongoCollection<Level1FlightRecord> collection)
        {
            FlightParameter[] parameters = this.GetParameters();
            Dictionary<string, LevelTopFlightRecord> topRecordMaps = new Dictionary<string, LevelTopFlightRecord>();
            Dictionary<LevelTopFlightRecord, List<Level2FlightRecord>> level2RecordMap
                = new Dictionary<LevelTopFlightRecord, List<Level2FlightRecord>>();
            List<LevelTopFlightRecord> topRecords = new List<LevelTopFlightRecord>();

            foreach (FlightParameter para in parameters)
            {
                LevelTopFlightRecord topRecord = new LevelTopFlightRecord()
                {
                    StartSecond = flight.StartSecond,
                    EndSecond = flight.EndSecond,
                    ParameterID = para.ParameterID,
                };

                topRecordMaps.Add(para.ParameterID, topRecord);
                level2RecordMap.Add(topRecord, new List<Level2FlightRecord>());

                for (int currentSecond = flight.StartSecond; currentSecond > flight.EndSecond; currentSecond += SecondGap)
                {
                    int step = SecondGap;
                    Level2FlightRecord level2 = this.HandleOneStep(currentSecond, step, para,
                         topRecord, flight, collection);

                    level2RecordMap[topRecord].Add(level2);
                }
            }

            return null;//DEBUG
            //return topRecords.ToArray();
        }
        private Level2FlightRecord HandleOneStep(int currentSecond, int step, FlightParameter para,
            LevelTopFlightRecord topRecord, Flight flight, MongoCollection<Level1FlightRecord> collection)
        {
            IMongoQuery query = Query.And(Query.EQ("ParameterID", new BsonString(para.ParameterID)),
                Query.GTE("FlightSecond", new BsonInt32(currentSecond)),
                Query.LT("FlightSecond", new BsonInt32(currentSecond + step)));

            MongoCursor<Level1FlightRecord> flightRecord = collection.Find(query);

            Level2FlightRecord level2 = new Level2FlightRecord()
            {
                StartSecond = currentSecond,
                EndSecond = Math.Min(flight.EndSecond, currentSecond + step),
                // Level1FlightRecords = flightRecord.ToArray(),
                ParameterID = para.ParameterID,
            };

            //var sum = from one in level2.Level1FlightRecords
            //          select one.ValueCount;
            //level2.Count = sum.Sum();

            //var avg = from one in level2.Level1FlightRecords
            //          select one.AvgValue;
            //level2.AvgValue = avg.Sum() * level2.Count;

            //var min = from one in level2.Level1FlightRecords
            //          select one.MinValue;
            //level2.MinValue = min.Min();

            //var max = from one in level2.Level1FlightRecords
            //          select one.MaxValue;
            //level2.MaxValue = max.Max();

            return level2;
        }
        internal string AddLevelTopFlightRecords(Flight flight, LevelTopFlightRecord[] topRecords)
        {
            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {//此方法操作的记录为跟架次密切相关,但肯定LevelTopRecord需要包含趋势分析等信息,
                    //建议不要分表,存放在Common里面
                    MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, flight.Aircraft.AircraftModel);
                    if (database != null)
                    {
                        MongoCollection<FlightDataEntities.LevelTopFlightRecord> modelCollection1
                            = dal.GetLevelTopFlightRecordMongoCollectionByFlight(database, flight);
                        modelCollection1.InsertBatch(topRecords);

                        //MongoCollection<FlightDataEntities.Level2FlightRecord> modelCollection2
                        //    = dal.GetLevel2FlightRecordMongoCollectionByFlight(database, flight);
                        //modelCollection2.InsertBatch(level2Records);
                    }
                }
                catch (Exception e)
                {
                    LogHelper.Error("AddLevelTopFlightRecords", e);
                    return e.Message;
                }
            }
            return string.Empty;
        }