Replace GetIdOperation delegate by method.

Add Mode to DetectableTelemetry
This commit is contained in:
ngfrolov 2023-12-04 11:11:25 +05:00
parent 4500d2e6de
commit fd8b0de5a0
Signed by: ng.frolov
GPG Key ID: E99907A0357B29A7
5 changed files with 21 additions and 23 deletions

View File

@ -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; }
}

View File

@ -34,8 +34,6 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
protected const int IdReasonOfEnd_Custom1 = 10_000;
protected abstract Func<DetectableTelemetry[], int, int, int> 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);
/// <summary>

View File

@ -7,8 +7,6 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors;
public class DetectorDrilling : DetectorAbstract
{
protected override Func<DetectableTelemetry[], int, int, int> 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;

View File

@ -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<DetectableTelemetry[], int, int, int> 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;
}

View File

@ -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,