forked from ddrilling/AsbCloudServer
refact save method
This commit is contained in:
parent
7e2b1e56c8
commit
27ee40816f
@ -158,17 +158,17 @@ namespace AsbCloudInfrastructure.Repository
|
||||
{
|
||||
var jsonValue = item.Value;
|
||||
var type = jsonValue.Value.GetType().Name;
|
||||
if (type == "string")
|
||||
if (type == "String")
|
||||
{
|
||||
var entity = GetEntityStr(dto, jsonValue, item.Key, timezoneHours);
|
||||
db.WitsItemString.Add(entity);
|
||||
}
|
||||
else if (type == "int")
|
||||
else if (type == "Int32")
|
||||
{
|
||||
var entity = GetEntityInt(dto, jsonValue, item.Key, timezoneHours);
|
||||
db.WitsItemInt.Add(entity);
|
||||
}
|
||||
else if (type == "float")
|
||||
else if (type == "Single")
|
||||
{
|
||||
var entity = GetEntityFloat(dto, jsonValue, item.Key, timezoneHours);
|
||||
db.WitsItemFloat.Add(entity);
|
||||
@ -182,21 +182,21 @@ namespace AsbCloudInfrastructure.Repository
|
||||
DateTimeOffset dateEnd, bool filterByDateEnd, int approxPointsCount
|
||||
, CancellationToken token)
|
||||
{
|
||||
if (filterByDateEnd)
|
||||
query = query.Where(d => d.DateTime <= dateEnd);
|
||||
//if (filterByDateEnd)
|
||||
// query = query.Where(d => d.DateTime <= dateEnd);
|
||||
|
||||
var fullDataCount = await query.CountAsync(token)
|
||||
.ConfigureAwait(false);
|
||||
//var fullDataCount = await query.CountAsync(token)
|
||||
// .ConfigureAwait(false);
|
||||
|
||||
if (fullDataCount == 0)
|
||||
return Enumerable.Empty<WitsItemInt>();
|
||||
//if (fullDataCount == 0)
|
||||
// return Enumerable.Empty<WitsItemInt>();
|
||||
|
||||
if (fullDataCount > 1.75 * approxPointsCount)
|
||||
{
|
||||
var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
||||
if (m > 1)
|
||||
query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0);
|
||||
}
|
||||
//if (fullDataCount > 1.75 * approxPointsCount)
|
||||
//{
|
||||
// var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
||||
// if (m > 1)
|
||||
// query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0);
|
||||
//}
|
||||
|
||||
var entities = await query
|
||||
.OrderBy(d => d.DateTime)
|
||||
@ -210,21 +210,21 @@ namespace AsbCloudInfrastructure.Repository
|
||||
DateTimeOffset dateEnd, bool filterByDateEnd, int approxPointsCount
|
||||
, CancellationToken token)
|
||||
{
|
||||
if (filterByDateEnd)
|
||||
query = query.Where(d => d.DateTime <= dateEnd);
|
||||
//if (filterByDateEnd)
|
||||
// query = query.Where(d => d.DateTime <= dateEnd);
|
||||
|
||||
var fullDataCount = await query.CountAsync(token)
|
||||
.ConfigureAwait(false);
|
||||
//var fullDataCount = await query.CountAsync(token)
|
||||
// .ConfigureAwait(false);
|
||||
|
||||
if (fullDataCount == 0)
|
||||
return Enumerable.Empty<WitsItemFloat>();
|
||||
//if (fullDataCount == 0)
|
||||
// return Enumerable.Empty<WitsItemFloat>();
|
||||
|
||||
if (fullDataCount > 1.75 * approxPointsCount)
|
||||
{
|
||||
var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
||||
if (m > 1)
|
||||
query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0);
|
||||
}
|
||||
//if (fullDataCount > 1.75 * approxPointsCount)
|
||||
//{
|
||||
// var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
||||
// if (m > 1)
|
||||
// query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0);
|
||||
//}
|
||||
|
||||
var entities = await query
|
||||
.OrderBy(d => d.DateTime)
|
||||
@ -238,21 +238,21 @@ namespace AsbCloudInfrastructure.Repository
|
||||
DateTimeOffset dateEnd, bool filterByDateEnd, int approxPointsCount
|
||||
, CancellationToken token)
|
||||
{
|
||||
if (filterByDateEnd)
|
||||
query = query.Where(d => d.DateTime <= dateEnd);
|
||||
//if (filterByDateEnd)
|
||||
// query = query.Where(d => d.DateTime <= dateEnd);
|
||||
|
||||
var fullDataCount = await query.CountAsync(token)
|
||||
.ConfigureAwait(false);
|
||||
//var fullDataCount = await query.CountAsync(token)
|
||||
// .ConfigureAwait(false);
|
||||
|
||||
if (fullDataCount == 0)
|
||||
return Enumerable.Empty<WitsItemString>();
|
||||
//if (fullDataCount == 0)
|
||||
// return Enumerable.Empty<WitsItemString>();
|
||||
|
||||
if (fullDataCount > 1.75 * approxPointsCount)
|
||||
{
|
||||
var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
||||
if (m > 1)
|
||||
query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0);
|
||||
}
|
||||
//if (fullDataCount > 1.75 * approxPointsCount)
|
||||
//{
|
||||
// var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
||||
// if (m > 1)
|
||||
// query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0);
|
||||
//}
|
||||
|
||||
var entities = await query
|
||||
.OrderBy(d => d.DateTime)
|
||||
@ -270,7 +270,7 @@ namespace AsbCloudInfrastructure.Repository
|
||||
DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours),
|
||||
IdRecord = record.Id,
|
||||
IdItem = idItems,
|
||||
Value = JsonSerializer.Deserialize<string>(value.ToString())!,
|
||||
Value = value.Value.ToString()!,
|
||||
};
|
||||
return entity;
|
||||
}
|
||||
@ -296,7 +296,7 @@ namespace AsbCloudInfrastructure.Repository
|
||||
DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours),
|
||||
IdRecord = record.Id,
|
||||
IdItem = idItems,
|
||||
Value = JsonSerializer.Deserialize<float>(value.ToString())!,
|
||||
Value = (float)value.Value,
|
||||
};
|
||||
return entity;
|
||||
}
|
||||
|
@ -38,8 +38,7 @@ namespace AsbCloudWebApi.Controllers.GTR
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Возвращает данные САУБ по скважине.
|
||||
/// По умолчанию за последние 10 минут.
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name = "idWell" > id скважины</param>
|
||||
/// <param name = "begin" > дата начала выборки.По умолчанию: текущее время - intervalSec</param>
|
||||
@ -68,5 +67,22 @@ namespace AsbCloudWebApi.Controllers.GTR
|
||||
|
||||
return Ok(content);
|
||||
}
|
||||
|
||||
[HttpPost("{uid}")]
|
||||
public async Task<IActionResult> PostDataAsync(
|
||||
string uid,
|
||||
[FromBody] WitsRecordDto dto,
|
||||
[FromServices] IGtrRepository gtrRepository,
|
||||
CancellationToken token = default)
|
||||
{
|
||||
var idTelemetry = telemetryService.GetOrCreateTelemetryIdByUid(uid);
|
||||
await gtrRepository.SaveDataAsync(idTelemetry, dto, token).ConfigureAwait(false);
|
||||
//var idWell = telemetryService.GetIdWellByTelemetryUid(uid);
|
||||
//if (idWell != null && dtos.Any())
|
||||
// _ = Task.Run(() => telemetryHubContext.Clients.Group($"well_{idWell}_wits")
|
||||
// .SendAsync(SirnalRMethodGetDataName, dtos), CancellationToken.None);
|
||||
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user