From f1dea8f10ff29c59f165a851d6595e79b331ea9c Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Thu, 3 Nov 2022 17:13:39 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D1=81=D1=83=D1=82=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D0=B8=D0=B5=20=D1=81=D1=82=D0=B0=D1=82=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D0=BA=D0=B8=20=D0=B7=D0=B0=20=D1=81=D0=BA=D0=B2=D0=B0?= =?UTF-8?q?=D0=B6=D0=B8=D0=BD=D1=83=20=D0=B1=D1=83=D0=B4=D0=B5=D1=82=20?= =?UTF-8?q?=D0=B2=D0=BE=D0=B7=D0=B2=D1=80=D0=B0=D1=89=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D1=82=D1=83=D1=8E=20=D1=81=D1=82=D0=B0=D1=82?= =?UTF-8?q?=D0=B8=D1=81=D1=82=D0=B8=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Subsystems/SubsystemActiveWellStatDto.cs | 12 +++--- .../DetectedOperationService.cs | 6 +-- .../SubsystemOperationTimeService.cs | 39 +++++++++---------- 3 files changed, 28 insertions(+), 29 deletions(-) diff --git a/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs b/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs index 6ca35fcf..bdcdd301 100644 --- a/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs +++ b/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; - namespace AsbCloudApp.Data.Subsystems { +#nullable enable /// /// Статистика наработки подсистем по активным скважинам /// @@ -14,19 +14,19 @@ namespace AsbCloudApp.Data.Subsystems /// /// Наработки подсистемы АКБ /// - public SubsystemStatDto SubsystemAKB { get; set; } + public SubsystemStatDto? SubsystemAKB { get; set; } /// /// Наработки подсистемы МСЕ /// - public SubsystemStatDto SubsystemMSE { get; set; } + public SubsystemStatDto? SubsystemMSE { get; set; } /// /// Наработки подсистемы СПИН /// - public SubsystemStatDto SubsystemSpinMaster { get; set; } + public SubsystemStatDto? SubsystemSpinMaster { get; set; } /// /// Наработки подсистемы ТОРК /// - public SubsystemStatDto SubsystemTorqueMaster { get; set; } - + public SubsystemStatDto? SubsystemTorqueMaster { get; set; } } +#nullable disable } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs index f5816b1b..35970bca 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs @@ -18,7 +18,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations #nullable enable public class DetectedOperationService : IDetectedOperationService { - public const int IdOperationRotor = 1; + public const int IdOperationRotor = 2; public const int IdOperationSlide = 3; public const int IdOperationSlipsTime = 14; public const int idOperationFlushing = 22; @@ -95,8 +95,8 @@ namespace AsbCloudInfrastructure.Services.DetectOperations .Select(g => new { IdTelemetry = g.Key, - RotorDepthInterval = g.Where(o => o.IdCategory == 1).Sum(o => o.DepthEnd - o.DepthStart), - SlideDepthInterval = g.Where(o => o.IdCategory == 3).Sum(o => o.DepthEnd - o.DepthStart) + RotorDepthInterval = g.Where(o => o.IdCategory == IdOperationRotor).Sum(o => o.DepthEnd - o.DepthStart), + SlideDepthInterval = g.Where(o => o.IdCategory == IdOperationSlide).Sum(o => o.DepthEnd - o.DepthStart) }); var data = await query.ToListAsync(token); if (data.Any()) diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs index 7a8a32fe..f155c8af 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs @@ -202,7 +202,11 @@ namespace AsbCloudInfrastructure.Services.Subsystems var telemetryIds = activeWell.Select(w => w.IdTelemetry).Distinct(); var firstWell = activeWell.FirstOrDefault(); if (firstWell == null) - return null; + return Enumerable.Empty(); + var result =activeWell.Select( t => new SubsystemActiveWellStatDto + { + ActiveWell = t + }); var query = db.SubsystemOperationTimes .Where(o => telemetryIds.Contains(o.IdTelemetry)) @@ -221,30 +225,25 @@ namespace AsbCloudInfrastructure.Services.Subsystems query = query.Where(d => d.DateStart >= beginUTC); query = query.Where(o => o.DateEnd <= endUTC); - var depthIntervals = await detectedOperationService.GetDepthIntervalAllOperationsAsync(telemetryIds, beginUTC, endUTC, token); - var result = new List(); + var depthIntervals = await detectedOperationService.GetDepthIntervalAllOperationsAsync(telemetryIds, beginUTC, endUTC, token); + if (depthIntervals is null) + { + return result; + } var subsystemsOperationTime = await query.ToListAsync(token); var groupingSubsystemsOperationTime = subsystemsOperationTime.GroupBy(g => g.IdTelemetry); foreach (var group in groupingSubsystemsOperationTime) { - var well = activeWell.Where(w => w.IdTelemetry == group.Key).FirstOrDefault(); - if (well != null) + var well = result.Where(w => w.ActiveWell.IdTelemetry == group.Key).FirstOrDefault(); + if (well is not null) { - var wellStat = new SubsystemActiveWellStatDto() - { - ActiveWell = well - }; - if (depthIntervals is not null) - { - var depthInterval = depthIntervals.Where(o => o.Item1 == well.IdTelemetry).Select(o => (o.Item2, o.Item3)).FirstOrDefault(); - var dto = group.Select(s => s.Adapt()); - var subsystemStat = CalcStat(dto, depthInterval); - wellStat.SubsystemAKB = subsystemStat.FirstOrDefault(s => s.IdSubsystem == IdSubsystemAKB); - wellStat.SubsystemMSE = subsystemStat.FirstOrDefault(s => s.IdSubsystem == IdSubsystemMSE); - wellStat.SubsystemSpinMaster = subsystemStat.FirstOrDefault(s => s.IdSubsystem == IdSubsystemSpin); - wellStat.SubsystemTorqueMaster = subsystemStat.FirstOrDefault(s => s.IdSubsystem == IdSubsystemTorque); - result.Add(wellStat); - } + var depthInterval = depthIntervals.Where(o => o.idTelemetry == well.ActiveWell.IdTelemetry).Select(o => (o.depthIntervalRotor, o.depthIntervalSlide)).FirstOrDefault(); + var dto = group.Select(s => s.Adapt()); + var subsystemStat = CalcStat(dto, depthInterval); + well.SubsystemAKB = subsystemStat.FirstOrDefault(s => s.IdSubsystem == IdSubsystemAKB); + well.SubsystemMSE = subsystemStat.FirstOrDefault(s => s.IdSubsystem == IdSubsystemMSE); + well.SubsystemSpinMaster = subsystemStat.FirstOrDefault(s => s.IdSubsystem == IdSubsystemSpin); + well.SubsystemTorqueMaster = subsystemStat.FirstOrDefault(s => s.IdSubsystem == IdSubsystemTorque); } } return result;