コード例 #1
0
        public string AddOrUpdateAircraftInstance(AircraftInstance aircraftInstance)
        {
            if (aircraftInstance == null)
                return "没有机号。";

            MongoServer mongoServer = this.GetMongoServer();
            if (mongoServer != null)
            {
                MongoDatabase database = mongoServer.GetDatabase(AircraftMongoDb.DATABASE_COMMON);
                if (database != null)
                {
                    MongoCollection<AircraftInstance> modelCollection
                        = database.GetCollection<AircraftInstance>(AircraftMongoDb.COLLECTION_AIRCRAFT_INSTANCE);

                    IQueryable<AircraftInstance> models = modelCollection.AsQueryable<AircraftInstance>();
                    var result = from one in models
                                 where one.AircraftNumber == aircraftInstance.AircraftNumber
                                    && one.AircraftModel.ModelName == aircraftInstance.AircraftModel.ModelName
                                 select one;

                    if (result != null && result.Count() > 0)
                    {
                        foreach (var oneModel in result)
                        {//所有Property复制
                            oneModel.LastUsed = aircraftInstance.LastUsed;
                            oneModel.AircraftModel = aircraftInstance.AircraftModel;
                            modelCollection.Save(oneModel);
                        }
                    }
                    else
                    {
                        modelCollection.Insert(aircraftInstance);
                    }

                    return string.Empty;
                }
            }

            return string.Format(
                "No MongoServer {0} finded, or no MongoCollection {1} finded.",
                AircraftMongoDb.DATABASE_COMMON, AircraftMongoDb.COLLECTION_AIRCRAFT_INSTANCE);
        }
コード例 #2
0
        internal string DeleteAircraftInstance(AircraftInstance instance)
        {
            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {//此方法操作的记录为跟架次密切相关,但肯定LevelTopRecord需要包含趋势分析等信息,
                    //建议不要分表,存放在Common里面
                    MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, instance.AircraftModel);
                    if (database != null)
                    {
                        MongoCollection<FlightDataEntities.AircraftInstance> modelCollection
                            = dal.GetAircraftInstanceCollection(database);

                        IMongoQuery q1 = Query.EQ("AircraftNumber", new MongoDB.Bson.BsonString(instance.AircraftNumber));

                        MongoCursor<AircraftInstance> cursor = modelCollection.Find(q1);

                        if (cursor != null && cursor.Count() > 0)
                        {
                            //foreach (var value in cursor.AsEnumerable())
                            //{
                            //    value.LastUsed = instance.LastUsed;
                            //    value.AircraftModel = value.AircraftModel;
                            //}//.Save(value);
                        }
                        modelCollection.Remove(q1);
                    }
                }
                catch (Exception e)
                {
                    LogHelper.Error("DeleteAircraftInstance", e);
                    return e.Message;
                }
            }
            return string.Empty;
        }
コード例 #3
0
        internal string AddOrReplaceAircraftInstance(AircraftInstance instance)
        {
            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {//此方法操作的记录为跟架次密切相关,但肯定LevelTopRecord需要包含趋势分析等信息,
                    //建议不要分表,存放在Common里面
                    MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, instance.AircraftModel);
                    if (database != null)
                    {
                        MongoCollection<FlightDataEntities.AircraftInstance> modelCollection
                            = dal.GetAircraftInstanceCollection(database);

                        IMongoQuery q1 = Query.EQ("AircraftNumber", new MongoDB.Bson.BsonString(instance.AircraftNumber));

                        MongoCursor<AircraftInstance> cursor = modelCollection.Find(q1);

                        if (cursor != null && cursor.Count() > 0)
                        {
                            foreach (var value in cursor.AsEnumerable())
                            {
                                value.LastUsed = instance.LastUsed;
                                value.AircraftModel = value.AircraftModel;
                                modelCollection.Save(value);
                            }
                        }
                        else
                        {//如果INSERT,就必须插入之后才有ObjectId,需要返回带有ObjectId的对象(不单单只考虑WCF返回没带有ObjectId的情况)
                            modelCollection.Insert(instance);

                            var cursor2 = modelCollection.Find(q1);
                            if (cursor2 != null && cursor2.Count() > 0)
                            {
                                instance = cursor2.First();
                            }
                            else instance = null;
                        }
                    }
                }
                catch (Exception e)
                {
                    LogHelper.Error("AddOrReplaceAircraftInstance", e);
                    return e.Message;
                }
            }
            return string.Empty;
        }
