From ba56bfe274447f83d5e4e01f1ebd294a47e21283 Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Fri, 2 Feb 2024 13:51:58 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20OrderBy=20=D0=BF=D1=80=D0=B8=20=D1=81=D0=BE=D1=80?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B5=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+=20=D1=80=D0=B0?= =?UTF-8?q?=D1=81=D1=87=D0=B5=D1=82=20indexStart=20=D0=B8=20indexEnd=20?= =?UTF-8?q?=D0=B2=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B5=20CreateDataSaubS?= =?UTF-8?q?tat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PeriodicWorks/WorkDataSaubStat.cs | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs b/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs index 3b3c25df..08f6f7d5 100644 --- a/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs +++ b/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs @@ -52,8 +52,8 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks foreach ( var idTelemetry in idTelemetries) { - var lastDate = stats.FirstOrDefault(s=>s.IdTelemetry == idTelemetry)?.DateEnd ?? DateTimeOffset.UnixEpoch; - await CreateStatForTelemetryFromDate(db, idTelemetry, lastDate, token); + var lastDate = stats.FirstOrDefault(s => s.IdTelemetry == idTelemetry)?.DateEnd ?? DateTimeOffset.UnixEpoch; + await CreateStatForTelemetryFromDate(db, idTelemetry, lastDate, token); } } @@ -78,6 +78,7 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks .Where(t => t.DateTime >= minDate) .Where(t => t.DateTime <= maxDate) .Where(t => Math.Abs(t.BitDepth - t.WellDepth) < 0.0001) + .OrderBy(t => t.DateTime) .ToArrayAsync(token); if (!telemetryDataSaub.Any()) @@ -94,24 +95,29 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks var indexStart = 0; var indexEnd = 0; var result = new List(); + + if (!telemetryDataSaub.Any()) + return result; + foreach (var operation in detectedOperations) { indexStart = Array.FindIndex(telemetryDataSaub, indexEnd, t => t.DateTime >= operation.DateStart); - indexEnd = Array.FindIndex(telemetryDataSaub, indexStart, t => t.DateTime > operation.DateEnd) - 1; + if (indexStart < 0) + break; - if (indexStart >= 0 && indexEnd >= indexStart) - { - var length = indexEnd - indexStart; + indexEnd = Array.FindIndex(telemetryDataSaub, indexStart, t => t.DateTime > operation.DateEnd); - var subset = telemetryDataSaub.AsSpan(indexStart, length + 1); - var stats = CalcStats(operation, subset); - result.AddRange(stats); - } - else - { - indexStart = 0; - indexEnd = 0; - } + if (indexEnd < 0) + indexEnd = telemetryDataSaub.Length - 1; + + if (indexEnd == indexStart) + continue; + + var length = indexEnd - indexStart; + + var subset = telemetryDataSaub.AsSpan(indexStart, length); + var stats = CalcStats(operation, subset); + result.AddRange(stats); } return result; }