refact save method

This commit is contained in:
eugeniy_ivanov 2023-04-11 12:06:05 +05:00
parent 7e2b1e56c8
commit 27ee40816f
2 changed files with 59 additions and 43 deletions

View File

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

View File

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