コード例 #4
0
        internal ExtremumPointInfo[] GetExtremumPointInfos(AircraftInstance aircraftInstance)
        {
            if (aircraftInstance == null || string.IsNullOrEmpty(aircraftInstance.AircraftNumber))
            {
                LogHelper.Warn("aircraftInstance为空或AircraftNumber为空(GetExtremumPointInfos)。", null);
                return null;
            }

            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {//此方法操作的记录为跟架次密切相关,需要拆分存储的记录,最好在DAL里面去处理表名构建逻辑
                    MongoDatabase database =
                        dal.GetMongoDatabaseByAircraftModel(mongoServer,
                        aircraftInstance.AircraftModel);
                    if (database != null)
                    {
                        MongoCollection<FlightDataEntities.ExtremumPointInfo> modelCollection
                            = dal.GetFlightExtremeMongoCollectionByFlight(database, null);

                        List<IMongoQuery> qs = new List<IMongoQuery>();
                        IMongoQuery q1 = Query.EQ("AircraftNumber", aircraftInstance.AircraftNumber);
                        var cursor = modelCollection.Find(q1);
                        var result = cursor.AsQueryable();
                        return result.ToArray();
                    }
                }
                catch (Exception e)
                {
                    LogHelper.Error("GetFlightRawDataRelationPoints", e);
                }
            }
            return null;
        }
コード例 #5
0
        internal Flight[] GetAllFlights(AircraftModel model, AircraftInstance instance)
        {
            if (model == null || string.IsNullOrEmpty(model.ModelName))
            {
                LogHelper.Warn("model为空或ModelName为空(GetAllFlights)。", null);
                return null;
            }

            if (instance == null || string.IsNullOrEmpty(instance.AircraftNumber))
                return GetAllFlights(model);

            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {
                    MongoDatabase database = dal.GetMongoDatabaseCommon(mongoServer);
                    //这是实体,直接取Common吧
                    //dal.GetMongoDatabaseByAircraftModel(mongoServer, flight.Aircraft.AircraftModel);

                    if (database != null)
                    {
                        MongoCollection<Flight> modelCollection
                            = database.GetCollection<Flight>(AircraftMongoDb.COLLECTION_FLIGHT);

                        var queryable = modelCollection.AsQueryable();
                        var result = from one in queryable
                                     where one.Aircraft != null && one.Aircraft.AircraftModel != null
                                     && one.Aircraft.AircraftModel.ModelName == model.ModelName
                                     && one.Aircraft.AircraftNumber == instance.AircraftNumber //加上机号判断
                                     select one;

                        return result.ToArray();
                    }
                }
                catch (Exception e)
                {
                    LogHelper.Error("GetAllFlights", e);
                }
            }

            return null;
        }
コード例 #6
0
 public FlightDataEntities.ExtremumPointInfo[] GetExtremumPointInfosByAircraftInstance(AircraftInstance aircraftInstance)
 {
     try
     {
         LogHelper.Info("AircraftService.GetExtremumPointInfosByAircraftInstance Requested.", null);
         AircraftServiceBll bll = new AircraftServiceBll();
         return bll.GetExtremumPointInfos(aircraftInstance);
     }
     catch (Exception e)
     {
         LogHelper.Error("AircraftService.GetExtremumPointInfosByAircraftInstance", e);
         return null;
     }
 }
コード例 #7
0
 public Flight[] GetAllFlightsByInstance(AircraftModel model, AircraftInstance aircraftInstance)
 {
     try
     {
         LogHelper.Info("AircraftService.GetAllFlights Requested.", null);
         AircraftServiceBll bll = new AircraftServiceBll();
         return bll.GetAllFlights(model, aircraftInstance);
     }
     catch (Exception e)
     {
         LogHelper.Error("AircraftService.GetAllFlights", e);
         return null;
     }
 }
コード例 #8
0
        public string AddOrReplaceAircraftInstance(AircraftInstance instance)
        {
            try
            {
                LogHelper.Info("DataInputService.AddOrReplaceAircraftInstance Requested.", null);
                if (instance == null || instance.AircraftModel == null
                    || string.IsNullOrEmpty(instance.AircraftModel.ModelName)
                    || string.IsNullOrEmpty(instance.AircraftNumber))
                {
                    return "AddOrReplaceAircraftInstance: 参数为空。";
                }

                DataInputServiceBll bll = new DataInputServiceBll();
                return bll.AddOrReplaceAircraftInstance(instance);
            }
            catch (Exception ex)
            {
                LogHelper.Error("AddOrReplaceAircraftInstance", ex);
                return ex.Message;
            }
        }