From ccffb5e8e523eea8de0bde040cccb902d40c0eb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B5=D0=BF=D0=B0=D0=BD=D0=BE=D0=B2=20=D0=94?= =?UTF-8?q?=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Thu, 25 Jul 2024 12:49:18 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8?= =?UTF-8?q?=D1=81=D0=B0=20=D1=82=D0=B5=D0=BB=D0=B5=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=D0=B8=D0=B8=20=D1=83=D0=B4=D0=B0=D0=BB=D1=91=D0=BD=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=B0=D1=82=20=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D1=82=D1=80=D0=B8=D0=B8,=20=D0=B4=D0=B0?= =?UTF-8?q?=D1=82=D1=8B=20=D0=B2=20=D0=B1=D0=B5=D0=BA=D0=B3=D1=80=D0=B0?= =?UTF-8?q?=D1=83=D0=BD=D0=B4=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B5?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B0=D1=8E=D1=82=D1=81=D1=8F?= =?UTF-8?q?=20=D0=B8=D0=B7=20=D0=BA=D1=8D=D1=88=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudApp/Requests/TelemetryRequest.cs | 9 ++++++++ .../Services/ITelemetryDataSaubService.cs | 7 ------- .../WorkOperationDetection.cs | 21 ++++++++++--------- .../Services/SAUB/TelemetryDataCache.cs | 6 +++--- .../Services/SAUB/TelemetryDataSaubService.cs | 16 -------------- 5 files changed, 23 insertions(+), 36 deletions(-) diff --git a/AsbCloudApp/Requests/TelemetryRequest.cs b/AsbCloudApp/Requests/TelemetryRequest.cs index 732d8075..e8f88a90 100644 --- a/AsbCloudApp/Requests/TelemetryRequest.cs +++ b/AsbCloudApp/Requests/TelemetryRequest.cs @@ -56,4 +56,13 @@ public class TelemetryDataRequest [Range(1, MaxTake)] public int Take { get; set; } = 1024; + /// + /// Больше или равно высоте талевого блока + /// + public double? GeBlockPosition { get; set; } + + /// + /// Меньше или равно высоте талевого блока + /// + public double? LeBlockPosition { get; set; } } diff --git a/AsbCloudApp/Services/ITelemetryDataSaubService.cs b/AsbCloudApp/Services/ITelemetryDataSaubService.cs index f684b3d6..da32ef50 100644 --- a/AsbCloudApp/Services/ITelemetryDataSaubService.cs +++ b/AsbCloudApp/Services/ITelemetryDataSaubService.cs @@ -45,12 +45,5 @@ namespace AsbCloudApp.Services /// /// Task GetZippedCsv(int idWell, DateTime beginDate, DateTime endDate, CancellationToken token); - - /// - /// Получение диапозона дат телеметрий - /// - /// - /// - Task> GetDateRangesAsync(CancellationToken token); } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs b/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs index cb569515..d00be734 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Services; @@ -15,7 +16,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations; public class WorkOperationDetection : Work { - private static readonly IDictionary CacheOfStartDatesByTelemetryId = new Dictionary(); + private static readonly IDictionary CacheOfStartDatesByTelemetryId = new Dictionary(); public WorkOperationDetection() : base("Operation detection") @@ -37,28 +38,28 @@ public class WorkOperationDetection : Work var telemetryRepository = services.GetRequiredService>(); var detectedOperationRepository = services.GetRequiredService(); var detectedOperationService = services.GetRequiredService(); - var telemetryDataSaubService = services.GetRequiredService(); + var telemetryDataCache = services.GetRequiredService>(); var idsTelemetry = (await telemetryRepository.GetAllAsync(token)) .Select(t => t.Id) .ToArray(); - var telemetriesDateRanges = await telemetryDataSaubService.GetDateRangesAsync(token); - var lastDetectedOperations = await detectedOperationRepository.GetLastDetectedOperationsAsync(token); for (int i = 0; i < idsTelemetry.Length; i++) { var idTelemetry = idsTelemetry[i]; - if (!telemetriesDateRanges.TryGetValue(idTelemetry, out var telemetryDateRange)) + var telemetryDateRange = telemetryDataCache.GetOrDefaultWellDataDateRange(idTelemetry); + + if(telemetryDateRange == null) continue; - var dateBegin = telemetryDateRange.From.DateTime; - var dateEnd = telemetryDateRange.To.DateTime; - + var dateBegin = telemetryDateRange.From; + var dateEnd = telemetryDateRange.To; + if (lastDetectedOperations.TryGetValue(idTelemetry, out var lastDetectedOperation)) - dateBegin = lastDetectedOperation.DateEnd.UtcDateTime; + dateBegin = lastDetectedOperation.DateEnd; if (CacheOfStartDatesByTelemetryId.TryGetValue(idTelemetry, out var dateBeginFromCahce)) dateBegin = dateBeginFromCahce; @@ -80,7 +81,7 @@ public class WorkOperationDetection : Work var detectedOperations = await detectedOperationService.DetectOperationsAsync(idTelemetry, request, lastDetectedOperation, token); - dateBegin = detectedOperations.LastDate.UtcDateTime; + dateBegin = detectedOperations.LastDate; CacheOfStartDatesByTelemetryId[idTelemetry] = dateBegin; diff --git a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataCache.cs b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataCache.cs index f80ccaa7..da0a9486 100644 --- a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataCache.cs +++ b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataCache.cs @@ -152,9 +152,9 @@ public class TelemetryDataCache : ITelemetryDataCache where TDto : A if (cacheItem.LastData.Count == 0) return null; - - var to = FromDate(cacheItem.FirstByDate.DateTime, cacheItem.TimezoneOffset); - var from = FromDate(cacheItem.LastData[^1].DateTime, cacheItem.TimezoneOffset); + + var to = FromDate(cacheItem.LastData[^1].DateTime, cacheItem.TimezoneOffset); + var from = FromDate(cacheItem.FirstByDate.DateTime, cacheItem.TimezoneOffset); return new DatesRangeDto { From = from, To = to }; } diff --git a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataSaubService.cs b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataSaubService.cs index c66cd984..8541caee 100644 --- a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataSaubService.cs +++ b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataSaubService.cs @@ -177,22 +177,6 @@ public class TelemetryDataSaubService : TelemetryDataBaseService> GetDateRangesAsync(CancellationToken token) - { - return await db.Set().GroupBy(x => x.IdTelemetry) - .Select(g => new - { - IdTelemetry = g.Key, - From = g.Min(x => x.DateTime), - To = g.Max(x => x.DateTime) - }) - .ToDictionaryAsync(x => x.IdTelemetry, x => new DatesRangeDto - { - From = x.From, - To = x.To - }, token); - } - protected override IQueryable BuildQuery(int idTelemetry, TelemetryDataRequest request) { var query = base.BuildQuery(idTelemetry, request);