forked from ddrilling/AsbCloudServer
8bbaca0d0c
1. Поправел excel шаблон 2. Доработаны алгоритмы определения операций бурения 3. Небольшой рефакторинг DetectorAbstract, добавил метод для валидации 4. Закомментированы неиспользуемые детекторы. 5. Обновлена спецификация определения операций бурения 6. Добавлены тесты для определения операций бурения
67 lines
2.4 KiB
C#
67 lines
2.4 KiB
C#
// using System;
|
|
// using AsbCloudDb.Model;
|
|
//
|
|
// namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
|
// {
|
|
//
|
|
// /// <summary>
|
|
// /// Проработка перед наращиванием
|
|
// /// </summary>
|
|
// internal class DetectorDevelopment : DetectorAbstract
|
|
// {
|
|
// protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end)
|
|
// => CalcDeltaMinutes(telemetry, begin, end);
|
|
//
|
|
// public override Func<DetectableTelemetry[], int, int, int> 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);
|
|
// }
|
|
// }
|
|
//
|