|
|
|
@ -41,12 +41,12 @@ namespace IoT.Shared.Areas.Admin.Controlls
|
|
|
|
|
ViewData.SelectList(o => model.Query.DeviceId, () => this._ajax.GetDeviceSelectList(model.Query.NodeId.Value, model.Query.DeviceId), model.Query.NodeId.HasValue);
|
|
|
|
|
return query.WhereIf(model.Query.NodeId.HasValue, o => o.Device.NodeId == model.Query.NodeId.Value)
|
|
|
|
|
.WhereIf(model.Query.DeviceId.HasValue, o => o.DeviceId == model.Query.DeviceId.Value)
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(model.Query.Key), o => o.Key.Contains(model.Query.Key))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(model.Query.Value), o => o.Value.Contains(model.Query.Value))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name, StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(model.Query.Key), o => o.Key.Contains(model.Query.Key, StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(model.Query.Value), o => o.Value.Contains(model.Query.Value, StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
.WhereIf(model.Query.Type.HasValue, o => o.Type == model.Query.Type.Value)
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(model.Query.Unit), o => o.Unit.Contains(model.Query.Unit))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(model.Query.Description), o => o.Description.Contains(model.Query.Description))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(model.Query.Unit), o => o.Unit.Contains(model.Query.Unit, StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(model.Query.Description), o => o.Description.Contains(model.Query.Description, StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
.WhereIf(model.Query.Timestamp.HasValue, o => o.Timestamp == model.Query.Timestamp.Value)
|
|
|
|
|
.WhereIf(model.Query.Hidden.HasValue, o => o.Hidden == model.Query.Hidden.Value);
|
|
|
|
|
}
|
|
|
|
@ -85,37 +85,35 @@ namespace IoT.Shared.Areas.Admin.Controlls
|
|
|
|
|
var pwd = this._configuration["influxdb:pwd"];
|
|
|
|
|
var dbName = "iot";
|
|
|
|
|
var measurementName = "data";
|
|
|
|
|
using (var client = new InfluxClient(new Uri(url), usr, pwd))
|
|
|
|
|
using var client = new InfluxClient(new Uri(url), usr, pwd);
|
|
|
|
|
var parameters = new
|
|
|
|
|
{
|
|
|
|
|
var parameters = new
|
|
|
|
|
{
|
|
|
|
|
start = model.Start,
|
|
|
|
|
end = model.End.AddDays(1)
|
|
|
|
|
};
|
|
|
|
|
var query = $"from {measurementName} where time>=$start and time<$end and DeviceNumber = '{data.Device.Number}'";
|
|
|
|
|
start = model.Start,
|
|
|
|
|
end = model.End.AddDays(1)
|
|
|
|
|
};
|
|
|
|
|
var query = $"from {measurementName} where time>=$start and time<$end and DeviceNumber = '{data.Device.Number}'";
|
|
|
|
|
|
|
|
|
|
var dataQuery = $"select {data.Key} {query} limit {model.PageSize} offset {(model.PageIndex - 1) * model.PageSize}";
|
|
|
|
|
var result = client.ReadAsync<DynamicInfluxRow>(dbName, dataQuery, parameters: parameters).Result;
|
|
|
|
|
var rows = result.Results.FirstOrDefault()?
|
|
|
|
|
.Series.FirstOrDefault()?
|
|
|
|
|
.Rows;
|
|
|
|
|
model.List.AddRange(rows.Select(o => new DisplayDataHistoryModel
|
|
|
|
|
{
|
|
|
|
|
DeviceName = data.Device.DisplayName,
|
|
|
|
|
DeviceNumber = data.Device.Number,
|
|
|
|
|
Name = data.Name,
|
|
|
|
|
Unit = data.Unit,
|
|
|
|
|
Value = o.GetField(data.Key).ToString(),
|
|
|
|
|
Date = o.Timestamp
|
|
|
|
|
}));
|
|
|
|
|
var dataQuery = $"select {data.Key} {query} limit {model.PageSize} offset {(model.PageIndex - 1) * model.PageSize}";
|
|
|
|
|
var result = client.ReadAsync<DynamicInfluxRow>(dbName, dataQuery, parameters: parameters).Result;
|
|
|
|
|
var rows = result.Results.FirstOrDefault()?
|
|
|
|
|
.Series.FirstOrDefault()?
|
|
|
|
|
.Rows;
|
|
|
|
|
model.List.AddRange(rows.Select(o => new DisplayDataHistoryModel
|
|
|
|
|
{
|
|
|
|
|
DeviceName = data.Device.DisplayName,
|
|
|
|
|
DeviceNumber = data.Device.Number,
|
|
|
|
|
Name = data.Name,
|
|
|
|
|
Unit = data.Unit,
|
|
|
|
|
Value = o.GetField(data.Key).ToString(),
|
|
|
|
|
Date = o.Timestamp
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
var countQuery = $"select count({data.Key}) {query}";
|
|
|
|
|
var countResult = client.ReadAsync<DynamicInfluxRow>(dbName, countQuery, parameters: parameters).Result;
|
|
|
|
|
model.TotalCount = Convert.ToInt32(countResult.Results.FirstOrDefault().Series.FirstOrDefault().Rows.FirstOrDefault().GetField("count"));
|
|
|
|
|
var countQuery = $"select count({data.Key}) {query}";
|
|
|
|
|
var countResult = client.ReadAsync<DynamicInfluxRow>(dbName, countQuery, parameters: parameters).Result;
|
|
|
|
|
model.TotalCount = Convert.ToInt32(countResult.Results.FirstOrDefault().Series.FirstOrDefault().Rows.FirstOrDefault().GetField("count"));
|
|
|
|
|
|
|
|
|
|
ViewBag.HtmlTitle = data.Name;
|
|
|
|
|
return View(model);
|
|
|
|
|
}
|
|
|
|
|
ViewBag.HtmlTitle = data.Name;
|
|
|
|
|
return View(model);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|