// using System; // using AsbCloudDb.Model; // // namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors // { // // /// // /// Проработка перед наращиванием // /// // internal class DetectorDevelopment : DetectorAbstract // { // protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end) // => CalcDeltaMinutes(telemetry, begin, end); // // public override Func GetIdOperation => (_, _, _) // => WellOperationCategory.IdDevelopment; // // protected override bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation) // { // if (previousOperation?.IdCategory == WellOperationCategory.IdSlipsTime) // return false; // // var point0 = telemetry[position]; // var delta = point0.WellDepth - point0.BitDepth; // if (delta < 0.03d || delta > 30) // return false; // // if (point0.Pressure < 15) // return false; // // if (point0.BlockPosition > 2.5) // return false; // // if (point0.RotorSpeed < 10) // return false; // // if (!ContainsDeviationApprox(telemetry, d => d.BlockPosition, position, 60, 0.03)) // return false; // // return true; // } // // protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation) // { // var point0 = telemetry[position]; // var delta = point0.WellDepth - point0.BitDepth; // if (delta < 0.03d || delta > 30) // return IdReasonOfEnd_DeltaDepthOutOfRange; // // if (point0.Pressure < 15) // return IdReasonOfEnd_PressureIsLo; // // if (point0.BlockPosition > 31) // return IdReasonOfEnd_BlockPositionIsHi; // // if (point0.RotorSpeed < 10) // return IdReasonOfEnd_RotorSpeedIsLo; // // return IdReasonOfEnd_NotDetected; // } // // protected override bool IsValid(DetectableTelemetry[] telemetry, int begin, int end) // => IsValidByWellDepthDoesNotChange(telemetry, begin, end); // } // } //