From c137358e79bad0debd4376de860133693c9f1a2a Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Thu, 18 May 2023 15:37:21 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Repository/GtrWitsRepository.cs | 61 ++++++++----------- 1 file changed, 26 insertions(+), 35 deletions(-) diff --git a/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs b/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs index 9fc62845..b192826e 100644 --- a/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs +++ b/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs @@ -112,39 +112,6 @@ namespace AsbCloudInfrastructure.Repository CancellationToken token) where TEntity : WitsItemBase where TValue : notnull - { - var query = BuildQuery(request, token); - - var fullDataCount = await query.CountAsync(token); - if (fullDataCount == 0) - return Enumerable.Empty(); - - if (request.ApproxPointsCount is not null && fullDataCount > 1.75 * request.ApproxPointsCount) - { - var m = (int)Math.Round(1d * fullDataCount / request.ApproxPointsCount!.Value); - 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 - .AsNoTracking() - .ToListAsync(token) - .ConfigureAwait(false); - - var items = entities.Select(e => new ItemRecord - { - IdRecord = e.IdRecord, - IdTelemetry = e.IdTelemetry, - Date = e.DateTime.ToRemoteDateTime(request.TimezoneHours), - IdItem = e.IdItem, - Item = new JsonValue(e.Value) - }); - return items; - } - - private IQueryable BuildQuery(WitsRequest request, CancellationToken token) - where TEntity : WitsItemBase - where TValue : notnull { var query = db.Set().Where(i => i.IdTelemetry == request.IdTelemetry); @@ -160,9 +127,33 @@ namespace AsbCloudInfrastructure.Repository query = query .Where(d => d.DateTime <= request.DateEnd); - return query.OrderBy(d => d.DateTime); - } + var fullDataCount = await query.CountAsync(token); + if (fullDataCount == 0) + return Enumerable.Empty(); + if (request.ApproxPointsCount is not null && fullDataCount > 1.75 * request.ApproxPointsCount) + { + var m = (int)Math.Round(1d * fullDataCount / request.ApproxPointsCount!.Value); + 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) + .AsNoTracking() + .ToListAsync(token) + .ConfigureAwait(false); + + var items = entities.Select(e => new ItemRecord + { + IdRecord = e.IdRecord, + IdTelemetry = e.IdTelemetry, + Date = e.DateTime.ToRemoteDateTime(request.TimezoneHours), + IdItem = e.IdItem, + Item = new JsonValue(e.Value) + }); + return items; + } public async Task SaveDataAsync(int idTelemetry, WitsRecordDto dto, CancellationToken token) {