diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectableTelemetry.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectableTelemetry.cs index 626b58d6..55a605f2 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectableTelemetry.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectableTelemetry.cs @@ -1,18 +1,16 @@ using System; -namespace AsbCloudInfrastructure.Services.DetectOperations +namespace AsbCloudInfrastructure.Services.DetectOperations; + +public class DetectableTelemetry { - - public class DetectableTelemetry - { - public DateTimeOffset DateTime { get; set; } - public int? IdUser { get; set; } - public float WellDepth { get; set; } - public float Pressure { get; set; } - public float HookWeight { get; set; } - public float BlockPosition { get; set; } - public float BitDepth { get; set; } - public float RotorSpeed { get; set; } - } - + public DateTimeOffset DateTime { get; set; } + public int? IdUser { get; set; } + public int Mode { get; set; } + public float WellDepth { get; set; } + public float Pressure { get; set; } + public float HookWeight { get; set; } + public float BlockPosition { get; set; } + public float BitDepth { get; set; } + public float RotorSpeed { get; set; } } diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs index 07d2b16e..bacebad9 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs @@ -34,8 +34,6 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors protected const int IdReasonOfEnd_Custom1 = 10_000; - protected abstract Func GetIdOperation { get; } - public bool TryDetect(int idTelemetry, DetectableTelemetry[] telemetry, int begin, int end, DetectedOperation? previousOperation, out OperationDetectorResult? result) { @@ -87,7 +85,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors Operation = new DetectedOperation { IdTelemetry = idTelemetry, - IdCategory = GetIdOperation.Invoke(telemetry, begin, end), + IdCategory = GetIdOperation(telemetry, begin, end), IdUsersAtStart = pBegin.IdUser ?? -1, DateStart = pBegin.DateTime, DateEnd = pEnd.DateTime, @@ -101,6 +99,8 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors return !IsValidOperationDetectorResult(result) ? null : result; } + protected abstract int GetIdOperation(DetectableTelemetry[] telemetry, int begin, int end); + protected abstract double CalcValue(DetectableTelemetry[] telemetry, int begin, int end); /// diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorDrilling.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorDrilling.cs index cc8b7353..80889677 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorDrilling.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorDrilling.cs @@ -7,8 +7,6 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors; public class DetectorDrilling : DetectorAbstract { - protected override Func GetIdOperation => DefineDrillingOperation; - public IDictionary<(int, int), float> AvgRotorSpeedDict { get; } = new Dictionary<(int, int), float>(); public IDictionary<(int, int), double> DespersionDict { get; } = new Dictionary<(int, int), double>(); @@ -46,7 +44,7 @@ public class DetectorDrilling : DetectorAbstract operationDetectorResult.Operation.IdReasonOfEnd is IdReasonOfEnd_DeltaDepthIsHi or IdReasonOfEnd_PressureIsLo && Math.Abs(operationDetectorResult.Operation.DepthStart - operationDetectorResult.Operation.DepthEnd) > 0.01; - private int DefineDrillingOperation(DetectableTelemetry[] telemetry, int begin, int end) + protected override int GetIdOperation(DetectableTelemetry[] telemetry, int begin, int end) { const int idSlideWithOscillation = 12000; diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlipsTime.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlipsTime.cs index 7ca25fe5..7109376d 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlipsTime.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlipsTime.cs @@ -8,8 +8,6 @@ public class DetectorSlipsTime : DetectorAbstract protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end) => CalcDeltaMinutes(telemetry, begin, end); - protected override Func GetIdOperation => (_, _, _) => WellOperationCategory.IdSlipsTime; - protected override bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation) { var point0 = telemetry[position]; @@ -29,7 +27,10 @@ public class DetectorSlipsTime : DetectorAbstract return true; } - protected override bool IsValidOperationDetectorResult(OperationDetectorResult operationDetectorResult) => + protected override int GetIdOperation(DetectableTelemetry[] telemetry, int begin, int end) + => WellOperationCategory.IdSlipsTime; + + protected override bool IsValidOperationDetectorResult(OperationDetectorResult operationDetectorResult) => Math.Abs(operationDetectorResult.Operation.DepthStart - operationDetectorResult.Operation.DepthEnd) > 0.01; } diff --git a/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs b/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs index 43815670..36b5cbf8 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs @@ -96,6 +96,7 @@ public class WorkOperationDetection: Work { DateTime = d.DateTime, IdUser = d.IdUser, + Mode = d.Mode, WellDepth = d.WellDepth, Pressure = d.Pressure, HookWeight = d.HookWeight,