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);