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); }
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; }
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; }
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; }
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; }
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; } }
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; } }
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; } }