/// <summary> /// 軌跡MongoDB API /// </summary> /// <param name="model">>查詢軌跡參數: UTC起迄日期時間(必填), [司機UserId, VehicleId, TaskId(擇一)]</param> /// <param name="type">查詢軌跡條件: D-司機UserId(預設)、V-車輛Id、T-任務Id</param> public async Task <List <MongoAPIResponseModel> > GetTraceDataFromMongoDB(SearchTraceModel model) { _logger.Information("GetTraceDataFromMongoDB_: {0} ", JsonConvert.SerializeObject(model)); string utcB = model.BeginDateTime.ToUniversalTime().ToString("yyyy'-'MM'-'dd HH':'mm':'ss"); string utcE = model.EndDateTime.ToUniversalTime().ToString("yyyy'-'MM'-'dd HH':'mm':'ss"); string requestUrl = string.Format("api/TrackLog/GetByDriverIdOrVehicleId?DriverId={0}&VehicleId={1}&utcStartTime={2}&utcTargetTime={3}", model.DriverId, model.VehicleId, utcB, utcE); _logger.Information("GetMongoDBTrace_mongoAPI : {0}{1} ", MongoAPIUrl, requestUrl); List <MongoAPIResponseModel> traceList = new List <MongoAPIResponseModel>(); try { var client = new HttpClient(); MongoAPIUrl = ConfigurationManager.AppSettings["MongoAPIUrl"].ToString(); client.BaseAddress = new Uri(MongoAPIUrl); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = await client.GetAsync(requestUrl); _logger.Information("GetMongoDBTrace_mongoAPI_Result: {0} ", JsonConvert.SerializeObject(response)); if (response.IsSuccessStatusCode) { var mg = await response.Content.ReadAsAsync <IEnumerable <MongoAPIResponseModel> >(); foreach (var i in mg) { traceList.Add(i); } } client.Dispose(); } catch (Exception ex) { _logger.Error("GetTraceDataFromMongoDB_Exception: {0} ", JsonConvert.SerializeObject(ex)); } _logger.Information("GetTraceDataFromMongoDB_Result: {0} ", JsonConvert.SerializeObject(traceList)); return(traceList); }
public async Task <ActionResult> SingleTraceView(SearchTraceModel model) { _logger.Information("Monitor_SingleTraceView({0}) ", JsonConvert.SerializeObject(model)); ResponseViewModel result = new ResponseViewModel(); List <TraceRecordsModel> convertList = new List <TraceRecordsModel>(); try { TraceRecordViewModel trace = new TraceRecordViewModel(); trace.BeginDateTimeString = string.Format("{0:yyyy/MM/dd HH:mm:ss}", model.BeginDateTime); trace.EndDateTimeString = string.Format("{0:yyyy/MM/dd HH:mm:ss}", model.EndDateTime); trace.VehicleId = model.VehicleId; trace.DriverId = model.DriverId; var mongotrack = await GetTraceDataFromMongoDB(model); _logger.Information("Monitor_SingleTraceView_MongoDBAPI: {0} ", JsonConvert.SerializeObject(mongotrack)); convertList = _traceService.ConvertToTraceView(mongotrack, model.DriverId, model.VehicleId); trace.TraceList = convertList; result.IsOk = true; result.Message = "車輛軌跡查詢"; result.Data = trace; result.HttpStatusCode = HttpStatusCode.OK; } catch (Exception ex) { result.IsOk = false; result.Exception = ex; result.Message = MessageResource.UnexpectedErrorOccurred; result.Data = null; result.HttpStatusCode = HttpStatusCode.InternalServerError; } result.ResponseTime = string.Format("{0:yyyy/MM/dd HH:mm:ss}", DateTime.Now); _logger.Information("Monitor_SingleTraceView_Result({0}) ", JsonConvert.SerializeObject(result)); return(View("SingleTraceView", convertList)); }
public async Task <JsonResult> SearchTrace(SearchTraceModel model) { _logger.Information("Trace_SearchTrace({0}) ", JsonConvert.SerializeObject(model)); if (SessionSearchTraceModel != null) { if (model != SessionSearchTraceModel) { SessionSearchTraceModel = model; } else { model = SessionSearchTraceModel; } } ResponseViewModel result = new ResponseViewModel(); if (string.IsNullOrEmpty(model.DriverId) || model.DriverId == "null") { model.DriverId = null; } if (model.VehicleId == 0) { model.VehicleId = null; } try { TraceRecordViewModel trace = new TraceRecordViewModel(); trace.BeginDateTimeString = string.Format("{0:yyyy/MM/dd HH:mm:ss}", model.BeginDateTime); trace.EndDateTimeString = string.Format("{0:yyyy/MM/dd HH:mm:ss}", model.EndDateTime); trace.VehicleId = model.VehicleId; trace.DriverId = model.DriverId; //直接從MongoDB擷取 var trackLog = await _traceService.GetTrace(model); //從MongoDB API 擷取 //var mongotrack = await GetTraceDataFromMongoDB(model); //_logger.Information("Trace_SearchTrace_MongoDBAPI: {0} ", JsonConvert.SerializeObject(mongotrack)); var convertList = _traceService.ConvertToTraceView(trackLog, model.DriverId, model.VehicleId); trace.TraceList = convertList; result.IsOk = true; result.Message = "車輛軌跡查詢"; result.Data = trace; result.HttpStatusCode = HttpStatusCode.OK; } catch (Exception ex) { result.IsOk = false; result.Exception = ex; result.Message = MessageResource.UnexpectedErrorOccurred; result.Data = null; result.HttpStatusCode = HttpStatusCode.InternalServerError; } result.ResponseTime = string.Format("{0:yyyy/MM/dd HH:mm:ss}", DateTime.Now); _logger.Information("Trace_SearchTrace_Result({0}) ", JsonConvert.SerializeObject(result)); return(Json(result, JsonRequestBehavior.AllowGet)); }