diff --git a/AsbCloudDb/Model/TelemetryAnalysis.cs b/AsbCloudDb/Model/TelemetryAnalysis.cs index a9a82dbe..0871b587 100644 --- a/AsbCloudDb/Model/TelemetryAnalysis.cs +++ b/AsbCloudDb/Model/TelemetryAnalysis.cs @@ -66,10 +66,10 @@ namespace AsbCloudDb.Model public bool IsBlockPositionDecreasing { get; set; } [Column("is_rotor_speed_lt_3"), Comment("Обороты ротора ниже 3")] - public bool IsRotorSpeedLt3 { get; set; } + public bool IsRotorSpeedLt5 { get; set; } [Column("is_rotor_speed_gt_3"), Comment("Обороты ротора выше 3")] - public bool IsRotorSpeedGt3 { get; set; } + public bool IsRotorSpeedGt5 { get; set; } [Column("is_pressure_lt_20"), Comment("Давление менее 20")] public bool IsPressureLt20 { get; set; } diff --git a/AsbCloudDbDemoData/DbDemoDataFiller.cs b/AsbCloudDbDemoData/DbDemoDataFiller.cs index 817d62f6..d342213d 100644 --- a/AsbCloudDbDemoData/DbDemoDataFiller.cs +++ b/AsbCloudDbDemoData/DbDemoDataFiller.cs @@ -191,8 +191,8 @@ namespace AsbCloudDevOperations IsBitPositionLt20 = true, IsBlockPositionIncreasing = false, IsBlockPositionDecreasing = false, - IsRotorSpeedLt3 = true, - IsRotorSpeedGt3 = false, + IsRotorSpeedLt5 = true, + IsRotorSpeedGt5 = false, IsPressureLt20 = true, IsPressureGt20 = false, IsHookWeightNotChanges = true, @@ -214,8 +214,8 @@ namespace AsbCloudDevOperations IsBitPositionLt20 = true, IsBlockPositionIncreasing = true, IsBlockPositionDecreasing = false, - IsRotorSpeedLt3 = true, - IsRotorSpeedGt3 = false, + IsRotorSpeedLt5 = true, + IsRotorSpeedGt5 = false, IsPressureLt20 = true, IsPressureGt20 = false, IsHookWeightNotChanges = true, @@ -237,8 +237,8 @@ namespace AsbCloudDevOperations IsBitPositionLt20 = true, IsBlockPositionIncreasing = false, IsBlockPositionDecreasing = true, - IsRotorSpeedLt3 = true, - IsRotorSpeedGt3 = false, + IsRotorSpeedLt5 = true, + IsRotorSpeedGt5 = false, IsPressureLt20 = true, IsPressureGt20 = false, IsHookWeightNotChanges = true, @@ -260,8 +260,8 @@ namespace AsbCloudDevOperations IsBitPositionLt20 = true, IsBlockPositionIncreasing = false, IsBlockPositionDecreasing = false, - IsRotorSpeedLt3 = true, - IsRotorSpeedGt3 = false, + IsRotorSpeedLt5 = true, + IsRotorSpeedGt5 = false, IsPressureLt20 = true, IsPressureGt20 = false, IsHookWeightNotChanges = true, @@ -283,8 +283,8 @@ namespace AsbCloudDevOperations IsBitPositionLt20 = true, IsBlockPositionIncreasing = true, IsBlockPositionDecreasing = false, - IsRotorSpeedLt3 = true, - IsRotorSpeedGt3 = false, + IsRotorSpeedLt5 = true, + IsRotorSpeedGt5 = false, IsPressureLt20 = true, IsPressureGt20 = false, IsHookWeightNotChanges = true, diff --git a/AsbCloudInfrastructure/Services/TelemetryAnalyticsService.cs b/AsbCloudInfrastructure/Services/TelemetryAnalyticsService.cs index 62f0ce8a..868360dc 100644 --- a/AsbCloudInfrastructure/Services/TelemetryAnalyticsService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryAnalyticsService.cs @@ -520,8 +520,8 @@ namespace AsbCloudInfrastructure.Services IsBitPositionLt20 = bitPositionLine.IsAverageYLessThanBound(20), IsBlockPositionDecreasing = blockPositionLine.IsYDecreases(-0.0001), IsBlockPositionIncreasing = blockPositionLine.IsYIncreases(0.0001), - IsRotorSpeedLt3 = rotorSpeedLine.IsAverageYLessThanBound(3), - IsRotorSpeedGt3 = rotorSpeedLine.IsAverageYMoreThanBound(3), + IsRotorSpeedLt5 = rotorSpeedLine.IsAverageYLessThanBound(5), + IsRotorSpeedGt5 = rotorSpeedLine.IsAverageYMoreThanBound(5), IsPressureLt20 = pressureLine.IsAverageYLessThanBound(20), IsPressureGt20 = pressureLine.IsAverageYMoreThanBound(20), IsHookWeightNotChanges = hookWeightLine.IsYNotChanges(0.0001, -0.0001), diff --git a/AsbCloudInfrastructure/Services/TelemetryOperationDetectorService.cs b/AsbCloudInfrastructure/Services/TelemetryOperationDetectorService.cs index 0c39a3c4..a74cb608 100644 --- a/AsbCloudInfrastructure/Services/TelemetryOperationDetectorService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryOperationDetectorService.cs @@ -16,6 +16,26 @@ namespace AsbCloudInfrastructure.Services new TelemetryOperationDetector { Order = 1, + Operation = operations.FirstOrDefault(o => o.Name.Equals("Роторное бурение")), + Detect = (data) => + { + return data.IsWellDepthIncreasing && data.IsBitPositionIncreasing && + data.IsBlockPositionIncreasing && data.IsRotorSpeedGt5; + } + }, + new TelemetryOperationDetector + { + Order = 2, + Operation = operations.FirstOrDefault(o => o.Name.Equals("Слайдирование")), + Detect = (data) => + { + return data.IsWellDepthIncreasing && data.IsBitPositionIncreasing && + data.IsBlockPositionIncreasing && data.IsRotorSpeedLt5; + } + }, + new TelemetryOperationDetector + { + Order = 3, Operation = operations.FirstOrDefault(o => o.Name.Equals("На поверхности")), Detect = (data) => { @@ -24,7 +44,7 @@ namespace AsbCloudInfrastructure.Services }, new TelemetryOperationDetector { - Order = 2, + Order = 4, Operation = operations.FirstOrDefault(o => o.Name.Equals("Удержание в клиньях")), Detect = (data) => { @@ -36,143 +56,143 @@ namespace AsbCloudInfrastructure.Services }, new TelemetryOperationDetector { - Order = 3, + Order = 5, Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем с проработкой")), Detect = (data) => { return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing && - data.IsRotorSpeedGt3 && data.IsPressureGt20; - } - }, - new TelemetryOperationDetector - { - Order = 4, - Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск с проработкой")), - Detect = (data) => - { - return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && - data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing && - data.IsRotorSpeedGt3 && data.IsPressureGt20; - } - }, - new TelemetryOperationDetector - { - Order = 5, - Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем с промывкой")), - Detect = (data) => - { - return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && - data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing && - data.IsRotorSpeedLt3 && data.IsPressureGt20; + data.IsRotorSpeedGt5 && data.IsPressureGt20; } }, new TelemetryOperationDetector { Order = 6, - Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск с промывкой")), + Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск с проработкой")), Detect = (data) => { return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing && - data.IsRotorSpeedLt3 && data.IsPressureGt20; + data.IsRotorSpeedGt5 && data.IsPressureGt20; } }, new TelemetryOperationDetector { Order = 7, - Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск в скважину")), + Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем с промывкой")), Detect = (data) => { return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && - data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing && - data.IsRotorSpeedLt3 && data.IsPressureLt20; + data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing && + data.IsRotorSpeedLt5 && data.IsPressureGt20; } }, new TelemetryOperationDetector { Order = 8, - Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск с вращением")), + Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск с промывкой")), Detect = (data) => { return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing && - data.IsRotorSpeedGt3 && data.IsPressureLt20; + data.IsRotorSpeedLt5 && data.IsPressureGt20; } }, new TelemetryOperationDetector { Order = 9, - Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем из скважины")), + Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск в скважину")), Detect = (data) => { return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && - data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing && - data.IsRotorSpeedLt3 && data.IsPressureLt20; + data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing && + data.IsRotorSpeedLt5 && data.IsPressureLt20; } }, new TelemetryOperationDetector { Order = 10, - Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем с вращением")), + Operation = operations.FirstOrDefault(o => o.Name.Equals("Спуск с вращением")), Detect = (data) => { return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && - data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing && - data.IsRotorSpeedGt3 && data.IsPressureLt20; + data.IsBitPositionIncreasing && data.IsBlockPositionDecreasing && + data.IsRotorSpeedGt5 && data.IsPressureLt20; } }, new TelemetryOperationDetector { Order = 11, + Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем из скважины")), + Detect = (data) => + { + return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && + data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing && + data.IsRotorSpeedLt5 && data.IsPressureLt20; + } + }, + new TelemetryOperationDetector + { + Order = 12, + Operation = operations.FirstOrDefault(o => o.Name.Equals("Подъем с вращением")), + Detect = (data) => + { + return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && + data.IsBitPositionDecreasing && data.IsBlockPositionIncreasing && + data.IsRotorSpeedGt5 && data.IsPressureLt20; + } + }, + new TelemetryOperationDetector + { + Order = 13, Operation = operations.FirstOrDefault(o => o.Name.Equals("Промывка в покое")), Detect = (data) => { return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && !data.IsBitPositionDecreasing && !data.IsBitPositionIncreasing && !data.IsBlockPositionDecreasing && !data.IsBlockPositionIncreasing && - data.IsRotorSpeedLt3 && data.IsPressureGt20; + data.IsRotorSpeedLt5 && data.IsPressureGt20; } }, new TelemetryOperationDetector { - Order = 12, + Order = 14, Operation = operations.FirstOrDefault(o => o.Name.Equals("Промывка с вращением")), Detect = (data) => { return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && !data.IsBitPositionDecreasing && !data.IsBitPositionIncreasing && !data.IsBlockPositionDecreasing && !data.IsBlockPositionIncreasing && - data.IsRotorSpeedGt3 && data.IsPressureGt20; + data.IsRotorSpeedGt5 && data.IsPressureGt20; } }, new TelemetryOperationDetector { - Order = 13, + Order = 15, Operation = operations.FirstOrDefault(o => o.Name.Equals("Неподвижное состояние")), Detect = (data) => { return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && !data.IsBitPositionDecreasing && !data.IsBitPositionIncreasing && !data.IsBlockPositionDecreasing && !data.IsBlockPositionIncreasing && - data.IsRotorSpeedLt3 && data.IsPressureLt20 && data.IsHookWeightNotChanges; + data.IsRotorSpeedLt5 && data.IsPressureLt20 && data.IsHookWeightNotChanges; } }, new TelemetryOperationDetector { - Order = 14, + Order = 16, Operation = operations.FirstOrDefault(o => o.Name.Equals("Вращение без циркуляции")), Detect = (data) => { return !data.IsWellDepthDecreasing && !data.IsWellDepthIncreasing && !data.IsBitPositionDecreasing && !data.IsBitPositionIncreasing && !data.IsBlockPositionDecreasing && !data.IsBlockPositionIncreasing && - data.IsRotorSpeedGt3 && data.IsPressureLt20; + data.IsRotorSpeedGt5 && data.IsPressureLt20; } }, new TelemetryOperationDetector { - Order = 15, + Order = 17, Operation = operations.FirstOrDefault(o => o.Name.Equals("Невозможно определить операцию")), Detect = (data) => true }