From 64a4d80d9afe872d99bfc776d5223943b9587291 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 15 Sep 2023 16:21:17 +0500 Subject: [PATCH] nit SubsystemDetector.Detect() refactor --- .../SubsystemOperationTimeCalcWorkFactory.cs | 42 ++++++++----------- .../SubsystemOperationTimeService.cs | 2 - .../Services/Subsystems/SybsystemDetector.cs | 17 ++++---- 3 files changed, 27 insertions(+), 34 deletions(-) diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeCalcWorkFactory.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeCalcWorkFactory.cs index 35216280..d5b86803 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeCalcWorkFactory.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeCalcWorkFactory.cs @@ -15,7 +15,6 @@ using System.Threading.Tasks; namespace AsbCloudInfrastructure.Services.Subsystems { - internal static class SubsystemOperationTimeCalcWorkFactory { private const string workId = "Subsystem operation time calc"; @@ -142,23 +141,19 @@ namespace AsbCloudInfrastructure.Services.Subsystems var date = result.GetFieldValue(0); var depth = result.GetFieldValue(2); - var rotorSubsystemOperationTime = detectorRotor.Detect(mode, date, depth); - if (rotorSubsystemOperationTime != null) - subsystemsOperationTimes.Add(rotorSubsystemOperationTime); + if (detectorRotor.TryDetect(mode, date, depth, out var detectedRotor)) + subsystemsOperationTimes.Add(detectedRotor!); - var slideSubsystemOperationTime = detectorSlide.Detect(mode, date, depth); - if (slideSubsystemOperationTime != null) - subsystemsOperationTimes.Add(slideSubsystemOperationTime); + if (detectorSlide.TryDetect(mode, date, depth, out var detectedSlide)) + subsystemsOperationTimes.Add(detectedSlide!); - var mseSubsystemOperationTime = detectorMse.Detect(mode, date, depth); - if (mseSubsystemOperationTime != null) - subsystemsOperationTimes.Add(mseSubsystemOperationTime); + if (detectorMse.TryDetect(mode, date, depth, out var detectedMse)) + subsystemsOperationTimes.Add(detectedMse!); } return subsystemsOperationTimes; } - private static async Task> OperationTimeSpinAsync(int idTelemetry, DateTimeOffset begin, IAsbCloudDbContext db, CancellationToken token) { static int? GetSubsytemId(short? mode, int? state) @@ -193,23 +188,22 @@ namespace AsbCloudInfrastructure.Services.Subsystems $"order by date;"; var rows = new List<(int? IdSubsystem, DateTimeOffset Date)>(32); + + using var resultSpin = await ExecuteReaderAsync(db, querySpin, token); + int? idSubsystemLast = null; + while (resultSpin.Read()) { - using var resultSpin = await ExecuteReaderAsync(db, querySpin, token); - int? idSubsystemLast = null; - while (resultSpin.Read()) + var mode = resultSpin.GetFieldValue(1); + var state = resultSpin.GetFieldValue(2); + var idSubsystem = GetSubsytemId(mode, state); + if (idSubsystemLast != idSubsystem) { - var mode = resultSpin.GetFieldValue(1); - var state = resultSpin.GetFieldValue(2); - var idSubsystem = GetSubsytemId(mode, state); - if (idSubsystemLast != idSubsystem) - { - idSubsystemLast = idSubsystem; - var date = resultSpin.GetFieldValue(0); - rows.Add((idSubsystem, date)); - } + idSubsystemLast = idSubsystem; + var date = resultSpin.GetFieldValue(0); + rows.Add((idSubsystem, date)); } - await resultSpin.DisposeAsync(); } + await resultSpin.DisposeAsync(); if (rows.Count < 2) return Enumerable.Empty(); diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs index dbaa0d86..3dcf51a9 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs @@ -401,8 +401,6 @@ namespace AsbCloudInfrastructure.Services.Subsystems if (request?.Take > 0) query = query.Take((int)request.Take); - //else - //query = query.Take(3000); return query; } diff --git a/AsbCloudInfrastructure/Services/Subsystems/SybsystemDetector.cs b/AsbCloudInfrastructure/Services/Subsystems/SybsystemDetector.cs index 3a2aed50..5444d045 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SybsystemDetector.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SybsystemDetector.cs @@ -23,7 +23,7 @@ namespace AsbCloudInfrastructure.Services.Subsystems this.isValid = isValid; } - public SubsystemOperationTime? Detect(short? mode, DateTimeOffset date, float depth) + public bool TryDetect(short? mode, DateTimeOffset date, float depth, out SubsystemOperationTime? subsystemOperationTime) { var isEnable = this.isEnable(mode); @@ -33,7 +33,7 @@ namespace AsbCloudInfrastructure.Services.Subsystems } else if (pre.isEnable && !isEnable) { - var subsystemOperationTime = new SubsystemOperationTime + var detected = new SubsystemOperationTime { IdTelemetry = idTelemetry, IdSubsystem = idSubsystem, @@ -43,13 +43,14 @@ namespace AsbCloudInfrastructure.Services.Subsystems DepthEnd = depth, }; pre.isEnable = false; - if (!isValid(subsystemOperationTime)) - return null; - - return subsystemOperationTime; - + if (isValid(detected)) + { + subsystemOperationTime = detected; + return true; + } } - return null; + subsystemOperationTime = null; + return false; } } }