diff --git a/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportDto.cs b/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportDto.cs
deleted file mode 100644
index ec87e260..00000000
--- a/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportDto.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-
-namespace AsbCloudApp.Data.AutogeneratedDailyReport;
-
-///
-/// DTO авто-сгенерированного суточного отчёта
-///
-public class AutoGeneratedDailyReportDto : AutoGeneratedDailyReportInfoDto
-{
- ///
- /// Блок заголовка
- ///
- public HeadBlockDto Head { get; set; } = null!;
-
- ///
- /// Блок подсистем
- ///
- public IEnumerable Subsystems { get; set; } = null!;
-
- ///
- /// Блок ограничивающих параметров
- ///
- public IEnumerable LimitingParameters { get; set; } = null!;
-
- ///
- /// Баланс времени
- ///
- public IEnumerable TimeBalance { get; set; } = null!;
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportInfoDto.cs b/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportInfoDto.cs
deleted file mode 100644
index 22e34cf2..00000000
--- a/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportInfoDto.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System;
-
-namespace AsbCloudApp.Data.AutogeneratedDailyReport;
-
-///
-/// Базовая информация о суточном отчёте
-///
-public class AutoGeneratedDailyReportInfoDto : ReportInfoDto
-{
- ///
- /// Дата формирования отчёта
- ///
- public DateOnly ReportDate { get; set; }
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/AutogeneratedDailyReport/HeadBlockDto.cs b/AsbCloudApp/Data/AutogeneratedDailyReport/HeadBlockDto.cs
deleted file mode 100644
index 43ff5246..00000000
--- a/AsbCloudApp/Data/AutogeneratedDailyReport/HeadBlockDto.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-namespace AsbCloudApp.Data.AutogeneratedDailyReport;
-
-///
-/// Блок заголовка
-///
-public class HeadBlockDto
-{
- ///
- /// Название скважины
- ///
- public string Well { get; set; } = null!;
-
- ///
- /// Название куста
- ///
- public string Cluster { get; set; } = null!;
-
- ///
- /// Заказчик
- ///
- public string Customer { get; set; } = null!;
-
- ///
- /// Месторождение
- ///
- public string Deposit { get; set; } = null!;
-
- ///
- /// Глубина забоя на дату начала интервала
- ///
- public double DepthFrom { get; set; }
-
- ///
- /// Глубина забоя на дату окончания интервала
- ///
- public double DepthTo { get; set; }
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/AutogeneratedDailyReport/LimitingParameterRecordDto.cs b/AsbCloudApp/Data/AutogeneratedDailyReport/LimitingParameterRecordDto.cs
deleted file mode 100644
index e62b32d9..00000000
--- a/AsbCloudApp/Data/AutogeneratedDailyReport/LimitingParameterRecordDto.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-namespace AsbCloudApp.Data.AutogeneratedDailyReport;
-
-///
-/// Блок ограничивающих параметров
-///
-public class LimitingParameterRecordDto
-{
- ///
- /// Время использования, мин
- ///
- public double Hours { get; set; }
-
- ///
- /// Проходка, м
- ///
- public double Depth { get; set; }
-
- ///
- /// Название ограничивающего параметра
- ///
- public string NameFeedRegulator { get; set; } = null!;
-
- ///
- /// Процент по проходке, %
- ///
- public double PercentDepth { get; set; }
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/AutogeneratedDailyReport/SubsystemRecordDto.cs b/AsbCloudApp/Data/AutogeneratedDailyReport/SubsystemRecordDto.cs
deleted file mode 100644
index 34b2e4a7..00000000
--- a/AsbCloudApp/Data/AutogeneratedDailyReport/SubsystemRecordDto.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-namespace AsbCloudApp.Data.AutogeneratedDailyReport;
-
-///
-/// Блок подсистем
-///
-public class SubsystemRecordDto
-{
- ///
- /// Название подсистемы
- ///
- public string Name { get; set; } = null!;
-
- ///
- /// Использование, %
- ///
- public double KUsage { get; set; }
-
- ///
- /// Время работы, ч
- ///
- public double UsedTimeHours { get; set; }
-
- ///
- /// Проходка
- ///
- public double Depth { get; set; }
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/AutogeneratedDailyReport/TimeBalanceRecordDto.cs b/AsbCloudApp/Data/AutogeneratedDailyReport/TimeBalanceRecordDto.cs
deleted file mode 100644
index a6ac9845..00000000
--- a/AsbCloudApp/Data/AutogeneratedDailyReport/TimeBalanceRecordDto.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace AsbCloudApp.Data.AutogeneratedDailyReport;
-
-///
-/// Баланс времени
-///
-public class TimeBalanceRecordDto
-{
- ///
- /// Название операции
- ///
- public string Name { get; set; } = null!;
-
- ///
- /// Продолжительность, часы
- ///
- public double DurationHours { get; set; }
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/BackgroundWorkDto.cs b/AsbCloudApp/Data/BackgroundWorkDto.cs
index 3374148c..500f818a 100644
--- a/AsbCloudApp/Data/BackgroundWorkDto.cs
+++ b/AsbCloudApp/Data/BackgroundWorkDto.cs
@@ -180,12 +180,12 @@ namespace AsbCloudApp.Data
///
protected void SetStatusComplete()
{
+ CountComplete++;
if (CurrentState is null)
return;
LastComplete = new(CurrentState);
CurrentState = null;
- CountComplete++;
Trace.TraceInformation($"{WorkNameForTrace} state: completed");
}
@@ -194,12 +194,12 @@ namespace AsbCloudApp.Data
///
protected void SetLastError(string errorMessage)
{
+ CountErrors++;
if (CurrentState is null)
return;
LastError = new LastErrorInfo(CurrentState, errorMessage);
CurrentState = null;
- CountErrors++;
Trace.TraceError($"{WorkNameForTrace} throw exception[{CountErrors}]: {errorMessage}");
}
}
diff --git a/AsbCloudApp/Data/DailyReport/BhaDto.cs b/AsbCloudApp/Data/DailyReport/BhaDto.cs
deleted file mode 100644
index b39ba11c..00000000
--- a/AsbCloudApp/Data/DailyReport/BhaDto.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-namespace AsbCloudApp.Data.DailyReport
-{
- ///
- /// блок КНБК
- ///
- public class BhaDto : ItemInfoDto
- {
- ///
- /// КНБК описание
- ///
- public string BHADescription { get; set; } = string.Empty;
-
- ///
- /// Бурение с наращиваниями в инт. 2195-2763м. Время начала
- ///
- public string ExtensionDrillingOneBegin{ get; set; } = string.Empty;
-
- ///
- /// Бурение с наращиваниями в инт. 2195-2763м. Время окончания
- ///
- public string ExtensionDrillingOneFinish { get; set; } = string.Empty;
-
- ///
- /// Промывка. Время начала
- ///
- public string SluiceBegin { get; set; } = string.Empty;
-
- ///
- /// Промывка. Время окончания
- ///
- public string SluiceFinish { get; set; } = string.Empty;
-
- ///
- /// Подъем КНБК. Время начала
- ///
- public string ClimbBegin { get; set; } = string.Empty;
-
- ///
- /// Подъем КНБК. Время окончания
- ///
- public string ClimbFinish { get; set; } = string.Empty;
-
- ///
- /// Спуск КНБК. Время начала
- ///
- public string DescentBegin { get; set; } = string.Empty;
-
- ///
- /// Спуск КНБК. Время окончания
- ///
- public string DescentFinish { get; set; } = string.Empty;
-
- ///
- /// Бурение с наращиваниями в инт. 2763-2850м. Время начала
- ///
- public string ExtensionDrillingTwoBegin { get; set; } = string.Empty;
-
- ///
- /// Бурение с наращиваниями в инт. 2763-2850м. Время окончания
- ///
- public string ExtensionDrillingTwoFinish { get; set; } = string.Empty;
- }
-}
-
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs
new file mode 100644
index 00000000..d51d4b5d
--- /dev/null
+++ b/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs
@@ -0,0 +1,27 @@
+namespace AsbCloudApp.Data.DailyReport.Blocks;
+
+///
+/// РТК
+///
+public class ProcessMapWellDrillingRecordDto
+{
+ ///
+ /// Режим бурения
+ ///
+ public string DrillingMode { get; set; } = null!;
+
+ ///
+ /// Мех. скорость
+ ///
+ public PlanFactDto Rop { get; set; } = new();
+
+ ///
+ /// Глубина ствола
+ ///
+ public double? WellBoreDepth { get; set; }
+
+ ///
+ /// Часы бурения
+ ///
+ public double MechDrillingHours { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/ScheduleRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/ScheduleRecordDto.cs
new file mode 100644
index 00000000..91f11af4
--- /dev/null
+++ b/AsbCloudApp/Data/DailyReport/Blocks/ScheduleRecordDto.cs
@@ -0,0 +1,32 @@
+namespace AsbCloudApp.Data.DailyReport.Blocks;
+
+///
+/// Блок с графиком работы
+///
+public class ScheduleRecordDto
+{
+ ///
+ /// Начало смены
+ ///
+ public TimeDto? ShiftStart { get; set; }
+
+ ///
+ /// Конец смены
+ ///
+ public TimeDto? ShiftEnd { get; set; }
+
+ ///
+ /// Имя бурильщика
+ ///
+ public string? Name { get; set; }
+
+ ///
+ /// Фамилия бурильщика
+ ///
+ public string? Surname { get; set; }
+
+ ///
+ /// Отчество бурильщика
+ ///
+ public string? Patronymic { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignBlockDto.cs
new file mode 100644
index 00000000..d425f360
--- /dev/null
+++ b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignBlockDto.cs
@@ -0,0 +1,17 @@
+namespace AsbCloudApp.Data.DailyReport.Blocks.Sign;
+
+///
+/// Блок с подписями
+///
+public class SignBlockDto : ItemInfoDto
+{
+ ///
+ /// Подпись мастера буровой
+ ///
+ public SignRecordDto? DrillingMaster { get; set; }
+
+ ///
+ /// Подпись супервайзера
+ ///
+ public SignRecordDto? Supervisor { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs
new file mode 100644
index 00000000..2196224e
--- /dev/null
+++ b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs
@@ -0,0 +1,28 @@
+namespace AsbCloudApp.Data.DailyReport.Blocks.Sign;
+
+///
+/// Подпись
+///
+public class SignRecordDto
+{
+ ///
+ /// Имя
+ ///
+ public string Name { get; set; } = null!;
+
+ ///
+ /// Фамилия
+ ///
+ public string Surname { get; set; } = null!;
+
+ ///
+ /// Отчество
+ ///
+ public string? Patronymic { get; set; }
+
+ ///
+ public override string ToString()
+ {
+ return $"{Surname} {Name} {Patronymic}";
+ }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs
new file mode 100644
index 00000000..605b8bdf
--- /dev/null
+++ b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs
@@ -0,0 +1,40 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
+
+///
+/// Блок статистики работы подсистем
+///
+public class SubsystemBlockDto : ItemInfoDto
+{
+ ///
+ /// Длина ствола скважины
+ ///
+ public double? Wellbore { get; set; }
+
+ ///
+ /// Кол-во замеров за сутки
+ ///
+ public double? MeasurementsPerDay { get; set; }
+
+ ///
+ /// Общая плановая мех. скорость
+ ///
+ public double? TotalRopPlan { get; set; }
+
+ ///
+ /// Отклонение по ГГД, сут
+ ///
+ public double? TvgLagDays { get; set; }
+
+ ///
+ /// Рекомендации специалиста
+ ///
+ public string? Comment { get; set; }
+
+ ///
+ /// Подсистемы
+ ///
+ public IEnumerable Subsystems { get; set; } = Enumerable.Empty();
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemParametersDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemParametersDto.cs
new file mode 100644
index 00000000..e02d8714
--- /dev/null
+++ b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemParametersDto.cs
@@ -0,0 +1,25 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
+
+///
+/// Параметры наработки подсистемы
+///
+public class SubsystemParametersDto
+{
+ ///
+ /// Сумма изменения глубин при включенной подсистеме
+ ///
+ public double? SumDepthInterval { get; set; }
+
+ ///
+ /// Наработка подсистемы
+ ///
+ public double? UsedTimeHours { get; set; }
+
+ ///
+ /// Коэффициент использования
+ ///
+ [Range(0, 1)]
+ public double? KUsage { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemRecordDto.cs
new file mode 100644
index 00000000..fab29d57
--- /dev/null
+++ b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemRecordDto.cs
@@ -0,0 +1,22 @@
+namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
+
+///
+/// Модуль подсистемы
+///
+public class SubsystemRecordDto
+{
+ ///
+ /// Название подсистемы
+ ///
+ public string Name { get; set; } = null!;
+
+ ///
+ /// Использование подсистемы за сутки
+ ///
+ public SubsystemParametersDto? UsagePerDay { get; set; }
+
+ ///
+ /// Использование подсистемы за скважину
+ ///
+ public SubsystemParametersDto? UsagePerWell { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceBlockDto.cs
new file mode 100644
index 00000000..f58ed0ac
--- /dev/null
+++ b/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceBlockDto.cs
@@ -0,0 +1,37 @@
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+
+namespace AsbCloudApp.Data.DailyReport.Blocks.TimeBalance;
+
+///
+/// Блок с балансом времени
+///
+public class TimeBalanceBlockDto : ItemInfoDto
+{
+ ///
+ /// Идентификатор секции
+ ///
+ [Range(1, int.MaxValue)]
+ public int IdSection { get; set; }
+
+ ///
+ /// Название секции
+ ///
+ public string? SectionName { get; set; }
+
+ ///
+ /// Проходка скважины
+ ///
+ public PlanFactDto WellDepth { get; set; } = new();
+
+ ///
+ /// Кол-во наращиваний за сутки
+ ///
+ public double? WellOperationSlipsTimeCount { get; set; }
+
+ ///
+ /// Операции на скважине
+ ///
+ public IEnumerable WellOperations { get; set; } = Enumerable.Empty();
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceRecordDto.cs
new file mode 100644
index 00000000..5bdbec9a
--- /dev/null
+++ b/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceRecordDto.cs
@@ -0,0 +1,35 @@
+namespace AsbCloudApp.Data.DailyReport.Blocks.TimeBalance;
+
+///
+/// Операции проводимые на скважине
+///
+public class TimeBalanceRecordDto
+{
+ ///
+ /// Мех. бурение - 1
+ /// Снятие замера, ориентирование - 2
+ /// Наращивание, выход на режим - 3
+ /// Промывка, проработка - 4
+ ///
+ public int IdWellOperation { get; set; }
+
+ ///
+ /// Продолжительность операции, ч
+ ///
+ public PlanFactDto DurationHours { get; set; } = new();
+
+ ///
+ /// Отклонение за секцию
+ ///
+ public double? DrillingDeviationPerSection { get; set; }
+
+ ///
+ /// Отклонение за сутки
+ ///
+ public double? DrillingDeviationPerDay { get; set; }
+
+ ///
+ /// Причина отклонения
+ ///
+ public string? ReasonDeviation { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/TrajectoryBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/TrajectoryBlockDto.cs
new file mode 100644
index 00000000..39e49b54
--- /dev/null
+++ b/AsbCloudApp/Data/DailyReport/Blocks/TrajectoryBlockDto.cs
@@ -0,0 +1,27 @@
+namespace AsbCloudApp.Data.DailyReport.Blocks;
+
+///
+/// Блок с траекторией скважины
+///
+public class TrajectoryBlockDto
+{
+ ///
+ /// Глубина по стволу
+ ///
+ public double? WellboreDepth { get; set; }
+
+ ///
+ /// Глубина вертикальная
+ ///
+ public double? VerticalDepth { get; set; }
+
+ ///
+ /// Угол зенитный
+ ///
+ public double? ZenithAngle { get; set; }
+
+ ///
+ /// Азимут Географ.
+ ///
+ public double? AzimuthGeo { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs
new file mode 100644
index 00000000..f12fd6f3
--- /dev/null
+++ b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs
@@ -0,0 +1,20 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace AsbCloudApp.Data.DailyReport.Blocks.WellOperation;
+
+///
+/// Блок с операциями проводимыми на скважине
+///
+public class WellOperationBlockDto
+{
+ ///
+ /// Продолжительность бурения за секцию
+ ///
+ public double SectionDrillingHours { get; set; }
+
+ ///
+ /// Операции проводимые на скважине
+ ///
+ public IEnumerable WellOperations { get; set; } = Enumerable.Empty();
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationRecordDto.cs
new file mode 100644
index 00000000..1d627282
--- /dev/null
+++ b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationRecordDto.cs
@@ -0,0 +1,17 @@
+namespace AsbCloudApp.Data.DailyReport.Blocks.WellOperation;
+
+///
+/// Операция на скважине
+///
+public class WellOperationRecordDto
+{
+ ///
+ /// Название категории
+ ///
+ public string? CategoryName { get; set; }
+
+ ///
+ /// Продолжительность операции
+ ///
+ public double? DurationHours { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/DailyReportDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportDto.cs
index 3ba55718..0caeea30 100644
--- a/AsbCloudApp/Data/DailyReport/DailyReportDto.cs
+++ b/AsbCloudApp/Data/DailyReport/DailyReportDto.cs
@@ -1,45 +1,108 @@
using System;
+using System.Collections.Generic;
+using System.Linq;
+using AsbCloudApp.Data.DailyReport.Blocks;
+using AsbCloudApp.Data.DailyReport.Blocks.Sign;
+using AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
+using AsbCloudApp.Data.DailyReport.Blocks.TimeBalance;
+using AsbCloudApp.Data.DailyReport.Blocks.WellOperation;
-namespace AsbCloudApp.Data.DailyReport
+namespace AsbCloudApp.Data.DailyReport;
+
+///
+/// Суточный отчёт
+///
+public class DailyReportDto : IId,
+ IWellRelated
{
- ///
- /// Блоки для формирования суточного рапорта
- ///
- public class DailyReportDto
- {
- ///
- /// дата отчёта
- ///
- public DateOnly StartDate { get; set; }
+ ///
+ public int Id { get; set; }
- ///
- /// блок заголовка
- ///
- public HeadDto Head { get; set; } = new();
+ ///
+ public int IdWell { get; set; }
- ///
- /// блок КНБК
- ///
- public BhaDto Bha { get; set; } = new();
+ ///
+ /// Название скважины
+ ///
+ public string WellCaption { get; set; } = null!;
- ///
- /// блок безметражные работы
- ///
- public NoDrillingDto NoDrilling { get; set; } = new();
+ ///
+ /// Название типа скважины
+ ///
+ public string? WellType { get; set; }
- ///
- /// блок баланса времени
- ///
- public TimeBalanceDto TimeBalance { get; set; } = new();
+ ///
+ /// Название куста
+ ///
+ public string? Cluster { get; set; }
- ///
- /// блок САУБ
- ///
- public SaubDto Saub { get; set; } = new();
+ ///
+ /// Заказчик
+ ///
+ public string? Customer { get; set; }
- ///
- /// блок подписи
- ///
- public SignDto Sign { get; set; } = new();
- }
-}
+ ///
+ /// Подрядчик
+ ///
+ public string? Contractor { get; set; }
+
+ ///
+ /// Месторождение
+ ///
+ public string? Deposit { get; set; }
+
+ ///
+ /// Глубина забоя на дату начала интервала
+ ///
+ public double? DepthStart { get; set; }
+
+ ///
+ /// Глубина забоя на дату окончания интервала
+ ///
+ public double? DepthEnd { get; set; }
+
+ ///
+ /// Дата формирования отчёта
+ ///
+ public DateTime Date { get; set; }
+
+ ///
+ /// Дата последнего обновления
+ ///
+ public DateTime? DateLastUpdate { get; set; }
+
+ ///
+ /// Блок фактической траектории
+ ///
+ public TrajectoryBlockDto TrajectoryBlock { get; set; } = null!;
+
+ ///
+ /// Фактические операции
+ ///
+ public WellOperationBlockDto FactWellOperationBlock { get; set; } = null!;
+
+ ///
+ /// Баланс времени
+ ///
+ public TimeBalanceBlockDto? TimeBalanceBlock { get; set; }
+
+ ///
+ /// Наработка подсистем
+ ///
+ public SubsystemBlockDto? SubsystemBlock { get; set; }
+
+ ///
+ /// Подпись
+ ///
+ public SignBlockDto? SignBlock { get; set; }
+
+ ///
+ /// Блок расписания
+ ///
+ public IEnumerable ScheduleBlock { get; set; } = Enumerable.Empty();
+
+ ///
+ /// РТК
+ ///
+ public IEnumerable ProcessMapWellDrillingBlock { get; set; } = Enumerable.Empty();
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/HeadDto.cs b/AsbCloudApp/Data/DailyReport/HeadDto.cs
deleted file mode 100644
index 173d4e63..00000000
--- a/AsbCloudApp/Data/DailyReport/HeadDto.cs
+++ /dev/null
@@ -1,110 +0,0 @@
-using System;
-namespace AsbCloudApp.Data.DailyReport
-{
- ///
- /// блок заголовка
- ///
- public class HeadDto : ItemInfoDto
- {
- ///
- /// название скважины
- ///
- public string WellName { get; set; } = string.Empty;
-
- ///
- /// название куста
- ///
- public string ClusterName { get; set; } = string.Empty;
-
- ///
- /// заказчик
- ///
- public string Customer { get; set; } = string.Empty;
-
- ///
- /// подрядчик
- ///
- public string Contractor { get; set; } = string.Empty;
-
- ///
- /// дата рапорта
- ///
- public DateOnly ReportDate { get; set; }
-
- ///
- /// глубина забоя на дату начала интервала
- ///
- public double? WellDepthIntervalStartDate { get; set; }
-
- ///
- /// глубина забоя на дату окончания интервала
- ///
- public double? WellDepthIntervalFinishDate { get; set; }
-
- ///
- /// Глубина забоя по стволу на окончание отчетного периода
- ///
- public double? BottomholeDepth { get; set; }
-
- ///
- /// Глубина забоя по вертикали на дату окончания отчетного периода
- ///
- public double? VerticalDepth { get; set; }
-
- ///
- /// Зенитный угол на дату окончания отчетного периода
- ///
- public double? ZenithAngle { get; set; }
-
- ///
- /// Азимутальный угол на дату окончания отчетного периода
- ///
- public double? AzimuthAngle { get; set; }
-
- ///
- /// ФИО бурильщиков
- ///
- public string FirstDriller { get; set; } = string.Empty;
-
- ///
- /// ФИО бурильщиков
- ///
- public string SecondDriller { get; set; } = string.Empty;
-
- ///
- /// Время работы АПД
- ///
- public double? WorkTimeSAUB { get; set; }
-
- ///
- /// Время работы спин мастер
- ///
- public double? WorkTimeSpinMaster { get; set; }
-
- ///
- /// Время работы torqueMaster
- ///
- public double? WorkTimeTorkMaster { get; set; }
-
- ///
- /// количество метров пробуренных с включенным АПД
- ///
- public double? PenetrationSAUB { get; set; }
-
- ///
- /// количество метров пробуренных с включенным Спин мастер
- ///
- public double? PenetrationSpinMaster { get; set; }
-
- ///
- /// количество метров пробуренных с включенным torqueMaster
- ///
- public double? PenetrationTorkMaster { get; set; }
-
- ///
- /// Количество запусков МСЕ
- ///
- public int CountLaunchesMSE { get; set; }
- }
-}
-
diff --git a/AsbCloudApp/Data/DailyReport/NoDrillingDto.cs b/AsbCloudApp/Data/DailyReport/NoDrillingDto.cs
deleted file mode 100644
index ff08eb2f..00000000
--- a/AsbCloudApp/Data/DailyReport/NoDrillingDto.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-namespace AsbCloudApp.Data.DailyReport
-{
- ///
- /// блок безметражные работы
- ///
- public class NoDrillingDto : ItemInfoDto
- {
- ///
- /// Нормативное время на одну операцию по подготовке ствола скважины к наращиванию
- ///
- public double? StandardTimeBarrelPreparation { get; set; }
-
- ///
- /// Нормативное время на одну операцию по наращиванию
- ///
- public double? StandardTimeExtension { get; set; }
-
- ///
- /// Фактическое время проработок при подготовке ствола скважины к наращиванию.
- ///
- public double? ActualTimeBarrelPreparation { get; set; }
-
- ///
- /// Фактическое время наращиваний
- ///
- public double? ActualTimeExtension { get; set; }
- }
-}
-
diff --git a/AsbCloudApp/Data/DailyReport/SaubDto.cs b/AsbCloudApp/Data/DailyReport/SaubDto.cs
deleted file mode 100644
index b59ef9ff..00000000
--- a/AsbCloudApp/Data/DailyReport/SaubDto.cs
+++ /dev/null
@@ -1,107 +0,0 @@
-using System.Collections.Generic;
-
-namespace AsbCloudApp.Data.DailyReport
-{
- ///
- /// блок САУБ
- ///
- public class SaubDto : ItemInfoDto
- {
- ///
- /// Режимы бурения в роторе
- ///
- public string RotorDrillingModes { get; set; } = string.Empty;
-
- ///
- /// режимы бурения в слайде
- ///
- public string SlideDrillingModes { get; set; } = string.Empty;
-
- ///
- /// Количество метров пробуренных в роторе за отчетный период
- ///
- public double? PenetrationInRotor { get; set; }
-
- ///
- /// Количество часов бурения в роторе за отчетный период
- ///
- public double? NumberDrillingHours { get; set; }
-
- ///
- /// средний диф перепад в роторе за отчетный период
- ///
- public double? AVGDiffDropRotor { get; set; }
-
- ///
- /// количество метров пробуренных в слайде за отчетный период
- ///
- public double? PenetrationInSlide { get; set; }
-
- ///
- /// время бурения в роторе за отчетный период
- ///
- public double? DrillingTimeInRotor { get; set; }
-
- ///
- /// средний диф. перепад в слайде за отчетный период
- ///
- public double? AVGDiffPressureSlide { get; set; }
-
- ///
- /// Плановая МСП за секцию
- ///
- public double? SectionROPPlan { get; set; }
-
- ///
- /// Общее время бурения за секцию
- ///
- public double? SectionDrillingTimeTotal { get; set; }
-
- ///
- /// Общая проходка за секцию
- ///
- public double? SectionPenetrationTotal { get; set; }
-
- ///
- /// Количество наращиваний за отчетный период
- ///
- public int ExtensionsCount { get; set; }
-
- ///
- /// Отклонение относительно ГГД
- ///
- public double? DeviationFromTVD { get; set; }
-
- ///
- /// указываются все причины, которые влияют на снижение МСП.
- ///
- public string DeclinesReasonsROP { get; set; } = string.Empty;
-
- ///
- /// Увеличение мех скорости за секцию %
- ///
- public string IncreaseSpeedSection { get; set; } = string.Empty;
-
- ///
- /// Увеличение мех скорости за сутки %
- ///
- public string IncreaseSpeedDay { get; set; } = string.Empty;
-
- ///
- /// Сокращение времени бурения за секцию, ч
- ///
- public string ReductionTimeDrilling { get; set; } = string.Empty;
-
- ///
- /// Ротор/Слайд %
- ///
- public string RotorSlidePercent { get; set; } = string.Empty;
-
- ///
- /// МСП
- ///
- public string MspSection { get; set; } = string.Empty;
-
- }
-}
-
diff --git a/AsbCloudApp/Data/DailyReport/SignDto.cs b/AsbCloudApp/Data/DailyReport/SignDto.cs
deleted file mode 100644
index f6726bb7..00000000
--- a/AsbCloudApp/Data/DailyReport/SignDto.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-namespace AsbCloudApp.Data.DailyReport
-{
- ///
- /// блок подписи
- ///
- public class SignDto : ItemInfoDto
- {
- ///
- /// ФИО Мастера буровой
- ///
- public string DrillingMaster { get; set; } = null!;
-
- ///
- /// ФИО супервайзера
- ///
- public string Supervisor { get; set; } = null!;
- }
-}
-
diff --git a/AsbCloudApp/Data/DailyReport/TimeBalanceDto.cs b/AsbCloudApp/Data/DailyReport/TimeBalanceDto.cs
deleted file mode 100644
index 855d5fd7..00000000
--- a/AsbCloudApp/Data/DailyReport/TimeBalanceDto.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System.Collections.Generic;
-
-namespace AsbCloudApp.Data.DailyReport
-{
-
- ///
- /// Блок баланса времени
- ///
- public class TimeBalanceDto : ItemInfoDto
- {
- ///
- /// Статистика по операциям
- ///
- public Dictionary OperationsStat { get; set; } = new Dictionary();
-
- }
-}
-
diff --git a/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingDto.cs b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingDto.cs
index 49a96faf..aba5593f 100644
--- a/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingDto.cs
+++ b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingDto.cs
@@ -7,92 +7,92 @@ namespace AsbCloudApp.Data.ProcessMaps.Report;
///
public class ProcessMapReportWellDrillingDto
{
- ///
- /// Идентификатор скважины
- ///
- public int IdWell { get; set; }
+ ///
+ /// Идентификатор скважины
+ ///
+ public int IdWell { get; set; }
- ///
- /// Id секции скважины
- ///
- public int IdWellSectionType { get; set; }
+ ///
+ /// Id секции скважины
+ ///
+ public int IdWellSectionType { get; set; }
- ///
- /// Название секции скважины
- ///
- public string WellSectionTypeName { get; set; } = null!;
+ ///
+ /// Название секции скважины
+ ///
+ public string WellSectionTypeName { get; set; } = null!;
- ///
- /// Глубина по стволу от, м
- ///
- /// на начало интервала
- ///
- ///
- public double DepthStart { get; set; }
+ ///
+ /// Глубина по стволу от, м
+ ///
+ /// на начало интервала
+ ///
+ ///
+ public double DepthStart { get; set; }
- ///
- /// Глубина по стволу до, м
- ///
- /// на конец интервала
- ///
- ///
- public double DepthEnd { get; set; }
+ ///
+ /// Глубина по стволу до, м
+ ///
+ /// на конец интервала
+ ///
+ ///
+ public double DepthEnd { get; set; }
- ///
- /// Дата/ время
- ///
- /// на начало интервала
- ///
- ///
- public DateTime DateStart { get; set; }
+ ///
+ /// Дата/ время
+ ///
+ /// на начало интервала
+ ///
+ ///
+ public DateTime DateStart { get; set; }
- ///
- /// Время мех бурения, ч
- ///
- public double MechDrillingHours { get; set; }
+ ///
+ /// Время мех бурения, ч
+ ///
+ public double MechDrillingHours { get; set; }
- ///
- /// Режим бурения (Ротор/слайд/ручной)
- ///
- public string DrillingMode { get; set; } = null!;
+ ///
+ /// Режим бурения (Ротор/слайд/ручной)
+ ///
+ public string DrillingMode { get; set; } = null!;
- ///
- /// Проходка, м
- ///
- public double? DeltaDepth { get; set; }
+ ///
+ /// Проходка, м
+ ///
+ public double? DeltaDepth { get; set; }
- ///
- /// Перепад давления, атм
- ///
- public ProcessMapReportWellDrillingParamsDto PressureDiff { get; set; } = new();
+ ///
+ /// Перепад давления, атм
+ ///
+ public ProcessMapReportWellDrillingParamsDto PressureDiff { get; set; } = new();
- ///
- /// Нагрузка, т
- ///
- public ProcessMapReportWellDrillingParamsDto AxialLoad { get; set; } = new();
+ ///
+ /// Нагрузка, т
+ ///
+ public ProcessMapReportWellDrillingParamsDto AxialLoad { get; set; } = new();
- ///
- /// Момент на ВСП, кНхМ
- ///
- public ProcessMapReportWellDrillingParamsDto TopDriveTorque { get; set; } = new();
+ ///
+ /// Момент на ВСП, кНхМ
+ ///
+ public ProcessMapReportWellDrillingParamsDto TopDriveTorque { get; set; } = new();
- ///
- /// Ограничение скорости, м/ч
- ///
- public ProcessMapReportWellDrillingParamsDto SpeedLimit { get; set; } = new();
+ ///
+ /// Ограничение скорости, м/ч
+ ///
+ public ProcessMapReportWellDrillingParamsDto SpeedLimit { get; set; } = new();
- ///
- /// Процент использования системы АПД план, %
- ///
- public double UsagePlan { get; set; }
+ ///
+ /// Процент использования системы АПД план, %
+ ///
+ public double UsagePlan { get; set; }
- ///
- /// Процент использования системы АПД факт, %
- ///
- public double UsageFact { get; set; }
+ ///
+ /// Процент использования системы АПД факт, %
+ ///
+ public double UsageFact { get; set; }
- ///
- /// Фактическая механическая скорость, м/ч
- ///
- public double? Rop { get; set; }
+ ///
+ /// Механическая скорость, м/ч
+ ///
+ public PlanFactDto Rop { get; set; }
}
\ No newline at end of file
diff --git a/AsbCloudApp/Repositories/IDailyReportRepository.cs b/AsbCloudApp/Repositories/IDailyReportRepository.cs
new file mode 100644
index 00000000..6e59941d
--- /dev/null
+++ b/AsbCloudApp/Repositories/IDailyReportRepository.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using AsbCloudApp.Data.DailyReport;
+using AsbCloudApp.Requests;
+using AsbCloudApp.Services;
+
+namespace AsbCloudApp.Repositories;
+
+///
+/// Суточные отчёты
+///
+public interface IDailyReportRepository : ICrudRepository
+{
+ ///
+ /// Получить список суточный отчёт по скважине
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task> GetAsync(int idWell, FileReportRequest request, CancellationToken cancellationToken);
+
+ ///
+ /// Получить суточный отчёт
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task GetOrDefaultAsync(int idWell, DateTime date, CancellationToken cancellationToken);
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Repositories/ITrajectoryFactRepository.cs b/AsbCloudApp/Repositories/ITrajectoryFactRepository.cs
index 95e991f5..79838333 100644
--- a/AsbCloudApp/Repositories/ITrajectoryFactRepository.cs
+++ b/AsbCloudApp/Repositories/ITrajectoryFactRepository.cs
@@ -1,16 +1,23 @@
-using AsbCloudApp.Data;
-using AsbCloudApp.Data.WITS;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
+using AsbCloudApp.Data;
+using AsbCloudApp.Requests;
namespace AsbCloudApp.Repositories
{
- ///
- /// CRUD для работы с фактической траекторией из клиента
- ///
- ///
- public interface ITrajectoryFactRepository : ITrajectoryRepository
- {
- }
-}
+ ///
+ /// CRUD для работы с фактической траекторией из клиента
+ ///
+ ///
+ public interface ITrajectoryFactRepository : ITrajectoryRepository
+ {
+ ///
+ /// Получить траектории скважины
+ ///
+ ///
+ ///
+ ///
+ Task> GetAsync(TrajectoryGeoFactRequest request, CancellationToken token);
+ }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Requests/TrajectoryFactRequest.cs b/AsbCloudApp/Requests/TrajectoryFactRequest.cs
new file mode 100644
index 00000000..c0169fd5
--- /dev/null
+++ b/AsbCloudApp/Requests/TrajectoryFactRequest.cs
@@ -0,0 +1,24 @@
+using System;
+
+namespace AsbCloudApp.Requests;
+
+///
+/// Запрос для получения фактической траектории
+///
+public class TrajectoryGeoFactRequest : RequestBase
+{
+ ///
+ /// Идентификатор скважины
+ ///
+ public int IdWell { get; set; }
+
+ ///
+ /// Больше или равно дате
+ ///
+ public DateTime? GeDate { get; set; }
+
+ ///
+ /// Меньше или равно дате
+ ///
+ public DateTime? LeDate { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportService.cs b/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportService.cs
deleted file mode 100644
index 979f948c..00000000
--- a/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportService.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.IO;
-using System.Threading;
-using System.Threading.Tasks;
-using AsbCloudApp.Data;
-using AsbCloudApp.Data.AutogeneratedDailyReport;
-using AsbCloudApp.Requests;
-
-namespace AsbCloudApp.Services.AutoGeneratedDailyReports;
-
-///
-/// Сервис для работы с авто-генерируемыми суточными отчётами
-///
-public interface IAutoGeneratedDailyReportService
-{
- ///
- /// Список файлов суточных отчётов
- ///
- ///
- ///
- ///
- ///
- Task> GetListAsync(int idWell,
- FileReportRequest request,
- CancellationToken cancellationToken);
-
- ///
- /// Генерация файла с отчётом
- ///
- ///
- ///
- ///
- ///
- Task<(string fileName, Stream stream)> GenerateAsync(int idWell, DateOnly reportDate,
- CancellationToken cancellationToken);
-
- ///
- /// Получение диапазона дат
- ///
- ///
- ///
- ///
- Task GetDatesRangeAsync(int idWell, CancellationToken cancellationToken);
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/DailyReport/IDailyReportExportService.cs b/AsbCloudApp/Services/DailyReport/IDailyReportExportService.cs
new file mode 100644
index 00000000..fb9a897a
--- /dev/null
+++ b/AsbCloudApp/Services/DailyReport/IDailyReportExportService.cs
@@ -0,0 +1,21 @@
+using System;
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace AsbCloudApp.Services.DailyReport;
+
+///
+/// Сервис экспорта суточного отчёта
+///
+public interface IDailyReportExportService
+{
+ ///
+ /// Экспортировать
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task<(string FileName, Stream File)> ExportAsync(int idWell, DateTime dailyReportDateStart, CancellationToken cancellationToken);
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/DailyReport/IDailyReportService.cs b/AsbCloudApp/Services/DailyReport/IDailyReportService.cs
new file mode 100644
index 00000000..44283a44
--- /dev/null
+++ b/AsbCloudApp/Services/DailyReport/IDailyReportService.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using AsbCloudApp.Data;
+using AsbCloudApp.Data.DailyReport;
+using AsbCloudApp.Requests;
+
+namespace AsbCloudApp.Services.DailyReport;
+
+///
+/// Суточные отчёты
+///
+public interface IDailyReportService
+{
+ ///
+ /// Обновить или создать суточный отчёт
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task UpdateOrInsertAsync(int idWell, DateTime dateDailyReport, int idUser, TBlock editableBlock,
+ CancellationToken cancellationToken)
+ where TBlock : ItemInfoDto;
+
+ ///
+ /// Получить сформированный суточный отчёт
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task GetAsync(int idWell, DateTime dateDailyReport, CancellationToken cancellationToken);
+
+ ///
+ /// Получить список суточных отчётов по скважине
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task> GetAsync(int idWell, FileReportRequest request, CancellationToken cancellationToken);
+
+ ///
+ /// Получить диапазон дат по которым возможно сформировать суточный отчёты
+ ///
+ ///
+ ///
+ ///
+ Task GetDatesRangeAsync(int idWell, CancellationToken cancellationToken);
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/IDailyReportService.cs b/AsbCloudApp/Services/IDailyReportService.cs
deleted file mode 100644
index 66e7bd71..00000000
--- a/AsbCloudApp/Services/IDailyReportService.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using AsbCloudApp.Data;
-using AsbCloudApp.Data.DailyReport;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace AsbCloudApp.Services
-{
- ///
- /// Суточный рапорт (сводка)
- ///
- public interface IDailyReportService
- {
- ///
- /// получить список сформированных рапортов по скважине за период времени
- ///
- ///
- ///
- ///
- ///
- ///
- Task> GetListAsync(int idWell, DateOnly? begin, DateOnly? end, CancellationToken cancellationToken);
-
- ///
- /// Добавить новый рапорт
- ///
- ///
- ///
- ///
- ///
- ///
- Task AddAsync(int idWell, DateOnly startDate, int idUser, CancellationToken token);
-
- ///
- /// Сформировать файл рапорта
- ///
- ///
- ///
- ///
- ///
- Task MakeReportAsync(int idWell, DateOnly date, CancellationToken token);
-
- ///
- /// изменить блок данных для суточного рапорта
- ///
- ///
- ///
- ///
- ///
- ///
- Task UpdateBlockAsync(int idWell, DateOnly startDate, ItemInfoDto dto, CancellationToken token);
- }
-}
diff --git a/AsbCloudApp/Services/IScheduleService.cs b/AsbCloudApp/Services/IScheduleService.cs
index 9a77b7b9..c4c0c1f5 100644
--- a/AsbCloudApp/Services/IScheduleService.cs
+++ b/AsbCloudApp/Services/IScheduleService.cs
@@ -1,5 +1,6 @@
using AsbCloudApp.Data;
using System;
+using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
@@ -10,6 +11,15 @@ namespace AsbCloudApp.Services
///
public interface IScheduleRepository : IRepositoryWellRelated
{
+ ///
+ /// Получить расписание смен
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task> GetAsync(int idWell, DateTime workTime, CancellationToken token);
+
///
/// получить бурильщика по idWell и времени
///
diff --git a/AsbCloudDb/Migrations/20231114051111_Update_DailyReport.Designer.cs b/AsbCloudDb/Migrations/20231114051111_Update_DailyReport.Designer.cs
new file mode 100644
index 00000000..23c75c4b
--- /dev/null
+++ b/AsbCloudDb/Migrations/20231114051111_Update_DailyReport.Designer.cs
@@ -0,0 +1,8916 @@
+//
+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("20231114051111_Update_DailyReport")]
+ partial class Update_DailyReport
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .UseCollation("Russian_Russia.1251")
+ .HasAnnotation("ProductVersion", "6.0.24")
+ .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");
+
+ b.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")
+ .IsRequired()
+ .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")
+ .IsRequired()
+ .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");
+
+ b.HasComment("Контакты");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Date")
+ .HasColumnType("timestamp with time zone")
+ .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");
+
+ b.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");
+
+ b.HasComment("Месторождение");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", 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")
+ .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("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("Id категории операции");
+
+ b.Property("IdReasonOfEnd")
+ .HasColumnType("integer")
+ .HasColumnName("id_reason_of_end")
+ .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");
+
+ b.HasComment("автоматически определенные операции по телеметрии");
+ });
+
+ 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");
+
+ b.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");
+
+ b.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");
+
+ b.HasComment("Drill_test");
+ });
+
+ 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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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");
+
+ b.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 = 529,
+ Description = "Разрешение на получение отчетов drill test",
+ Name = "DrillTestReport.get"
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.PlannedTrajectory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("AzimuthGeo")
+ .HasColumnType("double precision")
+ .HasColumnName("azimuth_geo")
+ .HasComment("Азимут Географ.");
+
+ b.Property("AzimuthMagnetic")
+ .HasColumnType("double precision")
+ .HasColumnName("azimuth_magnetic")
+ .HasComment("Азимут Магнитный");
+
+ b.Property("Comment")
+ .HasColumnType("text")
+ .HasColumnName("comment")
+ .HasComment("Комментарии");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("ID пользователя который внес/изменил запись");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("ID скважины");
+
+ b.Property("Radius")
+ .HasColumnType("double precision")
+ .HasColumnName("radius")
+ .HasComment("Радиус цели");
+
+ b.Property("UpdateDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("update_date")
+ .HasComment("Дата загрузки траектории");
+
+ b.Property("VerticalDepth")
+ .HasColumnType("double precision")
+ .HasColumnName("vertical_depth")
+ .HasComment("Глубина вертикальная");
+
+ b.Property("WellboreDepth")
+ .HasColumnType("double precision")
+ .HasColumnName("wellbore_depth")
+ .HasComment("Глубина по стволу");
+
+ b.Property("ZenithAngle")
+ .HasColumnType("double precision")
+ .HasColumnName("zenith_angle")
+ .HasComment("Угол зенитный");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdUser");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_planned_trajectory");
+
+ b.HasComment("Загрузка плановой траектории");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapWellDrilling", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("AxialLoadLimitMax")
+ .HasColumnType("double precision")
+ .HasColumnName("axial_load_limit_max")
+ .HasComment("Нагрузка, допустимый максимум");
+
+ b.Property("AxialLoadPlan")
+ .HasColumnType("double precision")
+ .HasColumnName("axial_load_plan")
+ .HasComment("Нагрузка, план");
+
+ b.Property("Comment")
+ .HasColumnType("text")
+ .HasColumnName("comment")
+ .HasComment("Комментарий");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Глубина по стволу до, м");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Глубина по стволу от, м");
+
+ b.Property("FlowLimitMax")
+ .HasColumnType("double precision")
+ .HasColumnName("flow_limit_max")
+ .HasComment("Расход, допустимый максимум");
+
+ b.Property("FlowPlan")
+ .HasColumnType("double precision")
+ .HasColumnName("flow_plan")
+ .HasComment("Расход, план");
+
+ b.Property("IdMode")
+ .HasColumnType("integer")
+ .HasColumnName("id_mode")
+ .HasComment("Id режима (1- ротор, 2 слайд)");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("Id пользователя");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("Id скважины");
+
+ b.Property("IdWellSectionType")
+ .HasColumnType("integer")
+ .HasColumnName("id_wellsection_type")
+ .HasComment("Тип секции");
+
+ b.Property("LastUpdate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("last_update")
+ .HasComment("Дата последнего изменения");
+
+ b.Property("PressureLimitMax")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure_limit_max")
+ .HasComment("Перепад давления, допустимый максимум");
+
+ b.Property("PressurePlan")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure_plan")
+ .HasComment("Перепад давления, план");
+
+ b.Property("RopPlan")
+ .HasColumnType("double precision")
+ .HasColumnName("rop_plan")
+ .HasComment("Плановая механическая скорость, м/ч");
+
+ b.Property("TopDriveSpeedLimitMax")
+ .HasColumnType("double precision")
+ .HasColumnName("top_drive_speed_limit_max")
+ .HasComment("Обороты на ВСП, допустимый максимум");
+
+ b.Property("TopDriveSpeedPlan")
+ .HasColumnType("double precision")
+ .HasColumnName("top_drive_speed_plan")
+ .HasComment("Обороты на ВСП, план");
+
+ b.Property("TopDriveTorqueLimitMax")
+ .HasColumnType("double precision")
+ .HasColumnName("top_drive_torque_limit_max")
+ .HasComment("Момент на ВСП, допустимый максимум");
+
+ b.Property("TopDriveTorquePlan")
+ .HasColumnType("double precision")
+ .HasColumnName("top_drive_torque_plan")
+ .HasComment("Момент на ВСП, план");
+
+ b.Property("UsageSaub")
+ .HasColumnType("double precision")
+ .HasColumnName("usage_saub")
+ .HasComment("Плановый процент использования АКБ");
+
+ b.Property("UsageSpin")
+ .HasColumnType("double precision")
+ .HasColumnName("usage_spin")
+ .HasComment("Плановый процент использования spin master");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdUser");
+
+ b.HasIndex("IdWell");
+
+ b.HasIndex("IdWellSectionType");
+
+ b.ToTable("t_process_map_well_drilling");
+
+ b.HasComment("РТК бурение скважины");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapWellReam", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Comment")
+ .HasColumnType("text")
+ .HasColumnName("comment")
+ .HasComment("Комментарий");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Глубина по стволу до, м");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Глубина по стволу от, м");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("Id пользователя");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("Id скважины");
+
+ b.Property