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/ProcessMapPlanReamDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamDto.cs
new file mode 100644
index 00000000..376888dd
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamDto.cs
@@ -0,0 +1,82 @@
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план проработка скважины
+///
+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/Operations/ProcessMapPlanReamingRotorDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingRotorDto.cs
new file mode 100644
index 00000000..98b6fcfc
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingRotorDto.cs
@@ -0,0 +1,209 @@
+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/Operations/ProcessMapPlanRotorDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorDto.cs
new file mode 100644
index 00000000..938732c2
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorDto.cs
@@ -0,0 +1,88 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план бурение скважины в роторе
+///
+public class ProcessMapPlanRotorDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Максимально допустимая скорость, м/ч
+ ///
+ [Range(0, 800.0, ErrorMessage = "Максимально допустимая скорость, м/ч., должно быть в пределах от 0 до 800.0")]
+ public double RopMax { get; set; }
+
+ ///
+ /// Максимально допустимое давление, атм
+ ///
+ [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400.0")]
+ public double PressureMax { get; set; }
+
+ ///
+ /// Перепад давления, атм. Уставка
+ ///
+ [Range(0.0, 60.0, ErrorMessage = "Перепад давления, атм., уставка, должно быть в пределах от 0 до 60.0")]
+ public double DifferentialPressure { get; set; }
+
+ ///
+ /// Перепад давления, атм. Ограничение
+ ///
+ [Range(0.0, 60.0, ErrorMessage = "Перепад давления, атм., ограничение, должно быть в пределах от 0 до 60.0")]
+ public double DifferentialPressureMax { get; set; }
+
+ ///
+ /// Нагрузка, т. Уставка
+ ///
+ [Range(0.0, 99.0, ErrorMessage = "Нагрузка, т., уставка, должно быть в пределах от 0 до 99.0")]
+ public double WeightOnBit { get; set; }
+
+ ///
+ /// Нагрузка, т. Ограничение
+ ///
+ [Range(0.0, 99.0, ErrorMessage = "Нагрузка, т., ограничение, должно быть в пределах от 0 до 99.0")]
+ public double WeightOnBitMax { get; set; }
+
+ ///
+ /// Момент на ВСП, кН*м. Уставка
+ ///
+ [Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., уставка, должно быть в пределах от 0 до 35.0")]
+ public double TopDriveTorque { get; set; }
+
+ ///
+ /// Момент на ВСП, кН*м. Ограничение
+ ///
+ [Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., ограничение, должно быть в пределах от 0 до 35.0")]
+ public double TopDriveTorqueMax { get; set; }
+
+ ///
+ /// Обороты на ВСП, об/мин. Уставка
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., уставка, должно быть в пределах от 0 до 270.0")]
+ public double Rpm { get; set; }
+
+ ///
+ /// Обороты на ВСП, об/мин. Ограничение
+ ///
+ [Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., ограничение, должно быть в пределах от 0 до 270.0")]
+ public double RpmMax { get; set; }
+
+ ///
+ /// Расход л/с. Уставка
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Расход л/с., уставка, должно быть в пределах от 0 до 100.0")]
+ public double FlowRate { get; set; }
+
+ ///
+ /// Расход л/с. Ограничение
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Расход л/с., ограничение, должно быть в пределах от 0 до 100.0")]
+ public double FlowRateMax { 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/ProcessMapPlanRotorLoweringBitDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorLoweringBitDto.cs
new file mode 100644
index 00000000..62b9459e
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorLoweringBitDto.cs
@@ -0,0 +1,60 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план подход к забою в роторе
+///
+public class ProcessMapPlanRotorLoweringBitDto : 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 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 RopDown { 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 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/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/ProcessMapPlanSlideLoweringBitDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSlideLoweringBitDto.cs
new file mode 100644
index 00000000..560def75
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSlideLoweringBitDto.cs
@@ -0,0 +1,42 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план подход к забою в слайде
+///
+public class ProcessMapPlanSlideLoweringBitDto : 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, 999.0, ErrorMessage = "Скорость вниз, м/ч., должно быть в пределах от 0 до 999")]
+ public double RopDown { 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/ProcessMapPlanSwitchingOffThePumpDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpDto.cs
new file mode 100644
index 00000000..7e0d54fe
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpDto.cs
@@ -0,0 +1,21 @@
+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; }
+}
\ 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..992594c1
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanTFOrientationDto.cs
@@ -0,0 +1,93 @@
+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; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/RotorRpmAccelerationDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/RotorRpmAccelerationDto.cs
new file mode 100644
index 00000000..9f59ab06
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Operations/RotorRpmAccelerationDto.cs
@@ -0,0 +1,27 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps.Operations;
+
+///
+/// РТК план выход на обороты перед ротором
+///
+public class RotorRpmAccelerationDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Зенитный угол, градусы
+ ///
+ [Range(0.0, 100.0, ErrorMessage = "Зенитный угол, градусы, должно быть в пределах от 0 до 100")]
+ public double ZenithAngle { get; set; }
+
+ ///
+ /// Складывание, м
+ ///
+ [Range(0.0, 20.0, ErrorMessage = "Складывание, м., должно быть в пределах от 0 до 20")]
+ public double Buckling { get; set; }
+
+ ///
+ /// Примечание
+ ///
+ [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
+ public string Note { get; set; } = string.Empty;
+}
\ No newline at end of file