From 410ef56f184c0c20d020aae80046555b9705ea27 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: Wed, 6 Dec 2023 16:43:28 +0500 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B0=D0=BB=D0=B3=D0=BE=D1=80=D0=B8=D1=82=D0=BC?= =?UTF-8?q?=D0=B0=20=D1=80=D0=B0=D1=81=D1=87=D1=91=D1=82=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20=D0=90=D0=9F?= =?UTF-8?q?=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Data/DetectedOperation/OperationsSummaryDto.cs | 5 +++++ .../DetectOperations/DetectedOperationService.cs | 5 +++-- .../Subsystems/SubsystemOperationTimeService.cs | 10 ++++++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/AsbCloudApp/Data/DetectedOperation/OperationsSummaryDto.cs b/AsbCloudApp/Data/DetectedOperation/OperationsSummaryDto.cs index 74f755cc..74fe1e7b 100644 --- a/AsbCloudApp/Data/DetectedOperation/OperationsSummaryDto.cs +++ b/AsbCloudApp/Data/DetectedOperation/OperationsSummaryDto.cs @@ -29,4 +29,9 @@ public class OperationsSummaryDto /// Cумма продолжительностей операций /// public double SumDurationHours { get; set; } + + /// + /// Флаг включенной подсистемы + /// + public int EnabledSubsystems { get; set; } } diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs index a164cb4e..65b4722c 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs @@ -104,14 +104,15 @@ namespace AsbCloudInfrastructure.Services.DetectOperations query = query.Where(operation => operation.DepthEnd <= request.LeDepthEnd.Value); var queryGroup = query - .GroupBy(operation => new { operation.IdTelemetry, operation.IdCategory }) + .GroupBy(operation => new { operation.IdTelemetry, operation.IdCategory, operation.EnabledSubsystems }) .Select(group => new OperationsSummaryDto { IdTelemetry = group.Key.IdTelemetry, IdCategory = group.Key.IdCategory, + EnabledSubsystems = group.Key.EnabledSubsystems, Count = group.Count(), SumDepthIntervals = group.Sum(operation => operation.DepthEnd - operation.DepthStart), - SumDurationHours = group.Sum(operation => (operation.DateEnd - operation.DateStart).TotalHours) + SumDurationHours = group.Sum(operation => (operation.DateEnd - operation.DateStart).TotalHours), }) .OrderBy(summ => summ.IdTelemetry) .ThenBy(summ => summ.IdCategory); diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs index 8164da4c..fc2d8f71 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs @@ -156,9 +156,7 @@ internal class SubsystemOperationTimeService : ISubsystemOperationTimeService var groupedSubsystemsTimes = subsystemsTimes .OrderBy(o => o.Id) .GroupBy(o => o.IdSubsystem); - - var periodGroupTotal = subsystemsTimes.Sum(o => (o.DateEnd - o.DateStart).TotalHours); - + var result = groupedSubsystemsTimes.Select(g => { var periodGroup = g.Sum(o => (o.DateEnd - o.DateStart).TotalHours); @@ -193,7 +191,11 @@ internal class SubsystemOperationTimeService : ISubsystemOperationTimeService SumDepthInterval = apdParts.Sum(part => part.SumDepthInterval), OperationCount = apdParts.Sum(part => part.OperationCount), }; - apdSum.KUsage = apdSum.SumDepthInterval / apdSum.SumOperationDepthInterval; + + operationsSummaries = operationsSummaries.Where(o => o.EnabledSubsystems == 1); + + var (_, sumOprationsDurationHours) = AggregateOperationsSummaries(IdSubsystemAKBRotor, operationsSummaries); + apdSum.KUsage = sumOprationsDurationHours / apdSum.SumOperationDurationHours; if (apdSum.KUsage > 1) apdSum.KUsage = 1; result = result.Append(apdSum).OrderBy(m => m.IdSubsystem);