Merge branch 'dev' into fix/shedule-report-template

This commit is contained in:
ngfrolov 2023-06-07 13:52:27 +05:00
commit 29e0829bda
Signed by: ng.frolov
GPG Key ID: E99907A0357B29A7
3 changed files with 27 additions and 23 deletions

View File

@ -15,10 +15,10 @@ namespace AsbCloudApp.Repositories
/// добавить данные (для панели бурильщика) /// добавить данные (для панели бурильщика)
/// </summary> /// </summary>
/// <param name="idTelemetry"></param> /// <param name="idTelemetry"></param>
/// <param name="dto"></param> /// <param name="dtos"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
Task SaveDataAsync(int idTelemetry, WitsRecordDto dto, CancellationToken token); Task SaveDataAsync(int idTelemetry, IEnumerable<WitsRecordDto> dtos, CancellationToken token);
/// <summary> /// <summary>
/// получить данные для клиента /// получить данные для клиента

View File

@ -183,26 +183,30 @@ namespace AsbCloudInfrastructure.Repository
return query; return query;
} }
public async Task SaveDataAsync(int idTelemetry, WitsRecordDto dto, CancellationToken token) public async Task SaveDataAsync(int idTelemetry, IEnumerable<WitsRecordDto> dtos, CancellationToken token)
{ {
var timezoneHours = telemetryService.GetTimezone(idTelemetry).Hours; var timezoneHours = telemetryService.GetTimezone(idTelemetry).Hours;
foreach (var item in dto.Items)
foreach (var dto in dtos)
{ {
var dateTime = dto.Date.ToUtcDateTimeOffset(timezoneHours); foreach (var item in dto.Items)
if (item.Value.Value is string valueString)
{ {
var entity = MakeEntity<WitsItemString, string>(dto.Id, item.Key, idTelemetry, dateTime, valueString); var dateTime = dto.Date.ToUtcDateTimeOffset(timezoneHours);
db.WitsItemString.Add(entity); if (item.Value.Value is string valueString)
} {
if (item.Value.Value is float valueFloat) var entity = MakeEntity<WitsItemString, string>(dto.Id, item.Key, idTelemetry, dateTime, valueString);
{ db.WitsItemString.Add(entity);
var entity = MakeEntity<WitsItemFloat, float>(dto.Id, item.Key, idTelemetry, dateTime, valueFloat); }
db.WitsItemFloat.Add(entity); if (item.Value.Value is float valueFloat)
} {
if (item.Value.Value is int valueInt) var entity = MakeEntity<WitsItemFloat, float>(dto.Id, item.Key, idTelemetry, dateTime, valueFloat);
{ db.WitsItemFloat.Add(entity);
var entity = MakeEntity<WitsItemInt, int>(dto.Id, item.Key, idTelemetry, dateTime, valueInt); }
db.WitsItemInt.Add(entity); if (item.Value.Value is int valueInt)
{
var entity = MakeEntity<WitsItemInt, int>(dto.Id, item.Key, idTelemetry, dateTime, valueInt);
db.WitsItemInt.Add(entity);
}
} }
} }
await db.SaveChangesAsync(token); await db.SaveChangesAsync(token);

View File

@ -100,21 +100,21 @@ namespace AsbCloudWebApi.Controllers.SAUB
/// Сохраняет в БД. /// Сохраняет в БД.
/// </summary> /// </summary>
/// <param name="uid">уникальный идентификатор телеметрии</param> /// <param name="uid">уникальный идентификатор телеметрии</param>
/// <param name="dto">WITS запись</param> /// <param name="dtos">WITS запись</param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost("{uid}")] [HttpPost("{uid}")]
public async Task<IActionResult> PostDataAsync( public async Task<IActionResult> PostDataAsync(
string uid, string uid,
[FromBody] WitsRecordDto dto, [FromBody] IEnumerable<WitsRecordDto> dtos,
CancellationToken token = default) CancellationToken token = default)
{ {
var idTelemetry = telemetryService.GetOrCreateTelemetryIdByUid(uid); var idTelemetry = telemetryService.GetOrCreateTelemetryIdByUid(uid);
await gtrRepository.SaveDataAsync(idTelemetry, dto, token).ConfigureAwait(false); await gtrRepository.SaveDataAsync(idTelemetry, dtos, token).ConfigureAwait(false);
var idWell = telemetryService.GetIdWellByTelemetryUid(uid); var idWell = telemetryService.GetIdWellByTelemetryUid(uid);
if (idWell is not null && dto is not null) if (idWell is not null && dtos is not null)
_ = Task.Run(() => telemetryHubContext.Clients.Group($"well_{idWell}_gtr") _ = Task.Run(() => telemetryHubContext.Clients.Group($"well_{idWell}_gtr")
.SendAsync(SignalRMethodGetDataName, dto), CancellationToken.None); .SendAsync(SignalRMethodGetDataName, dtos), CancellationToken.None);
return Ok(); return Ok();
} }
} }