From eb987c6ff23fdc231dd8a2717a48cb98efa15172 Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Fri, 16 Sep 2022 13:34:14 +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=20SubsystemStatDTO=20=D0=98=D0=B7=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B0=D0=BB=D0=B3=D0=BE=D1=80?= =?UTF-8?q?=D0=B8=D1=82=D0=BC=D0=BE=D0=B2=20=D0=BF=D1=80=D0=BE=D1=81=D1=87?= =?UTF-8?q?=D0=B5=D1=82=D0=B0=20=D1=81=D1=82=D0=B0=D1=82=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Data/Subsystems/SubsystemStatDto.cs | 9 +++- .../SubsystemOperationTimeService.cs | 48 ++++++++++++++++++- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/AsbCloudApp/Data/Subsystems/SubsystemStatDto.cs b/AsbCloudApp/Data/Subsystems/SubsystemStatDto.cs index d86c6bb3..c00a06ed 100644 --- a/AsbCloudApp/Data/Subsystems/SubsystemStatDto.cs +++ b/AsbCloudApp/Data/Subsystems/SubsystemStatDto.cs @@ -23,8 +23,13 @@ namespace AsbCloudApp.Data.Subsystems /// public double KUsage { get; set; } /// - /// коэффициент применения + /// сумма изменения глубин /// - public double K2 { get; set; } + public double SumDepthChange { get; set; } + /// + /// количество операций + /// + public int OperationCount { get; set; } + } } diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs index 9bfe0b85..8f24bcdc 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs @@ -122,19 +122,63 @@ namespace AsbCloudInfrastructure.Services.Subsystems var result = groupedDataSubsystems.Select(item => { var periodGroup = item.Sum(o => (o.DateEnd - o.DateStart).TotalHours); + var periodGroupDepth = item.Sum(o => o.DepthEnd - o.DepthStart); + var depthChange = GetDepthChange(item.Key, gtDate, ltDate); var subsystemStat = new SubsystemStatDto() { IdSubsystem = item.Key, SubsystemName = subsystemService.GetOrDefault(item.Key)?.Name ?? "unknown", UsedTimeHours = periodGroup, - KUsage = 1d * periodGroup / periodRequest, - K2 = 1d * periodGroup / periodGroupTotal, + //условие добавлено что бы избежать деление на ноль + //чисто теоретически такое событие может произойти только в случае + //если не было определенных операций по какому то из режимов + // тогда в этом поле статистики будет null + KUsage = depthChange==0? double.NaN : periodGroupDepth / depthChange, + SumDepthChange = periodGroupDepth, + OperationCount = item.Count() }; return subsystemStat; }); return result; } + private double GetDepthChange (int idSubsystem, DateTime gtDate, DateTime ltDate) + { + double depthChange = 0; + var detectOperations = db.DetectedOperations + .Where(a => a.DateStart >= gtDate & a.DateEnd <= ltDate) + .ToList(); + //AKB - Rotor+Slide + if (idSubsystem == 1) + { + depthChange = detectOperations.Where(a => a.IdCategory == 1 & a.IdCategory == 3) + .Sum(o => o.DepthEnd - o.DepthStart); + return depthChange; + } + //Mse - all detect operations + if (idSubsystem == 2) + { + depthChange = detectOperations + .Sum(o => o.DepthEnd - o.DepthStart); + return depthChange; + } + //Slide + if (idSubsystem == 65536) + { + depthChange = detectOperations.Where(o => o.IdCategory == 3) + .Sum(o => o.DepthEnd - o.DepthStart); + return depthChange; + } + //Rotor + if (idSubsystem == 65537) + { + depthChange = detectOperations.Where(o => o.IdCategory == 1) + .Sum(o => o.DepthEnd - o.DepthStart); + return depthChange; + } + + return depthChange; + } private IQueryable? BuildQuery(SubsystemOperationTimeRequest request) {