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 jsonValue = item.Value;
|
||||||
var type = jsonValue.Value.GetType().Name;
|
var type = jsonValue.Value.GetType().Name;
|
||||||
if (type == "string")
|
if (type == "String")
|
||||||
{
|
{
|
||||||
var entity = GetEntityStr(dto, jsonValue, item.Key, timezoneHours);
|
var entity = GetEntityStr(dto, jsonValue, item.Key, timezoneHours);
|
||||||
db.WitsItemString.Add(entity);
|
db.WitsItemString.Add(entity);
|
||||||
}
|
}
|
||||||
else if (type == "int")
|
else if (type == "Int32")
|
||||||
{
|
{
|
||||||
var entity = GetEntityInt(dto, jsonValue, item.Key, timezoneHours);
|
var entity = GetEntityInt(dto, jsonValue, item.Key, timezoneHours);
|
||||||
db.WitsItemInt.Add(entity);
|
db.WitsItemInt.Add(entity);
|
||||||
}
|
}
|
||||||
else if (type == "float")
|
else if (type == "Single")
|
||||||
{
|
{
|
||||||
var entity = GetEntityFloat(dto, jsonValue, item.Key, timezoneHours);
|
var entity = GetEntityFloat(dto, jsonValue, item.Key, timezoneHours);
|
||||||
db.WitsItemFloat.Add(entity);
|
db.WitsItemFloat.Add(entity);
|
||||||
@ -182,21 +182,21 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
DateTimeOffset dateEnd, bool filterByDateEnd, int approxPointsCount
|
DateTimeOffset dateEnd, bool filterByDateEnd, int approxPointsCount
|
||||||
, CancellationToken token)
|
, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (filterByDateEnd)
|
//if (filterByDateEnd)
|
||||||
query = query.Where(d => d.DateTime <= dateEnd);
|
// query = query.Where(d => d.DateTime <= dateEnd);
|
||||||
|
|
||||||
var fullDataCount = await query.CountAsync(token)
|
//var fullDataCount = await query.CountAsync(token)
|
||||||
.ConfigureAwait(false);
|
// .ConfigureAwait(false);
|
||||||
|
|
||||||
if (fullDataCount == 0)
|
//if (fullDataCount == 0)
|
||||||
return Enumerable.Empty<WitsItemInt>();
|
// return Enumerable.Empty<WitsItemInt>();
|
||||||
|
|
||||||
if (fullDataCount > 1.75 * approxPointsCount)
|
//if (fullDataCount > 1.75 * approxPointsCount)
|
||||||
{
|
//{
|
||||||
var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
// var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
||||||
if (m > 1)
|
// if (m > 1)
|
||||||
query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0);
|
// 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
|
var entities = await query
|
||||||
.OrderBy(d => d.DateTime)
|
.OrderBy(d => d.DateTime)
|
||||||
@ -210,21 +210,21 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
DateTimeOffset dateEnd, bool filterByDateEnd, int approxPointsCount
|
DateTimeOffset dateEnd, bool filterByDateEnd, int approxPointsCount
|
||||||
, CancellationToken token)
|
, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (filterByDateEnd)
|
//if (filterByDateEnd)
|
||||||
query = query.Where(d => d.DateTime <= dateEnd);
|
// query = query.Where(d => d.DateTime <= dateEnd);
|
||||||
|
|
||||||
var fullDataCount = await query.CountAsync(token)
|
//var fullDataCount = await query.CountAsync(token)
|
||||||
.ConfigureAwait(false);
|
// .ConfigureAwait(false);
|
||||||
|
|
||||||
if (fullDataCount == 0)
|
//if (fullDataCount == 0)
|
||||||
return Enumerable.Empty<WitsItemFloat>();
|
// return Enumerable.Empty<WitsItemFloat>();
|
||||||
|
|
||||||
if (fullDataCount > 1.75 * approxPointsCount)
|
//if (fullDataCount > 1.75 * approxPointsCount)
|
||||||
{
|
//{
|
||||||
var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
// var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
||||||
if (m > 1)
|
// if (m > 1)
|
||||||
query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0);
|
// 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
|
var entities = await query
|
||||||
.OrderBy(d => d.DateTime)
|
.OrderBy(d => d.DateTime)
|
||||||
@ -238,21 +238,21 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
DateTimeOffset dateEnd, bool filterByDateEnd, int approxPointsCount
|
DateTimeOffset dateEnd, bool filterByDateEnd, int approxPointsCount
|
||||||
, CancellationToken token)
|
, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (filterByDateEnd)
|
//if (filterByDateEnd)
|
||||||
query = query.Where(d => d.DateTime <= dateEnd);
|
// query = query.Where(d => d.DateTime <= dateEnd);
|
||||||
|
|
||||||
var fullDataCount = await query.CountAsync(token)
|
//var fullDataCount = await query.CountAsync(token)
|
||||||
.ConfigureAwait(false);
|
// .ConfigureAwait(false);
|
||||||
|
|
||||||
if (fullDataCount == 0)
|
//if (fullDataCount == 0)
|
||||||
return Enumerable.Empty<WitsItemString>();
|
// return Enumerable.Empty<WitsItemString>();
|
||||||
|
|
||||||
if (fullDataCount > 1.75 * approxPointsCount)
|
//if (fullDataCount > 1.75 * approxPointsCount)
|
||||||
{
|
//{
|
||||||
var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
// var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
||||||
if (m > 1)
|
// if (m > 1)
|
||||||
query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0);
|
// 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
|
var entities = await query
|
||||||
.OrderBy(d => d.DateTime)
|
.OrderBy(d => d.DateTime)
|
||||||
@ -270,7 +270,7 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours),
|
DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours),
|
||||||
IdRecord = record.Id,
|
IdRecord = record.Id,
|
||||||
IdItem = idItems,
|
IdItem = idItems,
|
||||||
Value = JsonSerializer.Deserialize<string>(value.ToString())!,
|
Value = value.Value.ToString()!,
|
||||||
};
|
};
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
@ -296,7 +296,7 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours),
|
DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours),
|
||||||
IdRecord = record.Id,
|
IdRecord = record.Id,
|
||||||
IdItem = idItems,
|
IdItem = idItems,
|
||||||
Value = JsonSerializer.Deserialize<float>(value.ToString())!,
|
Value = (float)value.Value,
|
||||||
};
|
};
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
@ -38,8 +38,7 @@ namespace AsbCloudWebApi.Controllers.GTR
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Возвращает данные САУБ по скважине.
|
///
|
||||||
/// По умолчанию за последние 10 минут.
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name = "idWell" > id скважины</param>
|
/// <param name = "idWell" > id скважины</param>
|
||||||
/// <param name = "begin" > дата начала выборки.По умолчанию: текущее время - intervalSec</param>
|
/// <param name = "begin" > дата начала выборки.По умолчанию: текущее время - intervalSec</param>
|
||||||
@ -68,5 +67,22 @@ namespace AsbCloudWebApi.Controllers.GTR
|
|||||||
|
|
||||||
return Ok(content);
|
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