From f81f092c643452d0eee5c11346ff3dd40ff20ee3 Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Mon, 17 Apr 2023 20:58:20 +0500 Subject: [PATCH] fix controller --- .../Repository/GtrWitsRepository.cs | 41 +++++++++---------- .../{GTR => SAUB}/GtrWitsController.cs | 36 +++++++++------- 2 files changed, 42 insertions(+), 35 deletions(-) rename AsbCloudWebApi/Controllers/{GTR => SAUB}/GtrWitsController.cs (74%) diff --git a/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs b/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs index 2bd79b87..0176d4bd 100644 --- a/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs +++ b/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs @@ -55,18 +55,15 @@ namespace AsbCloudInfrastructure.Repository var dateEnd = dateBeginUtc.AddSeconds(intervalSec); var queryWitsInt = db.Set() - .Where(d => d.IdTelemetry == telemetry.Id - && d.DateTime >= dateBeginUtc); + .Where(d => d.IdTelemetry == telemetry.Id); var queryWitsString = db.Set() - .Where(d => d.IdTelemetry == telemetry.Id - && d.DateTime >= dateBeginUtc); + .Where(d => d.IdTelemetry == telemetry.Id); var queryWitsFloat = db.Set() - .Where(d => d.IdTelemetry == telemetry.Id - && d.DateTime >= dateBeginUtc); + .Where(d => d.IdTelemetry == telemetry.Id); - var recordAllInt = await GetItemsOrDefaultAsync(queryWitsInt, dateEnd, filterByDateEnd, approxPointsCount, timezone.Hours, token); - var recordAllFloat = await GetItemsOrDefaultAsync(queryWitsFloat, dateEnd, filterByDateEnd, approxPointsCount,timezone.Hours, token); - var recordAllString = await GetItemsOrDefaultAsync(queryWitsString, dateEnd, filterByDateEnd, approxPointsCount, timezone.Hours, token); + var recordAllInt = await GetItemsOrDefaultAsync(queryWitsInt, dateBeginUtc, dateEnd, filterByDateEnd, approxPointsCount, timezone.Hours, token); + var recordAllFloat = await GetItemsOrDefaultAsync(queryWitsFloat, dateBeginUtc, dateEnd, filterByDateEnd, approxPointsCount,timezone.Hours, token); + var recordAllString = await GetItemsOrDefaultAsync(queryWitsString, dateBeginUtc, dateEnd, filterByDateEnd, approxPointsCount, timezone.Hours, token); var groupRecordDate = (recordAllFloat.Union(recordAllInt)).Union(recordAllString) .GroupBy(g => new { @@ -114,27 +111,29 @@ namespace AsbCloudInfrastructure.Repository } private static async Task> GetItemsOrDefaultAsync(IQueryable> query, + DateTimeOffset dateBeginUtc, DateTimeOffset dateEnd, bool filterByDateEnd, int approxPointsCount, double timezoneHours , CancellationToken token) where T: notnull { - 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(); + //if (fullDataCount == 0) + // return Enumerable.Empty(); - 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 + .Where(d => d.DateTime >= dateBeginUtc) .OrderBy(d => d.DateTime) .AsNoTracking() .ToListAsync(token) diff --git a/AsbCloudWebApi/Controllers/GTR/GtrWitsController.cs b/AsbCloudWebApi/Controllers/SAUB/GtrWitsController.cs similarity index 74% rename from AsbCloudWebApi/Controllers/GTR/GtrWitsController.cs rename to AsbCloudWebApi/Controllers/SAUB/GtrWitsController.cs index efe7a975..198b8b10 100644 --- a/AsbCloudWebApi/Controllers/GTR/GtrWitsController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/GtrWitsController.cs @@ -10,12 +10,12 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -namespace AsbCloudWebApi.Controllers.GTR +namespace AsbCloudWebApi.Controllers.SAUB { [Route("api/[controller]")] [ApiController] public class GtrWitsController : ControllerBase - + { protected readonly IWellService wellService; private readonly ITelemetryService telemetryService; @@ -37,7 +37,7 @@ namespace AsbCloudWebApi.Controllers.GTR } /// - /// + /// Получить загруженные данные ГТИ по скважине /// /// id скважины /// дата начала выборки.По умолчанию: текущее время - intervalSec @@ -46,20 +46,20 @@ namespace AsbCloudWebApi.Controllers.GTR /// Токен завершения задачи /// [HttpGet("{idWell}")] - [Permission] + // [Permission] public async Task>> GetDataAsync(int idWell, DateTime begin = default, int intervalSec = 600, int approxPointsCount = 1024, CancellationToken token = default) { - int? idCompany = User.GetCompanyId(); + //int? idCompany = User.GetCompanyId(); - if (idCompany is null) - return Forbid(); + //if (idCompany is null) + // return Forbid(); - bool isCompanyOwnsWell = await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, - idWell, token).ConfigureAwait(false); + //bool isCompanyOwnsWell = await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, + // idWell, token).ConfigureAwait(false); - if (!isCompanyOwnsWell) - return Forbid(); + //if (!isCompanyOwnsWell) + // return Forbid(); var content = await gtrRepository.GetAsync(idWell, begin, intervalSec, approxPointsCount, token).ConfigureAwait(false); @@ -67,17 +67,25 @@ namespace AsbCloudWebApi.Controllers.GTR return Ok(content); } - [HttpPost("{uid}")] + /// + /// Метод для получения WITS записи от панели оператора. + /// Сохраняет в БД. + /// + /// уникальный идентификатор телеметрии + /// WITS запись + /// + /// + [HttpPost("{uid}")] public async Task PostDataAsync( string uid, - [FromBody] WitsRecordDto dto, + [FromBody] WitsRecordDto dto, CancellationToken token = default) { var idTelemetry = telemetryService.GetOrCreateTelemetryIdByUid(uid); await gtrRepository.SaveDataAsync(idTelemetry, dto, token).ConfigureAwait(false); var idWell = telemetryService.GetIdWellByTelemetryUid(uid); if (idWell is not null && dto is not null) - _ = Task.Run(() => telemetryHubContext.Clients.Group($"well_{idWell}_wits") + _ = Task.Run(() => telemetryHubContext.Clients.Group($"well_{idWell}_gtr") .SendAsync(SirnalRMethodGetDataName, dto), CancellationToken.None); return Ok(); }