diff --git a/projects/IoTCenter/Api/DeviceController.cs b/projects/IoTCenter/Api/DeviceController.cs index 4ff659a3..c4d548d9 100644 --- a/projects/IoTCenter/Api/DeviceController.cs +++ b/projects/IoTCenter/Api/DeviceController.cs @@ -67,32 +67,31 @@ namespace UserCenter.Controllers var datasets = new List(); var labels = new List(); var hours = Convert.ToInt32(DateTime.Now.ToString("%z")); - using (var client = new InfluxClient(new Uri(url), usr, pwd)) + using var client = new InfluxClient(new Uri(url), usr, pwd); + var days = Convert.ToInt32(model.Time.TrimEnd('d')); + var group = days == 1 ? "1m" : (days == 7 ? "10m" : "1h"); + var query = $"select last({model.Key}) from {measurementName} where time>now() - {days}d and DeviceNumber = '{model.Number}' group by time({group}) fill(none)"; + var result = client.ReadAsync(dbName, query).Result; + var rows = result.Results.FirstOrDefault()? + .Series.FirstOrDefault()? + .Rows; + datasets.Add(new { - var query = $"select { model.Key} from {measurementName} where time>now() - {model.Time} and DeviceNumber = '{model.Number}' limit 10000"; - var result = client.ReadAsync(dbName, query).Result; - var rows = result.Results.FirstOrDefault()? - .Series.FirstOrDefault()? - .Rows; - datasets.Add(new - { - label = data.Name, - data = rows != null ? rows.Select(o => o.GetField(data.Key)).ToList() : new List(), - backgroundColor = this.GetColor(data.Key), - fill = false - }); - if (rows != null) - { - var format = model.Time.StartsWith("1") ? "H:mm" : (model.Time.StartsWith("7") ? "ddd" : "MMM-d"); - labels = rows.Select(o => o.Timestamp.Value).Select(o => o.AddHours(hours).ToString(format, new CultureInfo("zh-CN"))).ToList(); - } - var response = new - { - datasets, - labels - }; - return Ok(response); + label = data.Name, + data = rows != null ? rows.Select(o => o.GetField("last")).ToList() : new List(), + backgroundColor = this.GetColor(data.Key), + fill = false + }); + if (rows != null) + { + labels = rows.Select(o => o.Timestamp.Value).Select(o => o.AddHours(hours).ToString("MMM-d H:mm", new CultureInfo("zh-CN"))).ToList(); } + var response = new + { + datasets, + labels + }; + return Ok(response); } catch (Exception ex) {