diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationDto.cs
new file mode 100644
index 00000000..32c6e9a6
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationDto.cs
@@ -0,0 +1,33 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Functions;
+
+///
+/// РТК план противоаварийное вращение
+///
+public class ProcessMapPlanAntiCrashRotationDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Минимальные обороты ВСП, об/мин
+ ///
+ [Range(0.0, 250.0, ErrorMessage = "Минимальные обороты ВСП, об/мин., должно быть в пределах от 0 до 250")]
+ public double TopDriveRpmMin { get; set; }
+
+ ///
+ /// Минимальный расход для запуска оборотов ВСП, л/сек
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Минимальный расход для запуска оборотов ВСП, л/сек., должно быть в пределах от 0 до 100")]
+ public double TopDriveStartMinFlowRate { get; set; }
+
+ ///
+ /// Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м
+ ///
+ [Range(1.0, 35.0, ErrorMessage = "Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м., должно быть в пределах от 1 до 35")]
+ public double TopDriveTorqueMax { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFDto.cs
new file mode 100644
index 00000000..37da8dd5
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFDto.cs
@@ -0,0 +1,21 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Functions;
+
+///
+/// РТК план авто удержание TF
+///
+public class ProcessMapPlanAutoHoldTFDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Зенитный угол, градусы
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Зенитный угол, градусы, должно быть в пределах от 0 до 100")]
+ public double ZenithAngle { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDamperDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDamperDto.cs
new file mode 100644
index 00000000..2f271f02
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDamperDto.cs
@@ -0,0 +1,21 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Functions;
+
+///
+/// РТК план демпфер
+///
+public class ProcessMapPlanDamperDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// StickSlip
+ ///
+ [Range(0.0, 1000.0, ErrorMessage = "StickSlip, должно быть в пределах от 0 до 1000")]
+ public double StickSlip { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDrillTestDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDrillTestDto.cs
new file mode 100644
index 00000000..af7139a5
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDrillTestDto.cs
@@ -0,0 +1,45 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Functions;
+
+///
+/// РТК план дрил тест
+///
+public class ProcessMapPlanDrillTestDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Нагрузка минимальная, т
+ ///
+ [Range(1.0, 30.0, ErrorMessage = "Нагрузка минимальная, т., должно быть в пределах от 1 до 30")]
+ public double WeightOnBitMin { get; set; }
+
+ ///
+ /// Количество шагов по нагрузке
+ ///
+ [Range(1, 5, ErrorMessage = "Количество шагов по нагрузке, должно быть в пределах от 1 до 5")]
+ public int WeightOnBitStepsCount { get; set; }
+
+ ///
+ /// Минимальные обороты на ВСП, об/мин.
+ ///
+ [Range(5, 200, ErrorMessage = "Минимальные обороты на ВСП, об/мин., должно быть в пределах от 5 до 200")]
+ public int RpmMin { get; set; }
+
+ ///
+ /// Количество шагов оборотов на ВСП, шт.
+ ///
+ [Range(1, 5, ErrorMessage = "Количество шагов оборотов на ВСП, шт., должно быть в пределах от 1 до 5")]
+ public int RpmStepsCount { get; set; }
+
+ ///
+ /// Величина проходки шага, м.
+ ///
+ [Range(0.1, 2.0, ErrorMessage = "Величина проходки шага, м., должно быть в пределах от 0.1 до 2")]
+ public double LengthStep { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символа")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanOscillationDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanOscillationDto.cs
new file mode 100644
index 00000000..b444d59a
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanOscillationDto.cs
@@ -0,0 +1,51 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Functions;
+
+///
+/// РТК план осцилляция
+///
+public class ProcessMapPlanOscillationDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Оптимальный угол осцилляции, градусы
+ ///
+ [Range(0.0, 6000.0, ErrorMessage = "Оптимальный угол осцилляции, градусы, должно быть в пределах от 0 до 6000")]
+ public double OptimalOscillationAngle { get; set; }
+
+ ///
+ /// Скорость вправо, об/мин
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Скорость вправо, об/мин, должно быть в пределах от 0 до 270")]
+ public double RpmRight { get; set; }
+
+ ///
+ /// Скорость влево, об/мин
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Скорость влево, об/мин, должно быть в пределах от 0 до 270")]
+ public double RpmLeft { get; set; }
+
+ ///
+ /// Ограничение момента вправо, кН*м
+ ///
+ [Range(0.0, 35.0, ErrorMessage = "Ограничение момента вправо, кН*м., должно быть в пределах от 0 до 35")]
+ public double TorqueMaxRight { get; set; }
+
+ ///
+ /// Ограничение момента влево, кН*м
+ ///
+ [Range(0.0, 35.0, ErrorMessage = "Ограничение момента влево, кН*м., должно быть в пределах от 0 до 35")]
+ public double TorqueMaxLeft { get; set; }
+
+ ///
+ /// Режим Авто/Руч
+ ///
+ [Range(0, 1, ErrorMessage = "Режим Авто/Руч, должен быть либо 0, либо 1")]
+ public int Mode { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanShockTestDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanShockTestDto.cs
new file mode 100644
index 00000000..f00b339c
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanShockTestDto.cs
@@ -0,0 +1,51 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Functions;
+
+///
+/// РТК план shocktest
+///
+public class ProcessMapPlanShockTestDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// StickSlip
+ ///
+ [Range(0.0, 1000.0, ErrorMessage = "StickSlip, должно быть в пределах от 0 до 1000")]
+ public double StickSlip { get; set; }
+
+ ///
+ /// Whirl
+ ///
+ [Range(0.0, 1000.0, ErrorMessage = "Whirl, должно быть в пределах от 0 до 1000")]
+ public double Whirl { get; set; }
+
+ ///
+ /// Осевые вибрации
+ ///
+ [Range(0.0, 1000.0, ErrorMessage = "Осевые вибрации, должно быть в пределах от 0 до 1000")]
+ public double AxialVibrations { get; set; }
+
+ ///
+ /// Комбинированные вибрации
+ ///
+ [Range(0.0, 1000.0, ErrorMessage = "Комбинированные вибрации, должно быть в пределах от 0 до 1000")]
+ public double CombinedVibrations { get; set; }
+
+ ///
+ /// Нагрузка минимальная, т
+ ///
+ [Range(0.0, 30.0, ErrorMessage = "Комбинированные вибрации, должно быть в пределах от 1 до 30")]
+ public double WeightOnBitMin { get; set; }
+
+ ///
+ /// Минимальные обороты на ВСП, об/мин.
+ ///
+ [Range(5, 200, ErrorMessage = "Минимальные обороты на ВСП, об/мин., должно быть в пределах от 5 до 200")]
+ public double RpmMin { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputDto.cs
new file mode 100644
index 00000000..9965e632
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputDto.cs
@@ -0,0 +1,21 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Functions;
+
+///
+/// РТК план выход статического замера
+///
+public class ProcessMapPlanStaticMeasurementOutputDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Время ожидания выхода сигнала с ТМС, сек.
+ ///
+ [Range(0.0, 1800.0, ErrorMessage = "Время ожидания выхода сигнала с ТМС, сек., должно быть в пределах от 0 до 1800")]
+ public double SignalWaitingTime { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanLoadCapacityDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanLoadCapacityDto.cs
new file mode 100644
index 00000000..52972803
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanLoadCapacityDto.cs
@@ -0,0 +1,35 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план выработка нагрузки
+///
+public class ProcessMapPlanLoadCapacityDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Время выработки минимальное, сек
+ ///
+ [Range(0.0, 800.0, ErrorMessage = "Время выработки минимальное, сек., должно быть в пределах от 0 до 800")]
+ public double TimeLoadCapacityMin { get; set; }
+
+ ///
+ /// Перепад давления минимальный, атм
+ ///
+ [Range(0.1, 400.0, ErrorMessage = "Перепад давления минимальный, атм., должно быть в пределах от 0.1 до 400")]
+ public double DifferentialPressureMin { get; set; }
+
+ ///
+ /// Нагрузка минимальная, т
+ ///
+ [Range(0.1, 99.0, ErrorMessage = "Нагрузка минимальная, т, должно быть в пределах от 0.1 до 99")]
+ public double WeightOnBitMin { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+
+
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesDto.cs
new file mode 100644
index 00000000..3da9631e
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesDto.cs
@@ -0,0 +1,39 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план определения углов осцилляции
+///
+public class ProcessMapPlanOscillationAnglesDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Момент на ВСП, кН*м., Уставка
+ ///
+ [Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., Уставка, должно быть в пределах от 0 до 35")]
+ public double TopDriveTorque { get; set; }
+
+ ///
+ /// Момент на ВСП, кН*м., Ограничение
+ ///
+ [Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., Ограничение, должно быть в пределах от 0 до 35")]
+ public double TopDriveTorqueMax { get; set; }
+
+ ///
+ /// Обороты на ВСП, об/мин., Уставка
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., Уставка, должно быть в пределах от 0 до 270")]
+ public double Rpm { get; set; }
+
+ ///
+ /// Обороты на ВСП, об/мин., Ограничение
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., Ограничение, должно быть в пределах от 0 до 270")]
+ public double RpmMax { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomDto.cs
new file mode 100644
index 00000000..e1e58d66
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomDto.cs
@@ -0,0 +1,88 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план позиционирования над забоем
+///
+public class ProcessMapPlanPositioningOffTheBottomDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Остановка над забоем, м.
+ ///
+ [Range(0.0, 30.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 30")]
+ public double StopOffTheBottom { get; set; }
+
+ ///
+ /// Максимально допустимое давление, атм.
+ ///
+ [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")]
+ public double PressureMax { get; set; }
+
+ ///
+ /// Перепад давления уставка, атм.
+ ///
+ [Range(0.0, 60.0, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")]
+ public double DifferentialPressure { get; set; }
+
+ ///
+ /// Затяжка, т.
+ ///
+ [Range(0.0, 20.0, ErrorMessage = "Затяжка, т., должно быть в пределах от 0 до 20")]
+ public double Tight { get; set; }
+
+ ///
+ /// Посадка, т.
+ ///
+ [Range(0.0, 20.0, ErrorMessage = "Посадка, т., должно быть в пределах от 0 до 20")]
+ public double SlackingOff { get; set; }
+
+ ///
+ /// Максимально допустимый момент, кН*м.
+ ///
+ [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., должно быть в пределах от 0 до 35")]
+ public double TorqueMax { get; set; }
+
+ ///
+ /// Скорость вверх, м/ч.
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Скорость вверх, м/ч., должно быть в пределах от 0 до 999")]
+ public double RopUp { get; set; }
+
+ ///
+ /// Скорость вниз, м/ч.
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Скорость вниз, м/ч., должно быть в пределах от 0 до 999")]
+ public double RopDown { get; set; }
+
+ ///
+ /// Обороты вверх, об/мин.
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Обороты вверх, об/мин., должно быть в пределах от 0 до 270")]
+ public double RpmUp { get; set; }
+
+ ///
+ /// Обороты вниз, об/мин.
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Обороты вниз, об/мин., должно быть в пределах от 0 до 270")]
+ public double RpmDown { get; set; }
+
+ ///
+ /// Расход вверх, л/с.
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Расход вверх, л/с., должно быть в пределах от 0 до 100")]
+ public double FlowRateUp { get; set; }
+
+ ///
+ /// Расход вниз, л/с.
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Расход вниз, л/с., должно быть в пределах от 0 до 100")]
+ public double FlowRateDown { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingRotorDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingRotorDto.cs
new file mode 100644
index 00000000..84bbfc36
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingRotorDto.cs
@@ -0,0 +1,207 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план проработка для ротора
+///
+public class ProcessMapPlanReamingRotorDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Максимально допустимое давление, атм.
+ ///
+ [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")]
+ public double PressureMax { get; set; }
+
+ ///
+ /// Перепад давления уставка, атм.
+ ///
+ [Range(0.0, 60.0, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")]
+ public double DifferentialPressure { get; set; }
+
+ ///
+ /// Затяжка, т.
+ ///
+ [Range(0.0, 20.0, ErrorMessage = "Затяжка, т., должно быть в пределах от 0 до 20")]
+ public double Tight { get; set; }
+
+ ///
+ /// Посадка, т.
+ ///
+ [Range(0.0, 20.0, ErrorMessage = "Посадка, т., должно быть в пределах от 0 до 20")]
+ public double SlackingOff { get; set; }
+
+ ///
+ /// Максимально допустимый момент, кН*м.
+ ///
+ [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., посадка, должно быть в пределах от 0 до 35")]
+ public double TorqueMax { get; set; }
+
+ ///
+ /// Проработка 1. Количество повторений, шт.
+ ///
+ [Range(0, 99, ErrorMessage = "Проработка 1. Количество повторений, шт., должно быть в пределах от 0 до 99")]
+ public int Reaming1RepetitionsCount { get; set; }
+
+ ///
+ /// Проработка 1, Скорость, м/ч., Вверх
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Проработка 1, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")]
+ public double Reaming1RopUp { get; set; }
+
+ ///
+ /// Проработка 1, Скорость, м/ч., Вниз
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Проработка 1, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")]
+ public double Reaming1RopDown { get; set; }
+
+ ///
+ /// Проработка 1, Обороты, об/мин., Вверх
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Проработка 1, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")]
+ public double Reaming1RpmUp { get; set; }
+
+ ///
+ /// Проработка 1, Обороты, об/мин., Вниз
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Проработка 1, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")]
+ public double Reaming1RpmDown { get; set; }
+
+ ///
+ /// Проработка 1, Расход, л/с., Вверх
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Проработка 1, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")]
+ public double Reaming1FlowRateUp { get; set; }
+
+ ///
+ /// Проработка 1, Расход, л/с., Вниз
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Проработка 1, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")]
+ public double Reaming1FlowRateDown { get; set; }
+
+ ///
+ /// Проработка 1, Интервал проработки, м.
+ ///
+ [Range(0.0, 30.0, ErrorMessage = "Проработка 1, Интервал проработки, м., должно быть в пределах от 0 до 30")]
+ public double Reaming1Interval { get; set; }
+
+ ///
+ /// Остановка над забоем, м.
+ ///
+ [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")]
+ public double Reaming1StopPointOffBottom { get; set; }
+
+ ///
+ /// Проработка 2, Количество повторений, шт.
+ ///
+ [Range(0, 99, ErrorMessage = "Проработка 2, Количество повторений, шт., должно быть в пределах от 0 до 99")]
+ public int Reaming2RepetitionsCount { get; set; }
+
+ ///
+ /// Проработка 2, Скорость, м/ч., Вверх
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Проработка 2, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")]
+ public double Reaming2RopUp { get; set; }
+
+ ///
+ /// Проработка 2, Скорость, м/ч., Вниз
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Проработка 2, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")]
+ public double Reaming2RopDown { get; set; }
+
+ ///
+ /// Проработка 2, Обороты, об/мин., Вверх
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Проработка 2, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")]
+ public double Reaming2RpmUp { get; set; }
+
+ ///
+ /// Проработка 2, Обороты, об/мин., Вниз
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Проработка 2, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")]
+ public double Reaming2RpmDown { get; set; }
+
+ ///
+ /// Проработка 2, Расход, л/с., Вверх
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Проработка 2, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")]
+ public double Reaming2FlowRateUp { get; set; }
+
+ ///
+ /// Проработка 2, Расход, л/с., Вниз
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Проработка 2, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")]
+ public double Reaming2FlowRateDown { get; set; }
+
+ ///
+ /// Проработка 2, Интервал проработки, м.
+ ///
+ [Range(0.0, 30.0, ErrorMessage = "Проработка 2, Интервал проработки, м., должно быть в пределах от 0 до 30")]
+ public double Reaming2Interval { get; set; }
+
+ ///
+ /// Остановка над забоем, м.
+ ///
+ [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")]
+ public double Reaming2StopPointOffBottom { get; set; }
+
+ ///
+ /// Проработка 3, Количество повторений, шт.
+ ///
+ [Range(0, 99, ErrorMessage = "Проработка 3, Количество повторений, шт., должно быть в пределах от 0 до 99")]
+ public double Reaming3RepetitionsCount { get; set; }
+
+ ///
+ /// Проработка 3, Скорость, м/ч., Вверх
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Проработка 3, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")]
+ public double Reaming3RopUp { get; set; }
+
+ ///
+ /// Проработка 3, Скорость, м/ч., Вниз
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Проработка 3, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")]
+ public double Reaming3RopDown { get; set; }
+
+ ///
+ /// Проработка 3, Обороты, об/мин., Вверх
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Проработка 3, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")]
+ public double Reaming3RpmUp { get; set; }
+
+ ///
+ /// Проработка 3, Обороты, об/мин., Вниз
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Проработка 3, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")]
+ public double Reaming3RpmDown { get; set; }
+
+ ///
+ /// Проработка 3, Расход, л/с., Вверх
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Проработка 3, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")]
+ public double Reaming3FlowRateUp { get; set; }
+
+ ///
+ /// Проработка 3, Расход, л/с., Вниз
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Проработка 3, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")]
+ public double Reaming3FlowRateDown { get; set; }
+
+ ///
+ /// Проработка 3, Интервал проработки, м.
+ ///
+ [Range(0.0, 30.0, ErrorMessage = "Проработка 3, Интервал проработки, м., должно быть в пределах от 0 до 30")]
+ public double Reaming3Interval { get; set; }
+
+ ///
+ /// Остановка над забоем, м.
+ ///
+ [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")]
+ public double Reaming3StopPointOffBottom { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingSlideDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingSlideDto.cs
new file mode 100644
index 00000000..f2ef28fd
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingSlideDto.cs
@@ -0,0 +1,209 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план проработка для слайда
+///
+public class ProcessMapPlanReamingSlideDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Максимально допустимое давление, атм
+ ///
+ [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")]
+ public double PressureMax { get; set; }
+
+ ///
+ /// Перепад давления уставка, атм
+ ///
+ [Range(0.0, 60.0, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")]
+ public double DifferentialPressure { get; set; }
+
+ ///
+ /// Затяжка
+ ///
+ [Range(0.0, 20.0, ErrorMessage = "Затяжка, должно быть в пределах от 0 до 20")]
+ public double Tight { get; set; }
+
+ ///
+ /// Посадка
+ ///
+ [Range(0.0, 20.0, ErrorMessage = "Посадка, должно быть в пределах от 0 до 20")]
+ public double SlackingOff { get; set; }
+
+ ///
+ /// Максимально допустимый момент, кН*м.
+ ///
+ [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., должно быть в пределах от 0 до 35")]
+ public double TorqueMax { get; set; }
+
+ ///
+ /// Проработка 1, Количество повторений, шт.
+ ///
+ [Range(0.0, 99.0, ErrorMessage = "Проработка 1, Количество повторений, шт., должно быть в пределах от 0 до 99")]
+ public double Reaming1RepetitionsCount { get; set; }
+
+ ///
+ /// Проработка 1, Скорость, м/ч., Вверх
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Проработка 1, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")]
+ public double Reaming1RopUp { get; set; }
+
+ ///
+ /// Проработка 1, Скорость, м/ч., Вниз
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Проработка 1, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")]
+ public double Reaming1RopDown { get; set; }
+
+ ///
+ /// Проработка 1, Обороты, об/мин., Вверх
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Проработка 1, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")]
+ public double Reaming1RpmUp { get; set; }
+
+ ///
+ /// Проработка 1, Обороты, об/мин., Вниз
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Проработка 1, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")]
+ public double Reaming1RpmDown { get; set; }
+
+ ///
+ /// Проработка 1, Расход, л/с., Вверх
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Проработка 1, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")]
+ public double Reaming1FlowRateUp { get; set; }
+
+ ///
+ /// Проработка 1, Расход, л/с., Вниз
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Проработка 1, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")]
+ public double Reaming1FlowRateDown { get; set; }
+
+ ///
+ /// Проработка 1, Интервал проработки, м.
+ ///
+ [Range(0.0, 30.0, ErrorMessage = "Проработка 1, Интервал проработки, м., должно быть в пределах от 0 до 30")]
+ public double Reaming1Interval { get; set; }
+
+ ///
+ /// Остановка над забоем, м.
+ ///
+ [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")]
+ public double Reaming1StopPointOffBottom { get; set; }
+
+ ///
+ /// Проработка 2, Количество повторений, шт.
+ ///
+ [Range(0.0, 99.0, ErrorMessage = "Проработка 2, Количество повторений, шт., должно быть в пределах от 0 до 99")]
+ public double Reaming2RepetitionsCount { get; set; }
+
+ ///
+ /// Проработка 2, Скорость, м/ч., Вверх
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Проработка 2, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")]
+ public double Reaming2RopUp { get; set; }
+
+ ///
+ /// Проработка 2, Скорость, м/ч., Вниз
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Проработка 2, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")]
+ public double Reaming2RopDown { get; set; }
+
+ ///
+ /// Проработка 2, Обороты, об/мин., Вверх
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Проработка 2, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")]
+ public double Reaming2RpmUp { get; set; }
+
+ ///
+ /// Проработка 2, Обороты, об/мин., Вниз
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Проработка 2, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")]
+ public double Reaming2RpmDown { get; set; }
+
+ ///
+ /// Проработка 2, Расход, л/с., Вверх
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Проработка 2, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")]
+ public double Reaming2FlowRateUp { get; set; }
+
+ ///
+ /// Проработка 2, Расход, л/с., Вниз
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Проработка 2, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")]
+ public double Reaming2FlowRateDown { get; set; }
+
+ ///
+ /// Проработка 2, Интервал проработки, м.
+ ///
+ [Range(0.0, 30.0, ErrorMessage = "Проработка 2, Интервал проработки, м., должно быть в пределах от 0 до 30")]
+ public double Reaming2Interval { get; set; }
+
+ ///
+ /// Остановка над забоем, м.
+ ///
+ [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")]
+ public double Reaming2StopPointOffBottom { get; set; }
+
+ ///
+ /// Проработка 3, Количество повторений, шт.
+ ///
+ [Range(0.0, 99.0, ErrorMessage = "Проработка 3, Количество повторений, шт., должно быть в пределах от 0 до 99")]
+ public double Reaming3RepetitionsCount { get; set; }
+
+ ///
+ /// Проработка 3, Скорость, м/ч., Вверх
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Проработка 3, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")]
+ public double Reaming3RopUp { get; set; }
+
+ ///
+ /// Проработка 3, Скорость, м/ч., Вниз
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Проработка 3, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")]
+ public double Reaming3RopDown { get; set; }
+
+ ///
+ /// Проработка 3, Обороты, об/мин., Вверх
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Проработка 3, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")]
+ public double Reaming3RpmUp { get; set; }
+
+ ///
+ /// Проработка 3, Обороты, об/мин., Вниз
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Проработка 3, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")]
+ public double Reaming3RpmDown { get; set; }
+
+ ///
+ /// Проработка 3, Расход, л/с., Вверх
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Проработка 3, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")]
+ public double Reaming3FlowRateUp { get; set; }
+
+ ///
+ /// Проработка 3, Расход, л/с., Вниз
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Проработка 3, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")]
+ public double Reaming3FlowRateDown { get; set; }
+
+ ///
+ /// Проработка 3, Интервал проработки, м.
+ ///
+ [Range(0.0, 30.0, ErrorMessage = "Проработка 3, Интервал проработки, м., должно быть в пределах от 0 до 30")]
+ public double Reaming3Interval { get; set; }
+
+ ///
+ /// Остановка над забоем, м.
+ ///
+ [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")]
+ public double Reaming3StopPointOffBottom { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+
+
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementDto.cs
new file mode 100644
index 00000000..28ba53bd
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementDto.cs
@@ -0,0 +1,21 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план записи статического замера
+///
+public class ProcessMapPlanRecordingStaticMeasurementDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Время записи замера, сек
+ ///
+ [Range(0.0, 1800.0, ErrorMessage = "Время записи замера, сек., должно быть в пределах от 0 до 1800")]
+ public double MeasurementRecordingTime { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, не должно превышать 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanRotorDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorDto.cs
similarity index 88%
rename from AsbCloudApp/Data/ProcessMaps/ProcessMapPlanRotorDto.cs
rename to AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorDto.cs
index eb3640dd..938732c2 100644
--- a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanRotorDto.cs
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorDto.cs
@@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
-namespace AsbCloudApp.Data.ProcessMaps;
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
///
/// РТК план бурение скважины в роторе
@@ -11,13 +11,13 @@ public class ProcessMapPlanRotorDto : ProcessMapPlanBaseDto
/// Максимально допустимая скорость, м/ч
///
[Range(0, 800.0, ErrorMessage = "Максимально допустимая скорость, м/ч., должно быть в пределах от 0 до 800.0")]
- public double RopLimitMax { get; set; }
+ public double RopMax { get; set; }
///
/// Максимально допустимое давление, атм
///
[Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400.0")]
- public double PressureLimitMax { get; set; }
+ public double PressureMax { get; set; }
///
/// Перепад давления, атм. Уставка
@@ -29,7 +29,7 @@ public class ProcessMapPlanRotorDto : ProcessMapPlanBaseDto
/// Перепад давления, атм. Ограничение
///
[Range(0.0, 60.0, ErrorMessage = "Перепад давления, атм., ограничение, должно быть в пределах от 0 до 60.0")]
- public double DifferentialPressureLimitMax { get; set; }
+ public double DifferentialPressureMax { get; set; }
///
/// Нагрузка, т. Уставка
@@ -41,7 +41,7 @@ public class ProcessMapPlanRotorDto : ProcessMapPlanBaseDto
/// Нагрузка, т. Ограничение
///
[Range(0.0, 99.0, ErrorMessage = "Нагрузка, т., ограничение, должно быть в пределах от 0 до 99.0")]
- public double WeightOnBitLimitMax { get; set; }
+ public double WeightOnBitMax { get; set; }
///
/// Момент на ВСП, кН*м. Уставка
@@ -53,19 +53,19 @@ public class ProcessMapPlanRotorDto : ProcessMapPlanBaseDto
/// Момент на ВСП, кН*м. Ограничение
///
[Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., ограничение, должно быть в пределах от 0 до 35.0")]
- public double TopDriveTorqueLimit { get; set; }
+ public double TopDriveTorqueMax { get; set; }
///
/// Обороты на ВСП, об/мин. Уставка
///
[Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., уставка, должно быть в пределах от 0 до 270.0")]
- public double RevolutionsPerMinute { get; set; }
+ public double Rpm { get; set; }
///
/// Обороты на ВСП, об/мин. Ограничение
///
[Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., ограничение, должно быть в пределах от 0 до 270.0")]
- public double RevolutionsPerMinuteLimitMax { get; set; }
+ public double RpmMax { get; set; }
///
/// Расход л/с. Уставка
@@ -77,7 +77,7 @@ public class ProcessMapPlanRotorDto : ProcessMapPlanBaseDto
/// Расход л/с. Ограничение
///
[Range(0.0, 100.0, ErrorMessage = "Расход л/с., ограничение, должно быть в пределах от 0 до 100.0")]
- public double FlowRateLimitMax { get; set; }
+ public double FlowRateMax { get; set; }
///
/// Примечание
diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSlideDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSlideDto.cs
new file mode 100644
index 00000000..2ad24fdf
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSlideDto.cs
@@ -0,0 +1,75 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план бурение скважины в слайде
+///
+public class ProcessMapPlanSlideDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Максимально допустимая скорость, м/ч
+ ///
+ [Range(0, 800, ErrorMessage = "Максимально допустимая скорость, м/ч., должно быть в пределах от 0 до 800")]
+ public double RopMax { get; set; }
+
+ ///
+ /// Максимально допустимое давление, атм
+ ///
+ [Range(0, 400, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")]
+ public double PressureMax { get; set; }
+
+ ///
+ /// Перепад давления уставка, атм
+ ///
+ [Range(0, 60, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")]
+ public double DifferentialPressure { get; set; }
+
+ ///
+ /// Перепад давления ограничение, атм
+ ///
+ [Range(0, 60, ErrorMessage = "Перепад давления ограничение, атм., должно быть в пределах от 0 до 60")]
+ public double DifferentialPressureMax { get; set; }
+
+ ///
+ /// Нагрузка уставка, т
+ ///
+ [Range(0, 99, ErrorMessage = "Нагрузка уставка, т., должно быть в пределах от 0 до 99")]
+ public double WeightOnBit { get; set; }
+
+ ///
+ /// Нагрузка ограничение, т
+ ///
+ [Range(0, 99, ErrorMessage = "Нагрузка ограничение, т., должно быть в пределах от 0 до 99")]
+ public double WeightOnBitMax { get; set; }
+
+ ///
+ /// Расход уставка л/с
+ ///
+ [Range(0, 100, ErrorMessage = "Расход уставка л/с., должно быть в пределах от 0 до 100")]
+ public double FlowRate { get; set; }
+
+ ///
+ /// Расход ограничение л/с
+ ///
+ [Range(0, 100, ErrorMessage = "Расход ограничение л/с., должно быть в пределах от 0 до 100")]
+ public double FlowRateMax { get; set; }
+
+ ///
+ /// Расчётная пружина, градус
+ ///
+ [Range(0, 9999, ErrorMessage = "Расчётная пружина, градус, должно быть в пределах от 0 до 9999")]
+ public double Spring { get; set; }
+
+ ///
+ /// Складывание инструмента, м
+ ///
+ [Range(0, 9999, ErrorMessage = "Складывание инструмента, м., должно быть в пределах от 0 до 9999")]
+ public double Buckling { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, не должно превышать 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpDto.cs
new file mode 100644
index 00000000..befdce47
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpDto.cs
@@ -0,0 +1,27 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план выключение насоса
+///
+public class ProcessMapPlanSwitchingOffThePumpDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Продолжительность, сек.
+ ///
+ [Range(0.0, 1800.0, ErrorMessage = "Продолжительность, сек., должно быть в пределах от 0 до 1800")]
+ public double Duration { get; set; }
+
+ ///
+ /// Лимит остаточного давления, атм.
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Лимит остаточного давления, атм., должно быть в пределах от 0 до 100")]
+ public double ResidualPressureLimit { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeDto.cs
new file mode 100644
index 00000000..1142cb59
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeDto.cs
@@ -0,0 +1,34 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план выход на плановый расход
+///
+public class ProcessMapPlanSwitchingToTheModeDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Время выхода буровых насосов на плановый расход, сек.
+ ///
+ [Range(0.0, 3600.0, ErrorMessage = "Время выхода буровых насосов на плановый расход, сек., должно быть в пределах от 0 до 3600")]
+ public double RampTime { get; set; }
+
+ ///
+ /// Расход, л/с
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Расход, л/с., должно быть в пределах от 0 до 100")]
+ public double FlowRate { get; set; }
+
+ ///
+ /// Максимально допустимое давление, атм.
+ ///
+ [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")]
+ public double PressureMax { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanTFOrientationDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanTFOrientationDto.cs
new file mode 100644
index 00000000..cc3652a3
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanTFOrientationDto.cs
@@ -0,0 +1,99 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план выставление
+///
+public class ProcessMapPlanTFOrientationDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Задание TF, град.
+ ///
+ [Range(0.0, 360.0, ErrorMessage = "Задание TF, град., должно быть в пределах от 0 до 360")]
+ public double TFSetpoint { get; set; }
+
+ ///
+ /// Пружина, град.
+ ///
+ [Range(0.0, 10000.0, ErrorMessage = "Пружина, град., должно быть в пределах от 0 до 10000")]
+ public double Spring { get; set; }
+
+ ///
+ /// Максимальное давление, атм.
+ ///
+ [Range(0.0, 400.0, ErrorMessage = "Максимальное давление, атм., должно быть в пределах от 0 до 400")]
+ public double PressureMax { get; set; }
+
+ ///
+ /// Перепад давления, атм.
+ ///
+ [Range(0.0, 60.0, ErrorMessage = "Перепад давления, атм., должно быть в пределах от 0 до 60")]
+ public double DifferentialPressure { get; set; }
+
+ ///
+ /// Затяжка, т.
+ ///
+ [Range(0.0, 20.0, ErrorMessage = "Затяжка, т., должно быть в пределах от 0 до 20")]
+ public double Tight { get; set; }
+
+ ///
+ /// Посадка, т.
+ ///
+ [Range(0.0, 20.0, ErrorMessage = "Посадка, т., должно быть в пределах от 0 до 20")]
+ public double SlackingOff { get; set; }
+
+ ///
+ /// Максимально допустимый момент, кН*м.
+ ///
+ [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., должно быть в пределах от 0 до 35")]
+ public double TorqueMax { get; set; }
+
+ ///
+ /// Количество расхаживаний, шт.
+ ///
+ [Range(0.0, 99.0, ErrorMessage = "Количество расхаживаний, шт., должно быть в пределах от 0 до 99")]
+ public int RepetitionsCount { get; set; }
+
+ ///
+ /// Скорость вверх, м/ч.
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Скорость вверх, м/ч., должно быть в пределах от 0 до 999")]
+ public double RopUp { get; set; }
+
+ ///
+ /// Скорость вниз, м/ч.
+ ///
+ [Range(0.0, 999.0, ErrorMessage = "Скорость вниз, м/ч., должно быть в пределах от 0 до 999")]
+ public double RopDown { get; set; }
+
+ ///
+ /// Расход вверх, л/с.
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Расход вверх, л/с., должно быть в пределах от 0 до 100")]
+ public double FlowRateUp { get; set; }
+
+ ///
+ /// Расход вниз, л/с.
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Расход вниз, л/с., должно быть в пределах от 0 до 100")]
+ public double FlowRateDown { get; set; }
+
+ ///
+ /// Интервал расхаживания, м.
+ ///
+ [Range(0.0, 30.0, ErrorMessage = "Интервал расхаживания, м., должно быть в пределах от 0 до 30")]
+ public double Interval { get; set; }
+
+ ///
+ /// Остановка над забоем, м.
+ ///
+ [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")]
+ public double StopPointOffBottom { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanReamDto.cs b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanReamDto.cs
deleted file mode 100644
index 853a7fcd..00000000
--- a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanReamDto.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-
-namespace AsbCloudApp.Data.ProcessMaps;
-
-///
-/// РТК план проработка скважины
-///
-public class ProcessMapPlanReamDto : ProcessMapPlanBaseDto, IValidatableObject
-{
- ///
- /// Количество повторений
- ///
- [Required]
- [Range(0, 100, ErrorMessage = "Количество повторений должно быть в пределах от 0 до 100")]
- public double Repeats { get; set; }
-
- ///
- /// Вращение при движении вверх, об/мин
- ///
- [Required]
- [Range(0, 99999.9, ErrorMessage = "Количество вращений вверх должно быть в пределах от 0 до 99999.9")]
- public double SpinUpward { get; set; }
-
- ///
- /// Вращение при движении вниз, об/мин
- ///
- [Required]
- [Range(0, 99999.9, ErrorMessage = "Количество вращений вниз должно быть в пределах от 0 до 99999.9")]
- public double SpinDownward { get; set; }
-
- ///
- /// Скорость подъёма, м/ч
- ///
- [Required]
- [Range(0, 99999.9, ErrorMessage = "Скорость подъёма должна быть в пределах от 0 до 99999.9")]
- public double SpeedUpward { get; set; }
-
- ///
- /// Скорость спуска, м/ч
- ///
- [Required]
- [Range(0, 99999.9, ErrorMessage = "Скорость спуска должна быть в пределах от 0 до 99999.9")]
- public double SpeedDownward { get; set; }
-
- ///
- /// Уставка зятяжки, т
- ///
- [Required]
- [Range(0, 99999.9, ErrorMessage = "Значение затяжек уставки должно быть в пределах от 0 до 99999.9")]
- public double SetpointDrag { get; set; }
-
- ///
- /// Уставка посадки, т
- ///
- [Required]
- [Range(0, 99999.9, ErrorMessage = "Значение посадки уставки должно быть в пределах от 0 до 99999.9")]
- public double SetpointTight { get; set; }
-
- ///
- /// Давление, атм
- ///
- [Required]
- [Range(0, 99999.9, ErrorMessage = "Давление должно быть в пределах от 0 до 99999.9")]
- public double Pressure { get; set; }
-
- ///
- /// Момент, кН*м
- ///
- [Required]
- [Range(0, 99999.9, ErrorMessage = "Крутящий момент должен быть в пределах от 0 до 99999.9")]
- public double Torque { get; set; }
-
- ///
- public override IEnumerable Validate(ValidationContext validationContext)
- {
- if (DepthEnd < DepthStart)
- yield return new ValidationResult(
- $"{nameof(DepthEnd)}:{DepthEnd:#0.0} меньше {nameof(DepthStart)}:{DepthStart:#0.0}",
- new[] { nameof(DepthEnd), nameof(DepthStart) });
- }
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanSlideDto.cs b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanSlideDto.cs
deleted file mode 100644
index 617b5f46..00000000
--- a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanSlideDto.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace AsbCloudApp.Data.ProcessMaps;
-
-///
-/// РТК план бурение скважины в слайде
-///
-public class ProcessMapPlanSlideDto : ProcessMapPlanBaseDto
-{
- ///
- /// Максимально допустимая скорость, м/ч
- ///
- [Range(0, 800.0, ErrorMessage = "Максимально допустимая скорость, м/ч., должно быть в пределах от 0 до 800.0")]
- public double RopLimitMax { get; set; }
-
- ///
- /// Максимально допустимое давление, атм
- ///
- [Range(0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400.0")]
- public double PressureLimitMax { get; set; }
-
- ///
- /// Перепад давления, атм. Уставка
- ///
- [Range(0, 60.0, ErrorMessage = "Перепад давления, атм. уставка, должно быть в пределах от 0 до 60.0")]
- public double DifferentialPressure { get; set; }
-
- ///
- /// Перепад давления, атм. Ограничение
- ///
- [Range(0, 60.0, ErrorMessage = "Перепад давления, атм., ограничение, должно быть в пределах от 0 до 60.0")]
- public double DifferentialPressureLimitMax { get; set; }
-
- ///
- /// Нагрузка, т. Уставка
- ///
- [Range(0, 50.0, ErrorMessage = " Нагрузка, т., уставка, должно быть в пределах от 0 до 50.0")]
- public double WeightOnBit { get; set; }
-
- ///
- /// Нагрузка, т. Ограничение
- ///
- [Range(0, 50.0, ErrorMessage = "Нагрузка, т., ограничение, должно быть в пределах от 0 до 50.0")]
- public double WeightOnBitLimitMax { get; set; }
-
- ///
- /// Расход л/с. Уставка
- ///
- [Range(0, 100.0, ErrorMessage = "Расход, л/с., уставка, должно быть в пределах от 0 до 50.0")]
- public double FlowRate { get; set; }
-
- ///
- /// Расход л/с. Ограничение
- ///
- [Range(0, 100.0, ErrorMessage = "Расход, л/с., ограничение, должно быть в пределах от 0 до 100.0")]
- public double FlowRateLimitMax { get; set; }
-
- ///
- /// Расчётная пружина, градус
- ///
- [Range(0, 9999.9, ErrorMessage = "Расчётная пружина, градус, должно быть в пределах от 0 до 9999.9")]
- public double Spring { get; set; }
-
- ///
- /// Складывание инструмента, м
- ///
- [Range(0, 9999.9, ErrorMessage = "Складывание инструмента, м, должно быть в пределах от 0 до 9999.9")]
- public double ToolBuckling { get; set; }
-
- ///
- /// Примечание
- ///
- [StringLength(1024, ErrorMessage = "Примечание, не должно превышать 1024 символов")]
- public string Note { get; set; } = string.Empty;
-}
\ No newline at end of file
diff --git a/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.Designer.cs b/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.Designer.cs
new file mode 100644
index 00000000..5c02c0f2
--- /dev/null
+++ b/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.Designer.cs
@@ -0,0 +1,12939 @@
+//
+using System;
+using System.Text.Json;
+using AsbCloudDb.Model;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace AsbCloudDb.Migrations
+{
+ [DbContext(typeof(AsbCloudDbContext))]
+ [Migration("20240630162502_Add_Tables_ProcessMapOperationsAndFunctions")]
+ partial class Add_Tables_ProcessMapOperationsAndFunctions
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .UseCollation("Russian_Russia.1251")
+ .HasAnnotation("ProductVersion", "8.0.2")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack");
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("AsbCloudDb.Model.Cluster", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Caption")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("caption")
+ .HasComment("Название");
+
+ b.Property("IdDeposit")
+ .HasColumnType("integer")
+ .HasColumnName("id_deposit");
+
+ b.Property("Latitude")
+ .HasColumnType("double precision")
+ .HasColumnName("latitude");
+
+ b.Property("Longitude")
+ .HasColumnType("double precision")
+ .HasColumnName("longitude");
+
+ b.Property("Timezone")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("timezone")
+ .HasComment("Смещение часового пояса от UTC");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdDeposit");
+
+ b.ToTable("t_cluster", t =>
+ {
+ t.HasComment("Кусты");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Company", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Caption")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("caption");
+
+ b.Property("IdCompanyType")
+ .HasMaxLength(255)
+ .HasColumnType("integer")
+ .HasColumnName("id_company_type")
+ .HasComment("вид деятельности");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCompanyType");
+
+ b.ToTable("t_company");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Caption = "ООО \"АСБ\"",
+ IdCompanyType = 3
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Caption")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("caption");
+
+ b.Property("IsContact")
+ .HasColumnType("boolean")
+ .HasColumnName("is_contact");
+
+ b.Property("Order")
+ .HasColumnType("integer")
+ .HasColumnName("order");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_company_type");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Caption = "Недропользователь",
+ IsContact = true,
+ Order = 3
+ },
+ new
+ {
+ Id = 2,
+ Caption = "Буровой подрядчик",
+ IsContact = true,
+ Order = 2
+ },
+ new
+ {
+ Id = 3,
+ Caption = "Сервис автоматизации бурения",
+ IsContact = true,
+ Order = 0
+ },
+ new
+ {
+ Id = 4,
+ Caption = "Сервис по ГТИ",
+ IsContact = true,
+ Order = 6
+ },
+ new
+ {
+ Id = 5,
+ Caption = "Растворный сервис",
+ IsContact = true,
+ Order = 4
+ },
+ new
+ {
+ Id = 6,
+ Caption = "Сервис по ННБ",
+ IsContact = true,
+ Order = 5
+ },
+ new
+ {
+ Id = 7,
+ Caption = "Служба супервайзинга",
+ IsContact = false,
+ Order = 1
+ },
+ new
+ {
+ Id = 9,
+ Caption = "Сервис по цементированию",
+ IsContact = true,
+ Order = 7
+ },
+ new
+ {
+ Id = 11,
+ Caption = "Дизельный сервис",
+ IsContact = false,
+ Order = 9
+ },
+ new
+ {
+ Id = 12,
+ Caption = "Сервис по обслуживанию верхних силовых приводов",
+ IsContact = true,
+ Order = 8
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Contact", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Company")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("company")
+ .HasComment("компания");
+
+ b.Property("Email")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("email")
+ .HasComment("email");
+
+ b.Property("FullName")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("full_name")
+ .HasComment("ФИО");
+
+ b.Property("IdCompanyType")
+ .HasMaxLength(255)
+ .HasColumnType("integer")
+ .HasColumnName("id_company_type")
+ .HasComment("вид деятельности");
+
+ b.Property("IdWell")
+ .HasMaxLength(255)
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("ключ скважины");
+
+ b.Property("Phone")
+ .HasMaxLength(50)
+ .HasColumnType("character varying(50)")
+ .HasColumnName("phone")
+ .HasComment("номер телефона");
+
+ b.Property("Position")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("position")
+ .HasComment("должность");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCompanyType");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_contact", t =>
+ {
+ t.HasComment("Контакты");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Date")
+ .HasColumnType("date")
+ .HasColumnName("date")
+ .HasComment("Дата формирования отчёта");
+
+ b.Property("DateLastUpdate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_update")
+ .HasComment("Дата последнего обновления");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("ID скважины");
+
+ b.Property("SignBlock")
+ .HasColumnType("jsonb")
+ .HasColumnName("sign_block")
+ .HasComment("Подпись");
+
+ b.Property("SubsystemBlock")
+ .HasColumnType("jsonb")
+ .HasColumnName("subsystem_block")
+ .HasComment("Наработкой подсистем");
+
+ b.Property("TimeBalanceBlock")
+ .HasColumnType("jsonb")
+ .HasColumnName("time_balance_block")
+ .HasComment("Баланс времени");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdWell", "Date")
+ .IsUnique();
+
+ b.ToTable("t_daily_report", t =>
+ {
+ t.HasComment("Ежедневные отчёты");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("AxialLoad")
+ .HasColumnType("double precision")
+ .HasColumnName("axial_load")
+ .HasComment("Фактическая нагрузка");
+
+ b.Property("AxialLoadLimitMax")
+ .HasColumnType("double precision")
+ .HasColumnName("axial_load_limit_max")
+ .HasComment("Максимально допустимая нагрузка");
+
+ b.Property("AxialLoadSp")
+ .HasColumnType("double precision")
+ .HasColumnName("axial_load_sp")
+ .HasComment("Ограничение факт. нагрузки");
+
+ b.Property("BlockSpeedSp")
+ .HasColumnType("double precision")
+ .HasColumnName("block_speed_sp")
+ .HasComment("Ограничение скорости блока");
+
+ b.Property("DateEnd")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_end")
+ .HasComment("Дата и время окончания");
+
+ b.Property("DateStart")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_start")
+ .HasComment("Дата и время начала");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Глубина забоя по стволу конечная");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Глубина забоя по стволу начальная");
+
+ b.Property("EnabledSubsystems")
+ .HasColumnType("integer")
+ .HasColumnName("enabled_subsystems")
+ .HasComment("Флаги подсистем");
+
+ b.Property("Flow")
+ .HasColumnType("double precision")
+ .HasColumnName("flow")
+ .HasComment("Фактический расход");
+
+ b.Property("HasOscillation")
+ .HasColumnType("boolean")
+ .HasColumnName("has_oscillation")
+ .HasComment("Наличие или отсутствие осцилляции");
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("Название автоопределённой операции");
+
+ b.Property("IdFeedRegulator")
+ .HasColumnType("smallint")
+ .HasColumnName("id_feed_regulator")
+ .HasComment("Работа при достижении ограничения");
+
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry")
+ .HasComment("Ключ телеметрии");
+
+ b.Property("Pressure")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure")
+ .HasComment("Давление");
+
+ b.Property("PressureIdle")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure_idle")
+ .HasComment("Давление холостого хода");
+
+ b.Property("PressureSp")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure_sp")
+ .HasComment("Ограничение фактического давления");
+
+ b.Property("RotorSpeed")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_speed")
+ .HasComment("Фактическая скорость оборотов ВСП");
+
+ b.Property("RotorTorque")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_torque")
+ .HasComment("Фактический момент");
+
+ b.Property("RotorTorqueLimitMax")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_torque_limit_max")
+ .HasComment("Максимально допустимый момент");
+
+ b.Property("RotorTorqueSp")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_torque_sp")
+ .HasComment("Ограничение факт. момента");
+
+ b.Property("Speed")
+ .HasColumnType("double precision")
+ .HasColumnName("speed")
+ .HasComment("Скорость бурения");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCategory");
+
+ b.HasIndex("IdTelemetry");
+
+ b.ToTable("t_data_saub_stat", t =>
+ {
+ t.HasComment("Кеш-таблица для хранения данных для РТК-отчета");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Deposit", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Caption")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("caption");
+
+ b.Property("Latitude")
+ .HasColumnType("double precision")
+ .HasColumnName("latitude");
+
+ b.Property("Longitude")
+ .HasColumnType("double precision")
+ .HasColumnName("longitude");
+
+ b.Property("Timezone")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("timezone")
+ .HasComment("Смещение часового пояса от UTC");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_deposit", t =>
+ {
+ t.HasComment("Месторождение");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Creation")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("creation")
+ .HasComment("дата создания");
+
+ b.Property("DateEnd")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_end")
+ .HasComment("Дата начала операции");
+
+ b.Property("DateStart")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_start")
+ .HasComment("Дата начала операции");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Глубина после завершения операции, м");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Глубина на начало операции, м");
+
+ b.Property("EnabledSubsystems")
+ .HasColumnType("integer")
+ .HasColumnName("enabled_subsystems")
+ .HasComment("флаги включенных подсистем");
+
+ b.Property("ExtraData")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("extra_data")
+ .HasComment("доп. инфо по операции");
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("Id категории операции");
+
+ b.Property("IdEditor")
+ .HasColumnType("integer")
+ .HasColumnName("id_editor")
+ .HasComment("Редактор");
+
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("IdUsersAtStart")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("Id пользователя по телеметрии на момент начала операции");
+
+ b.Property("Value")
+ .HasColumnType("double precision")
+ .HasColumnName("value")
+ .HasComment("Ключевой показатель операции");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCategory");
+
+ b.HasIndex("IdTelemetry");
+
+ b.ToTable("t_detected_operation", t =>
+ {
+ t.HasComment("автоматически определенные операции по телеметрии");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasComment("Идентификатор");
+
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry")
+ .HasComment("Идентификатор телеметрии");
+
+ b.Property("DepthStart")
+ .HasColumnType("real")
+ .HasColumnName("depthStart")
+ .HasComment("Глубина начала");
+
+ b.Property("Params")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("t_drill_test_params")
+ .HasComment("Параметры записи drill test");
+
+ b.Property("TimeStampStart")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("timestamp_start")
+ .HasComment("Время начала");
+
+ b.HasKey("Id", "IdTelemetry");
+
+ b.HasIndex("IdTelemetry");
+
+ b.ToTable("t_drill_test", t =>
+ {
+ t.HasComment("Drill_test");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Driller", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasComment("Идентификатор");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("name")
+ .HasComment("Имя");
+
+ b.Property("Patronymic")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("patronymic")
+ .HasComment("Отчество");
+
+ b.Property("Surname")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("surname")
+ .HasComment("Фамилия");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_driller", t =>
+ {
+ t.HasComment("Бурильщик");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("IdFileCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_file_category");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdFileCategory");
+
+ b.HasIndex("IdWell", "IdFileCategory")
+ .IsUnique();
+
+ b.ToTable("t_drilling_program_part", t =>
+ {
+ t.HasComment("части программ бурения");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Faq", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasComment("Идентификатор");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Answer")
+ .HasColumnType("text")
+ .HasColumnName("answer")
+ .HasComment("Текст ответа");
+
+ b.Property("CounterQuestion")
+ .HasColumnType("integer")
+ .HasColumnName("counter_question")
+ .HasComment("Счетчик повторений вопроса");
+
+ b.Property("DateAnswer")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_answer")
+ .HasComment("Дата ответа");
+
+ b.Property("DateCreatedQuestion")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created_question")
+ .HasComment("Дата создания вопроса");
+
+ b.Property("DateLastEditedQuestion")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_edited_question")
+ .HasComment("Дата последнего редактирования вопроса");
+
+ b.Property("IdAuthorAnswer")
+ .HasColumnType("integer")
+ .HasColumnName("id_author_answer")
+ .HasComment("id автора ответа");
+
+ b.Property("IdAuthorQuestion")
+ .HasColumnType("integer")
+ .HasColumnName("id_author_question")
+ .HasComment("id автора вопроса");
+
+ b.Property("IdReplacementQuestion")
+ .HasColumnType("integer")
+ .HasColumnName("id_replacement_question")
+ .HasComment("Ключ заменяющего вопроса");
+
+ b.Property("IsFrequently")
+ .HasColumnType("boolean")
+ .HasColumnName("is_frequently")
+ .HasComment("Частый вопрос");
+
+ b.Property("Question")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("question")
+ .HasComment("Текст вопроса");
+
+ b.Property("State")
+ .HasColumnType("integer")
+ .HasColumnName("state")
+ .HasComment("Статус вопроса");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdAuthorAnswer");
+
+ b.HasIndex("IdAuthorQuestion");
+
+ b.ToTable("t_faq", t =>
+ {
+ t.HasComment("вопросы пользователей");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название категории");
+
+ b.Property("ShortName")
+ .HasColumnType("text")
+ .HasColumnName("short_name")
+ .HasComment("Короткое название категории");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_file_category", t =>
+ {
+ t.HasComment("Категории файлов");
+ });
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Name = "Растворный сервис",
+ ShortName = "fluidService"
+ },
+ new
+ {
+ Id = 2,
+ Name = "Цементирование",
+ ShortName = "cement"
+ },
+ new
+ {
+ Id = 3,
+ Name = "ННБ",
+ ShortName = "nnb"
+ },
+ new
+ {
+ Id = 4,
+ Name = "ГТИ",
+ ShortName = "gti"
+ },
+ new
+ {
+ Id = 5,
+ Name = "Документы по скважине",
+ ShortName = "wellDocuments"
+ },
+ new
+ {
+ Id = 6,
+ Name = "Супервайзер",
+ ShortName = "supervisor"
+ },
+ new
+ {
+ Id = 7,
+ Name = "Мастер",
+ ShortName = "master"
+ },
+ new
+ {
+ Id = 8,
+ Name = "Долотный сервис",
+ ShortName = "toolService"
+ },
+ new
+ {
+ Id = 9,
+ Name = "Буровой подрядчик",
+ ShortName = "drillService"
+ },
+ new
+ {
+ Id = 10,
+ Name = "Сервис по заканчиванию скважины",
+ ShortName = "closingService"
+ },
+ new
+ {
+ Id = 12,
+ Name = "Рапорт",
+ ShortName = "report"
+ },
+ new
+ {
+ Id = 1000,
+ Name = "Программа бурения"
+ },
+ new
+ {
+ Id = 1001,
+ Name = "Задание от геологов"
+ },
+ new
+ {
+ Id = 1002,
+ Name = "Профиль ствола скважины (ННБ)"
+ },
+ new
+ {
+ Id = 1003,
+ Name = "Технологические расчеты (ННБ)"
+ },
+ new
+ {
+ Id = 1004,
+ Name = "Долотная программа"
+ },
+ new
+ {
+ Id = 1005,
+ Name = "Программа по растворам"
+ },
+ new
+ {
+ Id = 1006,
+ Name = "Программа геофизических исследований"
+ },
+ new
+ {
+ Id = 1007,
+ Name = "Планы спусков обсадных колонн"
+ },
+ new
+ {
+ Id = 1008,
+ Name = "Программы цементирования обсадных колонн"
+ },
+ new
+ {
+ Id = 10000,
+ Name = "Проект на бурение транспортного и горизонтального участков скважины"
+ },
+ new
+ {
+ Id = 10001,
+ Name = "Программа на бурение транспортного и горизонтального участков скважины"
+ },
+ new
+ {
+ Id = 10002,
+ Name = "Акт о начале бурения"
+ },
+ new
+ {
+ Id = 10003,
+ Name = "План работ спуска и цементирования направления"
+ },
+ new
+ {
+ Id = 10004,
+ Name = "Программа цементирования направления"
+ },
+ new
+ {
+ Id = 10005,
+ Name = "Мера обсадных труб (направление)"
+ },
+ new
+ {
+ Id = 10006,
+ Name = "Акт на выполненные работы по цементированию направления"
+ },
+ new
+ {
+ Id = 10007,
+ Name = "Отчет по цементированию направления (график)"
+ },
+ new
+ {
+ Id = 10008,
+ Name = "План работ спуска и цементирования кондуктора"
+ },
+ new
+ {
+ Id = 10009,
+ Name = "Программа цементирования (кондуктор)"
+ },
+ new
+ {
+ Id = 10010,
+ Name = "Мера обсадных труб (кондуктор)"
+ },
+ new
+ {
+ Id = 10011,
+ Name = "Карта крепления кондуктора"
+ },
+ new
+ {
+ Id = 10012,
+ Name = "Акт на выполненные работы по цементированию кондуктора"
+ },
+ new
+ {
+ Id = 10013,
+ Name = "Отчет по цементированию кондуктора (график)"
+ },
+ new
+ {
+ Id = 10014,
+ Name = "Акт о замере расстояния от стола ротора до муфты кондуктора"
+ },
+ new
+ {
+ Id = 10015,
+ Name = "Акт опресовки цементного кольца за кондуктором"
+ },
+ new
+ {
+ Id = 10016,
+ Name = "Акт опресовки ППГ с глухими плашками совместно с кондуктором"
+ },
+ new
+ {
+ Id = 10017,
+ Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с кондуктором"
+ },
+ new
+ {
+ Id = 10018,
+ Name = "План работ на крепление обсадной колонны (эк. колонна)"
+ },
+ new
+ {
+ Id = 10019,
+ Name = "Программа цементирования (эк. колонна)"
+ },
+ new
+ {
+ Id = 10020,
+ Name = "Мера труб эксплуатационной колонны"
+ },
+ new
+ {
+ Id = 10021,
+ Name = "Карта по креплению скважины (эк. колонна)"
+ },
+ new
+ {
+ Id = 10022,
+ Name = "Акт на установку пружинных центраторов"
+ },
+ new
+ {
+ Id = 10023,
+ Name = "Отчет по цементированию эксплуатационной колонны (график)"
+ },
+ new
+ {
+ Id = 10024,
+ Name = "Акт на выполненные работы по цементированию эксплуатационной колонны"
+ },
+ new
+ {
+ Id = 10025,
+ Name = "Акт об испытании эк. колонны на герметичность (СТОП)"
+ },
+ new
+ {
+ Id = 10026,
+ Name = "Акт опресовки ППГ с глухими плашками совместно с э/колонной"
+ },
+ new
+ {
+ Id = 10027,
+ Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с э/колонной"
+ },
+ new
+ {
+ Id = 10028,
+ Name = "Акт на вскрытие продуктивного пласта"
+ },
+ new
+ {
+ Id = 10029,
+ Name = "Акт замера параметров раствора при бурении горизонтального участка"
+ },
+ new
+ {
+ Id = 10030,
+ Name = "Разрешение на спуск «хвостовика» (телефонограмма)"
+ },
+ new
+ {
+ Id = 10031,
+ Name = "План работ на спуск «хвостовика»"
+ },
+ new
+ {
+ Id = 10032,
+ Name = "Акт готовности бурового и энергетического оборудования к спуску «хвостовика»"
+ },
+ new
+ {
+ Id = 10033,
+ Name = "Акт шаблонировки ствола скважины перед спуском «хвостовика»"
+ },
+ new
+ {
+ Id = 10034,
+ Name = "Мера обсадных труб (хвостовик)"
+ },
+ new
+ {
+ Id = 10035,
+ Name = "Акт выполненных работ по спуску хвостовика с закачкой (нефти, солевого раствора"
+ },
+ new
+ {
+ Id = 10036,
+ Name = "Акт о переводе скважины на тех. воду"
+ },
+ new
+ {
+ Id = 10037,
+ Name = "Акт об окончании бурения"
+ },
+ new
+ {
+ Id = 10038,
+ Name = "Акт на передачу скважины в освоение (КРС)"
+ },
+ new
+ {
+ Id = 10039,
+ Name = "Акт на опресовку межколонного пространства с КРС"
+ },
+ new
+ {
+ Id = 10040,
+ Name = "Акт на сдачу скважины в ЦДНГ"
+ },
+ new
+ {
+ Id = 10041,
+ Name = "Паспорт ОУС (заполняется геологами)"
+ },
+ new
+ {
+ Id = 10042,
+ Name = "Паспорт скважины (заполняется геологами)"
+ },
+ new
+ {
+ Id = 10043,
+ Name = "Фактические данные бурения (вставляются в паспорт скважины)"
+ },
+ new
+ {
+ Id = 20000,
+ Name = "Справки по страницам"
+ },
+ new
+ {
+ Id = 30000,
+ Name = "Инструкции"
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("IdAuthor")
+ .HasColumnType("integer")
+ .HasColumnName("id_author")
+ .HasComment("Id пользователя, загрузившего файл");
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("id категории файла");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("id скважины");
+
+ b.Property("IsDeleted")
+ .HasColumnType("boolean")
+ .HasColumnName("is_deleted")
+ .HasComment("Удален ли файл");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название файла");
+
+ b.Property("Size")
+ .HasColumnType("bigint")
+ .HasColumnName("file_size")
+ .HasComment("Размер файла");
+
+ b.Property("UploadDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdAuthor");
+
+ b.HasIndex("IdCategory");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_file_info", t =>
+ {
+ t.HasComment("Файлы всех категорий");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.FileMark", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Comment")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("comment")
+ .HasComment("Комментарий");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created")
+ .HasComment("Дата совершенного действия");
+
+ b.Property("IdFile")
+ .HasColumnType("integer")
+ .HasColumnName("id_file")
+ .HasComment("id файла");
+
+ b.Property("IdMarkType")
+ .HasColumnType("integer")
+ .HasColumnName("id_mark_type")
+ .HasComment("0 - отклонен, 1 - согласован");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("id пользователя");
+
+ b.Property("IsDeleted")
+ .HasColumnType("boolean")
+ .HasColumnName("is_deleted")
+ .HasComment("Помечен ли файл как удаленный");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdFile");
+
+ b.HasIndex("IdUser");
+
+ b.ToTable("t_file_mark", t =>
+ {
+ t.HasComment("Действия с файлами.");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b =>
+ {
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("IdRecord")
+ .HasColumnType("integer")
+ .HasColumnName("id_record");
+
+ b.Property("IdItem")
+ .HasColumnType("integer")
+ .HasColumnName("id_item");
+
+ b.Property("DateTime")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date");
+
+ b.Property("Value")
+ .HasColumnType("real")
+ .HasColumnName("value");
+
+ b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
+
+ b.ToTable("t_wits_float", t =>
+ {
+ t.HasComment("таблица данных ГТИ с типом значения float");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b =>
+ {
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("IdRecord")
+ .HasColumnType("integer")
+ .HasColumnName("id_record");
+
+ b.Property("IdItem")
+ .HasColumnType("integer")
+ .HasColumnName("id_item");
+
+ b.Property("DateTime")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date");
+
+ b.Property("Value")
+ .HasColumnType("integer")
+ .HasColumnName("value");
+
+ b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
+
+ b.ToTable("t_wits_int", t =>
+ {
+ t.HasComment("таблица данных ГТИ с типом значения int");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b =>
+ {
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("IdRecord")
+ .HasColumnType("integer")
+ .HasColumnName("id_record");
+
+ b.Property("IdItem")
+ .HasColumnType("integer")
+ .HasColumnName("id_item");
+
+ b.Property("DateTime")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date");
+
+ b.Property("Value")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("value");
+
+ b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
+
+ b.ToTable("t_wits_string", t =>
+ {
+ t.HasComment("таблица данных ГТИ с типом значения string");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("Id категории файла");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название файла");
+
+ b.Property("Size")
+ .HasColumnType("bigint")
+ .HasColumnName("file_size")
+ .HasComment("Размер файла");
+
+ b.Property("UrlPage")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("url_page")
+ .HasComment("Url страницы");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCategory");
+
+ b.ToTable("t_help_page", t =>
+ {
+ t.HasComment("Справки");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("DateEnd")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_end");
+
+ b.Property("DateStart")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_start");
+
+ b.Property("DepthEnd")
+ .HasColumnType("real")
+ .HasColumnName("depth_end");
+
+ b.Property("DepthStart")
+ .HasColumnType("real")
+ .HasColumnName("depth_start");
+
+ b.Property("IdFeedRegulator")
+ .HasColumnType("smallint")
+ .HasColumnName("id_feed_regulator");
+
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdTelemetry");
+
+ b.ToTable("t_limiting_parameter", t =>
+ {
+ t.HasComment("Ограничения по параметрам телеметрии");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("DateDownload")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_download")
+ .HasComment("Дата загрузки");
+
+ b.Property("IdAuthor")
+ .HasColumnType("integer")
+ .HasColumnName("id_author")
+ .HasComment("Id автора");
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("Id категории файла");
+
+ b.Property("IdDirectory")
+ .HasColumnType("integer")
+ .HasColumnName("id_directory")
+ .HasComment("Id директории");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdAuthor");
+
+ b.HasIndex("IdCategory");
+
+ b.HasIndex("IdDirectory");
+
+ b.ToTable("t_manual", t =>
+ {
+ t.HasComment("Инструкции");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("IdParent")
+ .HasColumnType("integer")
+ .HasColumnName("id_parent")
+ .HasComment("Id родительской директории");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdParent");
+
+ b.ToTable("t_manual_directory", t =>
+ {
+ t.HasComment("Директория для инструкций");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Measure", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Data")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("data")
+ .HasComment("Данные таблицы последних данных");
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("id категории");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("id скважины");
+
+ b.Property("IsDeleted")
+ .HasColumnType("boolean")
+ .HasColumnName("is_deleted")
+ .HasComment("Пометка удаленным");
+
+ b.Property("Timestamp")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("timestamp")
+ .HasComment("время добавления");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCategory");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_measure", t =>
+ {
+ t.HasComment("Таблица c данными для вкладки 'Последние данные'");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название категории");
+
+ b.Property("ShortName")
+ .HasColumnType("text")
+ .HasColumnName("short_name")
+ .HasComment("Короткое название категории");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_measure_category", t =>
+ {
+ t.HasComment("Категория последних данных");
+ });
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Name = "Показатели бурового раствора",
+ ShortName = "Раствор"
+ },
+ new
+ {
+ Id = 2,
+ Name = "Шламограмма",
+ ShortName = "Шламограмма"
+ },
+ new
+ {
+ Id = 3,
+ Name = "ННБ",
+ ShortName = "ННБ"
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Notification", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("IdNotificationCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_notification_category")
+ .HasComment("Id категории уведомления");
+
+ b.Property("IdTransportType")
+ .HasColumnType("integer")
+ .HasColumnName("id_transport_type")
+ .HasComment("Id типа доставки уведомления");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("Id получателя");
+
+ b.Property("Message")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("message")
+ .HasComment("Сообщение уведомления");
+
+ b.Property("ReadDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("read_date")
+ .HasComment("Дата прочтения уведомления");
+
+ b.Property("RegistrationDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("registration_date")
+ .HasComment("Дата регистрации уведомления");
+
+ b.Property("SentDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("sent_date")
+ .HasComment("Дата отправки уведомления");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("title")
+ .HasComment("Заголовок уведомления");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdNotificationCategory");
+
+ b.HasIndex("IdUser");
+
+ b.ToTable("t_notification", t =>
+ {
+ t.HasComment("Уведомления");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_notification_category", t =>
+ {
+ t.HasComment("Категории уведомлений");
+ });
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Name = "Системные уведомления"
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasComment("Идентификатор");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Конечная глубина");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Старотовая глубина");
+
+ b.Property("IdOperationCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_operation_category")
+ .HasComment("Ид категории операции");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("Ид скважины");
+
+ b.Property("StandardValue")
+ .HasColumnType("double precision")
+ .HasColumnName("standard_value")
+ .HasComment("Нормативный показатель");
+
+ b.Property("TargetValue")
+ .HasColumnType("double precision")
+ .HasColumnName("target_value")
+ .HasComment("Целевой показатель");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdOperationCategory");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_operationvalue", t =>
+ {
+ t.HasComment("Целевые/нормативные показатели операции");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Permission", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Description")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("description")
+ .HasComment("Краткое описание");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("name")
+ .HasComment("Название");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_permission", t =>
+ {
+ t.HasComment("Разрешения на доступ к данным");
+ });
+
+ b.HasData(
+ new
+ {
+ Id = 100,
+ Description = "Разрешение удалять админ. Кусты",
+ Name = "AdminCluster.delete"
+ },
+ new
+ {
+ Id = 101,
+ Description = "Разрешение редактировать админ. Кусты",
+ Name = "AdminCluster.edit"
+ },
+ new
+ {
+ Id = 102,
+ Description = "Разрешение просматривать админ. Кусты",
+ Name = "AdminCluster.get"
+ },
+ new
+ {
+ Id = 103,
+ Description = "Разрешение удалять админ. Компании",
+ Name = "AdminCompany.delete"
+ },
+ new
+ {
+ Id = 104,
+ Description = "Разрешение редактировать админ. Компании",
+ Name = "AdminCompany.edit"
+ },
+ new
+ {
+ Id = 105,
+ Description = "Разрешение просматривать админ. Компании",
+ Name = "AdminCompany.get"
+ },
+ new
+ {
+ Id = 106,
+ Description = "Разрешение удалять админ. Типы компаний",
+ Name = "AdminCompanyType.delete"
+ },
+ new
+ {
+ Id = 107,
+ Description = "Разрешение редактировать админ. Типы компаний",
+ Name = "AdminCompanyType.edit"
+ },
+ new
+ {
+ Id = 108,
+ Description = "Разрешение просматривать админ. Типы компаний",
+ Name = "AdminCompanyType.get"
+ },
+ new
+ {
+ Id = 109,
+ Description = "Разрешение удалять админ. Месторождения",
+ Name = "AdminDeposit.delete"
+ },
+ new
+ {
+ Id = 110,
+ Description = "Разрешение редактировать админ. Месторождения",
+ Name = "AdminDeposit.edit"
+ },
+ new
+ {
+ Id = 111,
+ Description = "Разрешение просматривать админ. Месторождения",
+ Name = "AdminDeposit.get"
+ },
+ new
+ {
+ Id = 112,
+ Description = "Разрешение удалять админ. Разрешения",
+ Name = "AdminPermission.delete"
+ },
+ new
+ {
+ Id = 113,
+ Description = "Разрешение редактировать админ. Разрешения",
+ Name = "AdminPermission.edit"
+ },
+ new
+ {
+ Id = 114,
+ Description = "Разрешение просматривать админ. Разрешения",
+ Name = "AdminPermission.get"
+ },
+ new
+ {
+ Id = 115,
+ Description = "Разрешение удалять админ. Телеметрию",
+ Name = "AdminTelemetry.delete"
+ },
+ new
+ {
+ Id = 116,
+ Description = "Разрешение редактировать админ. Телеметрию",
+ Name = "AdminTelemetry.edit"
+ },
+ new
+ {
+ Id = 117,
+ Description = "Разрешение просматривать админ. Телеметрию",
+ Name = "AdminTelemetry.get"
+ },
+ new
+ {
+ Id = 118,
+ Description = "Разрешение удалять админ. Пользователей",
+ Name = "AdminUser.delete"
+ },
+ new
+ {
+ Id = 119,
+ Description = "Разрешение редактировать админ. Пользователей",
+ Name = "AdminUser.edit"
+ },
+ new
+ {
+ Id = 120,
+ Description = "Разрешение просматривать админ. Пользователей",
+ Name = "AdminUser.get"
+ },
+ new
+ {
+ Id = 121,
+ Description = "Разрешение удалять админ. Роли пользователей",
+ Name = "AdminUserRole.delete"
+ },
+ new
+ {
+ Id = 122,
+ Description = "Разрешение редактировать админ. Роли пользователей",
+ Name = "AdminUserRole.edit"
+ },
+ new
+ {
+ Id = 123,
+ Description = "Разрешение просматривать админ. Роли пользователей",
+ Name = "AdminUserRole.get"
+ },
+ new
+ {
+ Id = 124,
+ Description = "Разрешение удалять админ. Скважины",
+ Name = "AdminWell.delete"
+ },
+ new
+ {
+ Id = 125,
+ Description = "Разрешение редактировать админ. Скважины",
+ Name = "AdminWell.edit"
+ },
+ new
+ {
+ Id = 126,
+ Description = "Разрешение просматривать админ. Скважины",
+ Name = "AdminWell.get"
+ },
+ new
+ {
+ Id = 127,
+ Description = "Разрешение удалять админ. Подсистемы",
+ Name = "AdminSubsytem.delete"
+ },
+ new
+ {
+ Id = 128,
+ Description = "Разрешение редактировать админ. Подсистемы",
+ Name = "AdminSubsytem.edit"
+ },
+ new
+ {
+ Id = 129,
+ Description = "Разрешение просматривать админ. Подсистемы",
+ Name = "AdminSubsytem.get"
+ },
+ new
+ {
+ Id = 200,
+ Description = "Разрешение редактировать 0",
+ Name = "Auth.edit"
+ },
+ new
+ {
+ Id = 201,
+ Description = "Разрешение просматривать 0",
+ Name = "Auth.get"
+ },
+ new
+ {
+ Id = 202,
+ Description = "Разрешение просматривать Кусты",
+ Name = "Cluster.get"
+ },
+ new
+ {
+ Id = 203,
+ Description = "Разрешение просматривать Месторождения",
+ Name = "Deposit.get"
+ },
+ new
+ {
+ Id = 204,
+ Description = "Разрешение удалять РТК",
+ Name = "DrillFlowChart.delete"
+ },
+ new
+ {
+ Id = 205,
+ Description = "Разрешение редактировать РТК",
+ Name = "DrillFlowChart.edit"
+ },
+ new
+ {
+ Id = 206,
+ Description = "Разрешение просматривать РТК",
+ Name = "DrillFlowChart.get"
+ },
+ new
+ {
+ Id = 207,
+ Description = "Разрешение удалять Программу бурения",
+ Name = "DrillingProgram.delete"
+ },
+ new
+ {
+ Id = 208,
+ Description = "Разрешение редактировать Программу бурения",
+ Name = "DrillingProgram.edit"
+ },
+ new
+ {
+ Id = 209,
+ Description = "Разрешение просматривать Программу бурения",
+ Name = "DrillingProgram.get"
+ },
+ new
+ {
+ Id = 210,
+ Description = "Разрешение удалять Режимы бурения",
+ Name = "DrillParams.delete"
+ },
+ new
+ {
+ Id = 211,
+ Description = "Разрешение редактировать Режимы бурения",
+ Name = "DrillParams.edit"
+ },
+ new
+ {
+ Id = 212,
+ Description = "Разрешение просматривать Режимы бурения",
+ Name = "DrillParams.get"
+ },
+ new
+ {
+ Id = 213,
+ Description = "Разрешение удалять Файлы",
+ Name = "File.delete"
+ },
+ new
+ {
+ Id = 214,
+ Description = "Разрешение редактировать Файлы",
+ Name = "File.edit"
+ },
+ new
+ {
+ Id = 215,
+ Description = "Разрешение просматривать Файлы",
+ Name = "File.get"
+ },
+ new
+ {
+ Id = 216,
+ Description = "Разрешение удалять Измерения",
+ Name = "Measure.delete"
+ },
+ new
+ {
+ Id = 217,
+ Description = "Разрешение редактировать Измерения",
+ Name = "Measure.edit"
+ },
+ new
+ {
+ Id = 218,
+ Description = "Разрешение просматривать Измерения",
+ Name = "Measure.get"
+ },
+ new
+ {
+ Id = 219,
+ Description = "Разрешение просматривать Сообщения телеметрии",
+ Name = "Message.get"
+ },
+ new
+ {
+ Id = 220,
+ Description = "Разрешение просматривать Статистику по операциям",
+ Name = "OperationStat.get"
+ },
+ new
+ {
+ Id = 221,
+ Description = "Разрешение редактировать Рапорта",
+ Name = "Report.edit"
+ },
+ new
+ {
+ Id = 222,
+ Description = "Разрешение просматривать Рапорта",
+ Name = "Report.get"
+ },
+ new
+ {
+ Id = 223,
+ Description = "Разрешение просматривать админ. Системная статистика",
+ Name = "RequestTracker.get"
+ },
+ new
+ {
+ Id = 224,
+ Description = "Разрешение удалять Рекомендации уставок",
+ Name = "Setpoints.delete"
+ },
+ new
+ {
+ Id = 225,
+ Description = "Разрешение редактировать Рекомендации уставок",
+ Name = "Setpoints.edit"
+ },
+ new
+ {
+ Id = 226,
+ Description = "Разрешение просматривать Рекомендации уставок",
+ Name = "Setpoints.get"
+ },
+ new
+ {
+ Id = 227,
+ Description = "Разрешение редактировать Телеметрии",
+ Name = "Telemetry.edit"
+ },
+ new
+ {
+ Id = 228,
+ Description = "Разрешение просматривать Анализ телеметрии",
+ Name = "TelemetryAnalytics.get"
+ },
+ new
+ {
+ Id = 229,
+ Description = "Разрешение редактировать Данные телеметрии по САУБ",
+ Name = "TelemetryDataSaub.edit"
+ },
+ new
+ {
+ Id = 230,
+ Description = "Разрешение просматривать Данные телеметрии по САУБ",
+ Name = "TelemetryDataSaub.get"
+ },
+ new
+ {
+ Id = 231,
+ Description = "Разрешение редактировать Данные телеметрии по SpinMaster",
+ Name = "TelemetryDataSpin.edit"
+ },
+ new
+ {
+ Id = 232,
+ Description = "Разрешение просматривать Данные телеметрии по SpinMaster",
+ Name = "TelemetryDataSpin.get"
+ },
+ new
+ {
+ Id = 233,
+ Description = "Разрешение редактировать Скважины",
+ Name = "Well.edit"
+ },
+ new
+ {
+ Id = 234,
+ Description = "Разрешение просматривать Скважины",
+ Name = "Well.get"
+ },
+ new
+ {
+ Id = 235,
+ Description = "Разрешение редактировать Композитные скважины",
+ Name = "WellComposite.edit"
+ },
+ new
+ {
+ Id = 236,
+ Description = "Разрешение просматривать Композитные скважины",
+ Name = "WellComposite.get"
+ },
+ new
+ {
+ Id = 237,
+ Description = "Разрешение удалять Операции по скважинам",
+ Name = "WellOperation.delete"
+ },
+ new
+ {
+ Id = 238,
+ Description = "Разрешение редактировать Операции по скважинам",
+ Name = "WellOperation.edit"
+ },
+ new
+ {
+ Id = 239,
+ Description = "Разрешение просматривать Операции по скважинам",
+ Name = "WellOperation.get"
+ },
+ new
+ {
+ Id = 240,
+ Description = "Разрешение редактировать Файлы категории 1 (Растворный сервис)",
+ Name = "File.edit1"
+ },
+ new
+ {
+ Id = 241,
+ Description = "Разрешение редактировать Файлы категории 2 (Цементирование)",
+ Name = "File.edit2"
+ },
+ new
+ {
+ Id = 242,
+ Description = "Разрешение редактировать Файлы категории 3 (ННБ)",
+ Name = "File.edit3"
+ },
+ new
+ {
+ Id = 243,
+ Description = "Разрешение редактировать Файлы категории 4 (ГТИ)",
+ Name = "File.edit4"
+ },
+ new
+ {
+ Id = 244,
+ Description = "Разрешение редактировать Файлы категории 5 (Документы по скважине)",
+ Name = "File.edit5"
+ },
+ new
+ {
+ Id = 245,
+ Description = "Разрешение редактировать Файлы категории 6 (Супервайзер)",
+ Name = "File.edit6"
+ },
+ new
+ {
+ Id = 246,
+ Description = "Разрешение редактировать Файлы категории 7 (Мастер)",
+ Name = "File.edit7"
+ },
+ new
+ {
+ Id = 247,
+ Description = "Разрешение редактировать Файлы категории 8 (Долотный сервис)",
+ Name = "File.edit8"
+ },
+ new
+ {
+ Id = 248,
+ Description = "Разрешение редактировать Файлы категории 9 (Буровой подрядчик)",
+ Name = "File.edit9"
+ },
+ new
+ {
+ Id = 249,
+ Description = "Разрешение редактировать Файлы категории 10 (Сервис по заканчиванию скважины)",
+ Name = "File.edit10"
+ },
+ new
+ {
+ Id = 250,
+ Description = "Разрешение редактировать Файлы категории 11 (Рапорт)",
+ Name = "File.edit11"
+ },
+ new
+ {
+ Id = 251,
+ Description = "Разрешение редактировать Файлы категории 12",
+ Name = "File.edit12"
+ },
+ new
+ {
+ Id = 252,
+ Description = "Разрешение редактировать Файлы категории 12",
+ Name = "File.edit13"
+ },
+ new
+ {
+ Id = 253,
+ Description = "Разрешение редактировать Файлы категории 13",
+ Name = "File.edit14"
+ },
+ new
+ {
+ Id = 254,
+ Description = "Разрешение редактировать Файлы категории 14",
+ Name = "File.edit15"
+ },
+ new
+ {
+ Id = 255,
+ Description = "Разрешение редактировать Файлы категории 15",
+ Name = "File.edit16"
+ },
+ new
+ {
+ Id = 256,
+ Description = "Разрешение редактировать Файлы категории 16",
+ Name = "File.edit17"
+ },
+ new
+ {
+ Id = 257,
+ Description = "Разрешение редактировать Файлы категории 17",
+ Name = "File.edit18"
+ },
+ new
+ {
+ Id = 258,
+ Description = "Разрешение редактировать Файлы категории 18",
+ Name = "File.edit19"
+ },
+ new
+ {
+ Id = 259,
+ Description = "Разрешение редактировать Файлы категории 19",
+ Name = "File.edit20"
+ },
+ new
+ {
+ Id = 260,
+ Description = "Разрешение редактировать Файлы категории 20",
+ Name = "File.edit21"
+ },
+ new
+ {
+ Id = 261,
+ Description = "Разрешение редактировать Файлы категории 21",
+ Name = "File.edit22"
+ },
+ new
+ {
+ Id = 262,
+ Description = "Разрешение редактировать Файлы категории 22",
+ Name = "File.edit23"
+ },
+ new
+ {
+ Id = 263,
+ Description = "Разрешение редактировать Файлы категории 23",
+ Name = "File.edit24"
+ },
+ new
+ {
+ Id = 264,
+ Description = "Разрешение редактировать Файлы категории 24",
+ Name = "File.edit25"
+ },
+ new
+ {
+ Id = 265,
+ Description = "Разрешение редактировать Файлы категории 25",
+ Name = "File.edit26"
+ },
+ new
+ {
+ Id = 266,
+ Description = "Разрешение редактировать Файлы категории 26",
+ Name = "File.edit27"
+ },
+ new
+ {
+ Id = 267,
+ Description = "Разрешение редактировать Файлы категории 27",
+ Name = "File.edit28"
+ },
+ new
+ {
+ Id = 268,
+ Description = "Разрешение редактировать Файлы категории 28",
+ Name = "File.edit29"
+ },
+ new
+ {
+ Id = 269,
+ Description = "Разрешение редактировать Файлы категории 29",
+ Name = "File.edit30"
+ },
+ new
+ {
+ Id = 380,
+ Description = "Разрешение просматривать список бурильщиков",
+ Name = "Driller.get"
+ },
+ new
+ {
+ Id = 381,
+ Description = "Разрешение редактировать бурильщика",
+ Name = "Driller.edit"
+ },
+ new
+ {
+ Id = 382,
+ Description = "Разрешение удалять бурильщик",
+ Name = "Driller.delete"
+ },
+ new
+ {
+ Id = 383,
+ Description = "Разрешение просматривать графики бурильщиков",
+ Name = "Schedule.get"
+ },
+ new
+ {
+ Id = 384,
+ Description = "Разрешение редактировать график бурильщика",
+ Name = "Schedule.edit"
+ },
+ new
+ {
+ Id = 385,
+ Description = "Разрешение удалять график бурильщика",
+ Name = "Schedule.delete"
+ },
+ new
+ {
+ Id = 386,
+ Description = "Разрешение просматривать суточный рапорт",
+ Name = "DailyReport.get"
+ },
+ new
+ {
+ Id = 387,
+ Description = "Разрешение редактировать суточный рапорт",
+ Name = "DailyReport.edit"
+ },
+ new
+ {
+ Id = 388,
+ Description = "Разрешение просматривать авто. определенные операции",
+ Name = "DetectedOperation.get"
+ },
+ new
+ {
+ Id = 389,
+ Description = "Разрешение просматривать целевые значения",
+ Name = "OperationValue.get"
+ },
+ new
+ {
+ Id = 390,
+ Description = "Разрешение редактировать целевые значения",
+ Name = "OperationValue.edit"
+ },
+ new
+ {
+ Id = 391,
+ Description = "Разрешение удалять целевые значения",
+ Name = "OperationValue.delete"
+ },
+ new
+ {
+ Id = 400,
+ Description = "Разрешение просматривать инфо по wits параметрам",
+ Name = "WitsInfo.get"
+ },
+ new
+ {
+ Id = 401,
+ Description = "Разрешение просматривать WITS record 1",
+ Name = "WitsRecord1.get"
+ },
+ new
+ {
+ Id = 407,
+ Description = "Разрешение просматривать WITS record 7",
+ Name = "WitsRecord7.get"
+ },
+ new
+ {
+ Id = 408,
+ Description = "Разрешение просматривать WITS record 8",
+ Name = "WitsRecord8.get"
+ },
+ new
+ {
+ Id = 450,
+ Description = "Разрешение просматривать WITS record 50",
+ Name = "WitsRecord50.get"
+ },
+ new
+ {
+ Id = 460,
+ Description = "Разрешение просматривать WITS record 60",
+ Name = "WitsRecord60.get"
+ },
+ new
+ {
+ Id = 461,
+ Description = "Разрешение просматривать WITS record 61",
+ Name = "WitsRecord61.get"
+ },
+ new
+ {
+ Id = 500,
+ Description = "Разрешение удалять Категорий документов файлов",
+ Name = "FileCategory.delete"
+ },
+ new
+ {
+ Id = 501,
+ Description = "Разрешение редактировать Категорий документов файлов",
+ Name = "FileCategory.edit"
+ },
+ new
+ {
+ Id = 502,
+ Description = "Разрешение просматривать Категорий документов файлов",
+ Name = "FileCategory.get"
+ },
+ new
+ {
+ Id = 503,
+ Description = "Разрешение удалять Дело скважины",
+ Name = "WellFinalDocuments.delete"
+ },
+ new
+ {
+ Id = 504,
+ Description = "Разрешение редактировать Дело скважины",
+ Name = "WellFinalDocuments.edit"
+ },
+ new
+ {
+ Id = 505,
+ Description = "Разрешение просматривать Дело скважины",
+ Name = "WellFinalDocuments.get"
+ },
+ new
+ {
+ Id = 506,
+ Description = "Разрешение редактировать ответственных за загрузку файла Дело скважины",
+ Name = "WellFinalDocuments.editPublisher"
+ },
+ new
+ {
+ Id = 507,
+ Description = "Разрешение просматривать наработка талевого каната",
+ Name = "TelemetryWirelineRunOut.get"
+ },
+ new
+ {
+ Id = 510,
+ Description = "Разрешение просматривать плановая траектория",
+ Name = "PlannedTrajectory.get"
+ },
+ new
+ {
+ Id = 511,
+ Description = "Разрешение редактировать плановая траектория",
+ Name = "PlannedTrajectory.edit"
+ },
+ new
+ {
+ Id = 512,
+ Description = "Разрешение удалять плановая траектория",
+ Name = "PlannedTrajectory.delete"
+ },
+ new
+ {
+ Id = 516,
+ Description = "Разрешение просматривать статистику вопросов",
+ Name = "FaqStatistics.get"
+ },
+ new
+ {
+ Id = 517,
+ Description = "Разрешение редактировать вопрос",
+ Name = "FaqStatistics.edit"
+ },
+ new
+ {
+ Id = 518,
+ Description = "Разрешение удалять вопрос",
+ Name = "FaqStatistics.delete"
+ },
+ new
+ {
+ Id = 519,
+ Description = "Разрешение просматривать список контактов",
+ Name = "WellContact.get"
+ },
+ new
+ {
+ Id = 520,
+ Description = "Разрешение редактировать список контактов",
+ Name = "WellContact.edit"
+ },
+ new
+ {
+ Id = 521,
+ Description = "Разрешить создание справок по страницам",
+ Name = "HelpPage.edit"
+ },
+ new
+ {
+ Id = 522,
+ Description = "Разрешить удаление всех настроек пользователя",
+ Name = "UserSettings.delete"
+ },
+ new
+ {
+ Id = 523,
+ Description = "Разрешить редактирование инструкций",
+ Name = "Manual.edit"
+ },
+ new
+ {
+ Id = 524,
+ Description = "Разрешить получение инструкций",
+ Name = "Manual.get"
+ },
+ new
+ {
+ Id = 525,
+ Description = "Разрешение на редактирование РТК у завершенной скважины",
+ Name = "ProcessMap.editCompletedWell"
+ },
+ new
+ {
+ Id = 526,
+ Description = "Разрешение на редактирование операций у завершенной скважины",
+ Name = "WellOperation.editCompletedWell"
+ },
+ new
+ {
+ Id = 527,
+ Description = "Разрешение на удаление инструкций",
+ Name = "Manual.delete"
+ },
+ new
+ {
+ Id = 528,
+ Description = "Разрешение на удаление контакта",
+ Name = "WellContact.delete"
+ },
+ new
+ {
+ Id = 530,
+ Description = "Разрешение на редактирование плановой конструкции скважины",
+ Name = "WellSectionPlan.edit"
+ },
+ new
+ {
+ Id = 531,
+ Description = "Разрешение на удаление плановой конструкции скважины",
+ Name = "WellSectionPlan.delete"
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasComment("Идентификатор");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Creation")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("creation")
+ .HasComment("дата создания");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Глубина по стволу до, м");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Глубина по стволу от, м");
+
+ b.Property("IdAuthor")
+ .HasColumnType("integer")
+ .HasColumnName("id_author")
+ .HasComment("Автор");
+
+ b.Property("IdEditor")
+ .HasColumnType("integer")
+ .HasColumnName("id_editor")
+ .HasComment("Редактор");
+
+ b.Property("IdPrevious")
+ .HasColumnType("integer")
+ .HasColumnName("id_previous")
+ .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная");
+
+ b.Property("IdState")
+ .HasColumnType("integer")
+ .HasColumnName("id_state")
+ .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("Id скважины");
+
+ b.Property("IdWellSectionType")
+ .HasColumnType("integer")
+ .HasColumnName("id_wellsection_type")
+ .HasComment("Тип секции");
+
+ b.Property("Obsolete")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("obsolete")
+ .HasComment("дата устаревания");
+
+ b.Property("TopDriveRpmMin")
+ .HasColumnType("double precision")
+ .HasColumnName("top_drive_rpm_min")
+ .HasComment("Минимальные обороты ВСП, об/мин");
+
+ b.Property("TopDriveStartMinFlowRate")
+ .HasColumnType("double precision")
+ .HasColumnName("top_drive_start_min_flow_rate")
+ .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек");
+
+ b.Property("TopDriveTorqueMax")
+ .HasColumnType("double precision")
+ .HasColumnName("top_drive_torque_max")
+ .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdAuthor");
+
+ b.HasIndex("IdEditor");
+
+ b.HasIndex("IdPrevious");
+
+ b.HasIndex("IdWell");
+
+ b.HasIndex("IdWellSectionType");
+
+ b.ToTable("t_process_map_plan_anti_crash_rotation", t =>
+ {
+ t.HasComment("Противоаварийное вращение");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasComment("Идентификатор");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Creation")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("creation")
+ .HasComment("дата создания");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Глубина по стволу до, м");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Глубина по стволу от, м");
+
+ b.Property("IdAuthor")
+ .HasColumnType("integer")
+ .HasColumnName("id_author")
+ .HasComment("Автор");
+
+ b.Property("IdEditor")
+ .HasColumnType("integer")
+ .HasColumnName("id_editor")
+ .HasComment("Редактор");
+
+ b.Property("IdPrevious")
+ .HasColumnType("integer")
+ .HasColumnName("id_previous")
+ .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная");
+
+ b.Property("IdState")
+ .HasColumnType("integer")
+ .HasColumnName("id_state")
+ .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("Id скважины");
+
+ b.Property("IdWellSectionType")
+ .HasColumnType("integer")
+ .HasColumnName("id_wellsection_type")
+ .HasComment("Тип секции");
+
+ b.Property("Note")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)")
+ .HasColumnName("note")
+ .HasComment("Примечание");
+
+ b.Property("Obsolete")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("obsolete")
+ .HasComment("дата устаревания");
+
+ b.Property("ZenithAngle")
+ .HasColumnType("double precision")
+ .HasColumnName("zenit_angle")
+ .HasComment("Зенитный угол, градусы");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdAuthor");
+
+ b.HasIndex("IdEditor");
+
+ b.HasIndex("IdPrevious");
+
+ b.HasIndex("IdWell");
+
+ b.HasIndex("IdWellSectionType");
+
+ b.ToTable("t_process_map_plan_auto_hold_tf", t =>
+ {
+ t.HasComment("Автоудержание TF");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasComment("Идентификатор");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Creation")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("creation")
+ .HasComment("дата создания");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Глубина по стволу до, м");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Глубина по стволу от, м");
+
+ b.Property("IdAuthor")
+ .HasColumnType("integer")
+ .HasColumnName("id_author")
+ .HasComment("Автор");
+
+ b.Property("IdEditor")
+ .HasColumnType("integer")
+ .HasColumnName("id_editor")
+ .HasComment("Редактор");
+
+ b.Property("IdPrevious")
+ .HasColumnType("integer")
+ .HasColumnName("id_previous")
+ .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная");
+
+ b.Property("IdState")
+ .HasColumnType("integer")
+ .HasColumnName("id_state")
+ .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("Id скважины");
+
+ b.Property("IdWellSectionType")
+ .HasColumnType("integer")
+ .HasColumnName("id_wellsection_type")
+ .HasComment("Тип секции");
+
+ b.Property("Note")
+ .IsRequired()
+ .HasMaxLength(1024)
+ .HasColumnType("character varying(1024)")
+ .HasColumnName("note")
+ .HasComment("Примечание");
+
+ b.Property("Obsolete")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("obsolete")
+ .HasComment("дата устаревания");
+
+ b.Property("StickSlip")
+ .HasColumnType("double precision")
+ .HasColumnName("stick_slip")
+ .HasComment("StickSlip");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdAuthor");
+
+ b.HasIndex("IdEditor");
+
+ b.HasIndex("IdPrevious");
+
+ b.HasIndex("IdWell");
+
+ b.HasIndex("IdWellSectionType");
+
+ b.ToTable("t_process_map_plan_functions_damper", t =>
+ {
+ t.HasComment("Демпфер");
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasComment("Идентификатор");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Creation")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("creation")
+ .HasComment("дата создания");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Глубина по стволу до, м");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Глубина по стволу от, м");
+
+ b.Property("IdAuthor")
+ .HasColumnType("integer")
+ .HasColumnName("id_author")
+ .HasComment("Автор");
+
+ b.Property("IdEditor")
+ .HasColumnType("integer")
+ .HasColumnName("id_editor")
+ .HasComment("Редактор");
+
+ b.Property("IdPrevious")
+ .HasColumnType("integer")
+ .HasColumnName("id_previous")
+ .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная");
+
+ b.Property