diff --git a/AsbCloud.sln b/AsbCloud.sln
index 147d2337..e4d9f235 100644
--- a/AsbCloud.sln
+++ b/AsbCloud.sln
@@ -9,8 +9,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsbCloudApp", "AsbCloudApp\
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsbCloudInfrastructure", "AsbCloudInfrastructure\AsbCloudInfrastructure.csproj", "{67DBFC52-BAE4-4903-827A-AD0288C292B6}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleApp1", "ConsoleApp1\ConsoleApp1.csproj", "{D04A84E7-5F08-4042-8FB5-476EE49E9D22}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsbCloudDb", "AsbCloudDb\AsbCloudDb.csproj", "{40FBD29B-724B-4496-B5D9-1A5D14102456}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsbCloudWebApi.Tests", "AsbCloudWebApi.Tests\AsbCloudWebApi.Tests.csproj", "{9CF6FBB1-9AF5-45AB-A521-24F11A79B540}"
@@ -35,10 +33,6 @@ Global
{67DBFC52-BAE4-4903-827A-AD0288C292B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{67DBFC52-BAE4-4903-827A-AD0288C292B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{67DBFC52-BAE4-4903-827A-AD0288C292B6}.Release|Any CPU.Build.0 = Release|Any CPU
- {D04A84E7-5F08-4042-8FB5-476EE49E9D22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D04A84E7-5F08-4042-8FB5-476EE49E9D22}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D04A84E7-5F08-4042-8FB5-476EE49E9D22}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D04A84E7-5F08-4042-8FB5-476EE49E9D22}.Release|Any CPU.Build.0 = Release|Any CPU
{40FBD29B-724B-4496-B5D9-1A5D14102456}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{40FBD29B-724B-4496-B5D9-1A5D14102456}.Debug|Any CPU.Build.0 = Debug|Any CPU
{40FBD29B-724B-4496-B5D9-1A5D14102456}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportInfoDto.cs b/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportInfoDto.cs
index 0034879a..22e34cf2 100644
--- a/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportInfoDto.cs
+++ b/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportInfoDto.cs
@@ -5,21 +5,10 @@ namespace AsbCloudApp.Data.AutogeneratedDailyReport;
///
/// Базовая информация о суточном отчёте
///
-public class AutoGeneratedDailyReportInfoDto
+public class AutoGeneratedDailyReportInfoDto : ReportInfoDto
{
- ///
- /// Дата формирования отчёта
- ///
- public DateOnly ReportDate { get; set; }
-
- ///
- /// Название файла
- ///
- public string FileName { get; set; } = null!;
-
- ///
- /// Размер файла
- ///
- public int FileSize { get; set; }
-
+ ///
+ /// Дата формирования отчёта
+ ///
+ public DateOnly ReportDate { get; set; }
}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/BackgroundWorkDto.cs b/AsbCloudApp/Data/BackgroundWorkDto.cs
index b2a3d161..3374148c 100644
--- a/AsbCloudApp/Data/BackgroundWorkDto.cs
+++ b/AsbCloudApp/Data/BackgroundWorkDto.cs
@@ -172,7 +172,7 @@ namespace AsbCloudApp.Data
if (progress.HasValue)
CurrentState.Progress = progress.Value;
- Trace.TraceInformation($"{WorkNameForTrace} state: {newState}");
+ Trace.TraceInformation($"{WorkNameForTrace} state[{100*progress:#}%]: {newState}");
}
///
diff --git a/AsbCloudApp/Data/DrillTestReport/DrillTestReportDataDto.cs b/AsbCloudApp/Data/DrillTestReport/DrillTestReportDataDto.cs
new file mode 100644
index 00000000..ee63bf9b
--- /dev/null
+++ b/AsbCloudApp/Data/DrillTestReport/DrillTestReportDataDto.cs
@@ -0,0 +1,26 @@
+using AsbCloudApp.Data.SAUB;
+using System;
+
+namespace AsbCloudApp.Data.DrillTestReport
+{
+ ///
+ /// Информация о drill test, выгружаемая в отчете
+ ///
+ public class DrillTestReportDataDto
+ {
+ ///
+ /// Данные для отчета
+ ///
+ public DrillTestDto Data { get; set; } = null!;
+
+ ///
+ /// Заголовок отчета
+ ///
+ public string Caption { get; set; } = null!;
+
+ ///
+ /// Дата отчета
+ ///
+ public DateTime Date { get; set; } = DateTime.Now;
+ }
+}
diff --git a/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs b/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs
new file mode 100644
index 00000000..8d3a9244
--- /dev/null
+++ b/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs
@@ -0,0 +1,25 @@
+using System;
+
+namespace AsbCloudApp.Data.DrillTestReport
+{
+ ///
+ /// Базовая информация о drill_test отчёте
+ ///
+ public class DrillTestReportInfoDto : ReportInfoDto
+ {
+ ///
+ /// Идентификатор отчета
+ ///
+ public int Id { get; set; }
+
+ ///
+ /// Проходка
+ ///
+ public float DrillDepth { get; set; }
+
+ ///
+ /// Дата и время
+ ///
+ public DateTime DateTime { get; set; }
+ }
+}
diff --git a/AsbCloudApp/Data/ReportInfoDto.cs b/AsbCloudApp/Data/ReportInfoDto.cs
new file mode 100644
index 00000000..bd55d33c
--- /dev/null
+++ b/AsbCloudApp/Data/ReportInfoDto.cs
@@ -0,0 +1,18 @@
+namespace AsbCloudApp.Data
+{
+ ///
+ /// Справочная информация об отчете
+ ///
+ public class ReportInfoDto
+ {
+ ///
+ /// Название файла
+ ///
+ public string FileName { get; set; } = null!;
+
+ ///
+ /// Размер файла
+ ///
+ public int FileSize { get; set; } = 0;
+ }
+}
diff --git a/AsbCloudApp/Data/SAUB/DrillTestDto.cs b/AsbCloudApp/Data/SAUB/DrillTestDto.cs
new file mode 100644
index 00000000..03f344c2
--- /dev/null
+++ b/AsbCloudApp/Data/SAUB/DrillTestDto.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace AsbCloudApp.Data.SAUB
+{
+ ///
+ /// DTO для описания записи drill_test
+ ///
+ public class DrillTestDto
+ {
+ ///
+ /// Идентификатор drill test
+ ///
+ public int Id { get; set; }
+
+ ///
+ /// Время начала drill test
+ ///
+ public DateTimeOffset TimeStampStart { get; set; }
+
+ ///
+ /// Глубина начала drill test
+ ///
+ public float DepthStart { get; set; }
+
+ ///
+ /// Связанная с drill_test телеметрия
+ ///
+ public TelemetryDto? Telemetry { get; set; }
+
+ ///
+ /// Параметры теста
+ ///
+ public IEnumerable Params { get; set; } = Enumerable.Empty();
+ }
+}
diff --git a/AsbCloudApp/Data/SAUB/DrillTestParamsDto.cs b/AsbCloudApp/Data/SAUB/DrillTestParamsDto.cs
new file mode 100644
index 00000000..f8d9d168
--- /dev/null
+++ b/AsbCloudApp/Data/SAUB/DrillTestParamsDto.cs
@@ -0,0 +1,38 @@
+namespace AsbCloudApp.Data.SAUB
+{
+ ///
+ /// Параметры Drill Test
+ ///
+ public class DrillTestParamsDto
+ {
+ ///
+ /// Шаг
+ ///
+ public int Step { get; set; }
+
+ ///
+ /// Нагрузка
+ ///
+ public float? Workload { get; set; }
+
+ ///
+ /// Заданная скорость
+ ///
+ public float? Speed { get; set; }
+
+ ///
+ /// Скорость проходки
+ ///
+ public float? DepthSpeed { get; set; }
+
+ ///
+ /// Время бурения шага, сек
+ ///
+ public float? TimeDrillStep { get; set; }
+
+ ///
+ /// Глубина бурения шага
+ ///
+ public float? DepthDrillStep { get; set; }
+ }
+}
diff --git a/AsbCloudApp/Data/SAUB/EventDto.cs b/AsbCloudApp/Data/SAUB/EventDto.cs
index d8103d17..f426c4eb 100644
--- a/AsbCloudApp/Data/SAUB/EventDto.cs
+++ b/AsbCloudApp/Data/SAUB/EventDto.cs
@@ -21,7 +21,7 @@ namespace AsbCloudApp.Data.SAUB
///
/// id категории события
///
- [Range(1, int.MaxValue, ErrorMessage = "Id категории события не может быть отрицательным")]
+ [Range(0, int.MaxValue, ErrorMessage = "Id категории события не может быть отрицательным")]
public int IdCategory { get; set; }
///
@@ -32,7 +32,7 @@ namespace AsbCloudApp.Data.SAUB
///
/// тип определения наступления события
///
- [Range(1, int.MaxValue, ErrorMessage = "Id типа события не может быть отрицательным")]
+ [Range(0, int.MaxValue, ErrorMessage = "Id типа события не может быть отрицательным")]
public int EventType { get; set; }
///
diff --git a/AsbCloudApp/Data/SectionByOperationsDto.cs b/AsbCloudApp/Data/SectionByOperationsDto.cs
index 80d2a3b4..8123ad11 100644
--- a/AsbCloudApp/Data/SectionByOperationsDto.cs
+++ b/AsbCloudApp/Data/SectionByOperationsDto.cs
@@ -44,4 +44,5 @@ public class SectionByOperationsDto
/// Дата после завершения последней операции операции в секции
///
public DateTimeOffset DateEnd { get; set; }
+ public string Caption { get; set; }
}
diff --git a/AsbCloudApp/Data/WellboreDto.cs b/AsbCloudApp/Data/WellboreDto.cs
index c153b14f..68c5695b 100644
--- a/AsbCloudApp/Data/WellboreDto.cs
+++ b/AsbCloudApp/Data/WellboreDto.cs
@@ -10,7 +10,7 @@ public class WellboreDto
///
/// Скважина
///
- public WellWithTimezoneDto Well { get; set; } = null!;
+ public WellDto Well { get; set; } = null!;
///
/// Идентификатор
diff --git a/AsbCloudApp/Exceptions/ArgumentInvalidException.cs b/AsbCloudApp/Exceptions/ArgumentInvalidException.cs
index 4fe150e3..5db63313 100644
--- a/AsbCloudApp/Exceptions/ArgumentInvalidException.cs
+++ b/AsbCloudApp/Exceptions/ArgumentInvalidException.cs
@@ -1,4 +1,6 @@
using System;
+using System.Collections.Generic;
+using System.Linq;
namespace AsbCloudApp.Exceptions
{
@@ -8,9 +10,9 @@ namespace AsbCloudApp.Exceptions
public class ArgumentInvalidException : Exception
{
///
- /// название аргумента
+ /// словарь с ошибками, где ключ - имя аргумента, а значение - массив из одного сообщения
///
- public string ParamName { get; } = string.Empty;
+ public IDictionary ErrorState { get; } = null!;
///
/// конструктор
@@ -20,7 +22,20 @@ namespace AsbCloudApp.Exceptions
public ArgumentInvalidException(string paramName, string message)
: base(message)
{
- ParamName = paramName;
+ ErrorState = new Dictionary() {
+ { paramName, new[]{ message } }
+ };
+ }
+
+ ///
+ /// конструктор
+ ///
+ ///
+ ///
+ public ArgumentInvalidException(string[] paramsNames, string message)
+ : base(message)
+ {
+ ErrorState = paramsNames.ToDictionary(paramName => paramName, item => new[] { message });
}
}
}
diff --git a/AsbCloudApp/Repositories/IDrillTestRepository.cs b/AsbCloudApp/Repositories/IDrillTestRepository.cs
new file mode 100644
index 00000000..9c7a2f50
--- /dev/null
+++ b/AsbCloudApp/Repositories/IDrillTestRepository.cs
@@ -0,0 +1,41 @@
+using AsbCloudApp.Data.SAUB;
+using AsbCloudApp.Requests;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace AsbCloudApp.Repositories
+{
+ ///
+ /// репозиторий по работе с данными drill_test
+ ///
+ public interface IDrillTestRepository
+ {
+ ///
+ /// Получить данные drill_test в соответствии с параметрами запроса
+ ///
+ /// ключ телеметрии
+ /// запрос
+ ///
+ ///
+ Task> GetAllAsync(int idTelemetry, FileReportRequest request, CancellationToken cancellationToken);
+
+ ///
+ /// Получить запись drill_test
+ ///
+ /// ключ телеметрии
+ /// ключ записи drill_test
+ ///
+ ///
+ Task GetAsync(int idTelemetry, int id, CancellationToken cancellationToken);
+
+ ///
+ /// Сохранить данные drill_test
+ ///
+ /// ключ телеметрии
+ /// запись drill test
+ ///
+ ///
+ Task SaveDataAsync(int idTelemetry, DrillTestDto dto, CancellationToken token);
+ }
+}
diff --git a/AsbCloudApp/Repositories/ITelemetryDataCache.cs b/AsbCloudApp/Repositories/ITelemetryDataCache.cs
new file mode 100644
index 00000000..78f7008b
--- /dev/null
+++ b/AsbCloudApp/Repositories/ITelemetryDataCache.cs
@@ -0,0 +1,69 @@
+using AsbCloudApp.Data;
+using AsbCloudApp.Requests;
+using System;
+using System.Collections.Generic;
+
+namespace AsbCloudApp.Repositories
+{
+ ///
+ /// Хранилище кеша
+ ///
+ ///
+ public interface ITelemetryDataCache where TDto : ITelemetryData
+ {
+ ///
+ /// добавить в кеш чанк записей по телеметрии
+ ///
+ ///
+ ///
+ void AddRange(int idTelemetry, IEnumerable range);
+
+ ///
+ /// вернуть последнюю записть
+ ///
+ ///
+ ///
+ TDto? GetLastOrDefault(int idTelemetry);
+
+ ///
+ /// Получить кешированые записи
+ ///
+ ///
+ ///
+ ///
+ /// приблизительное кол-во возвращаемых записей после их прореживания
+ ///
+ IEnumerable? GetOrDefault(int idTelemetry, DateTime dateBegin, double intervalSec = 600, int approxPointsCount = 1024);
+
+ ///
+ /// Получить кешированые записи
+ ///
+ ///
+ ///
+ ///
+ IEnumerable? GetOrDefault(int idTelemetry, TelemetryDataRequest request);
+
+ ///
+ /// Диапазон дат находящийся в кеше
+ ///
+ ///
+ ///
+ DatesRangeDto? GetOrDefaultCachedaDateRange(int idTelemetry);
+
+ ///
+ /// Получить диапазон дат телеметрии.
+ /// Дата первой записи телеметрии храниться отдельно и запоняется при инициализации
+ ///
+ ///
+ ///
+ DatesRangeDto? GetOrDefaultDataDateRange(int idTelemetry);
+
+ ///
+ /// Получение первой и последней записи телеметрии.
+ /// Первая запись телеметрии храниться отдельно и запоняется при инициализации
+ ///
+ ///
+ ///
+ (TDto First, TDto Last)? GetOrDefaultFirstLast(int idTelemetry);
+ }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Requests/AutoGeneratedDailyReportRequest.cs b/AsbCloudApp/Requests/AutoGeneratedDailyReportRequest.cs
deleted file mode 100644
index 5e7dae7c..00000000
--- a/AsbCloudApp/Requests/AutoGeneratedDailyReportRequest.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System;
-
-namespace AsbCloudApp.Requests;
-
-///
-/// Параметры запроса для получения авто-генерируемых суточных отчётов
-///
-public class AutoGeneratedDailyReportRequest : RequestBase
-{
- ///
- /// Дата начала периода
- ///
- public DateOnly? StartDate { get; set; }
-
- ///
- /// Дата конца периода
- ///
- public DateOnly? FinishDate { get; set; }
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Requests/FileReportRequest.cs b/AsbCloudApp/Requests/FileReportRequest.cs
new file mode 100644
index 00000000..a9984016
--- /dev/null
+++ b/AsbCloudApp/Requests/FileReportRequest.cs
@@ -0,0 +1,19 @@
+using System;
+
+namespace AsbCloudApp.Requests;
+
+///
+/// Параметры запроса для получения отчетов (файлов)
+///
+public class FileReportRequest : RequestBase
+{
+ ///
+ /// Дата начала периода
+ ///
+ public DateOnly? GeDate { get; set; }
+
+ ///
+ /// Дата конца периода
+ ///
+ public DateOnly? LeDate { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs b/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs
index 02db1042..26aae17a 100644
--- a/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs
+++ b/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs
@@ -84,7 +84,7 @@ namespace AsbCloudApp.Requests
{
if (LtDepth < GtDepth)
yield return new ValidationResult(
- $"{nameof(LtDepth)} должно быть больше {nameof(GtDepth)}. ({LtDepth:O} < {GtDepth:O})",
+ $"{nameof(LtDepth)} должно быть больше {nameof(GtDepth)}. ({LtDepth} < {GtDepth})",
new[] { nameof(LtDepth), nameof(GtDepth) });
}
diff --git a/AsbCloudApp/Requests/WellboreRequest.cs b/AsbCloudApp/Requests/WellboreRequest.cs
deleted file mode 100644
index 32b4cbe2..00000000
--- a/AsbCloudApp/Requests/WellboreRequest.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System.Collections.Generic;
-
-namespace AsbCloudApp.Requests;
-
-///
-/// Параметры запроса для ствола скважины
-///
-public class WellboreRequest : RequestBase
-{
- ///
- /// Пары идентификаторов скважины и секции
- ///
- public IEnumerable<(int idWell, int? idSection)> Ids { get; set; } = null!;
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportMakerService.cs b/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportMakerService.cs
deleted file mode 100644
index 8571e356..00000000
--- a/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportMakerService.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System.IO;
-using System.Threading;
-using System.Threading.Tasks;
-using AsbCloudApp.Data.AutogeneratedDailyReport;
-
-namespace AsbCloudApp.Services.AutoGeneratedDailyReports;
-
-///
-/// Сервис для генерации файлов авто-генерируемых суточный отчётов
-///
-public interface IAutoGeneratedDailyReportMakerService
-{
- ///
- /// Генерация файла
- ///
- ///
- ///
- ///
- Task MakeReportAsync(AutoGeneratedDailyReportDto report, CancellationToken cancellationToken);
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportService.cs b/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportService.cs
index 13bdb1ea..979f948c 100644
--- a/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportService.cs
+++ b/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportService.cs
@@ -21,7 +21,7 @@ public interface IAutoGeneratedDailyReportService
///
///
Task> GetListAsync(int idWell,
- AutoGeneratedDailyReportRequest request,
+ FileReportRequest request,
CancellationToken cancellationToken);
///
diff --git a/AsbCloudApp/Services/IDrillTestReportService.cs b/AsbCloudApp/Services/IDrillTestReportService.cs
new file mode 100644
index 00000000..6dd97b83
--- /dev/null
+++ b/AsbCloudApp/Services/IDrillTestReportService.cs
@@ -0,0 +1,35 @@
+using AsbCloudApp.Data;
+using AsbCloudApp.Data.DrillTestReport;
+using AsbCloudApp.Requests;
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace AsbCloudApp.Services
+{
+ ///
+ /// сервис по работе с отчетами drill test
+ ///
+ public interface IDrillTestReportService
+ {
+ ///
+ /// Список файлов drill test
+ ///
+ /// ключ скважины
+ /// параметры запроса
+ ///
+ ///
+ Task> GetListAsync(int idWell,
+ FileReportRequest request,
+ CancellationToken cancellationToken);
+
+ ///
+ /// Генерация файла с отчётом
+ ///
+ /// ключ скважины
+ /// ключ drill test записи
+ ///
+ ///
+ Task<(string fileName, Stream stream)> GenerateAsync(int idWell, int id, CancellationToken cancellationToken);
+ }
+}
diff --git a/AsbCloudApp/Services/IReportMakerService.cs b/AsbCloudApp/Services/IReportMakerService.cs
new file mode 100644
index 00000000..e1269a25
--- /dev/null
+++ b/AsbCloudApp/Services/IReportMakerService.cs
@@ -0,0 +1,19 @@
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace AsbCloudApp.Services;
+
+///
+/// Сервис для генерации файлов отчётов
+///
+public interface IReportMakerService
+{
+ ///
+ /// Генерация файла
+ ///
+ /// модель с данными для построения отчета
+ ///
+ ///
+ Task MakeReportAsync(T report, CancellationToken cancellationToken);
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/IReportService.cs b/AsbCloudApp/Services/IReportService.cs
index 1f4a7d35..85d72020 100644
--- a/AsbCloudApp/Services/IReportService.cs
+++ b/AsbCloudApp/Services/IReportService.cs
@@ -57,5 +57,13 @@ namespace AsbCloudApp.Services
///
///
Task> GetAllReportsByWellAsync(int idWell, CancellationToken token);
+
+ ///
+ /// Удаление отчетов, если превышен их период хранения
+ ///
+ /// период хранения отчетов
+ ///
+ ///
+ Task DeleteAllOldReportsAsync(TimeSpan lifetime, CancellationToken token);
}
}
diff --git a/AsbCloudApp/Services/ITelemetryDataService.cs b/AsbCloudApp/Services/ITelemetryDataService.cs
index a2034c7f..bb40771b 100644
--- a/AsbCloudApp/Services/ITelemetryDataService.cs
+++ b/AsbCloudApp/Services/ITelemetryDataService.cs
@@ -26,17 +26,32 @@ namespace AsbCloudApp.Services
Task> GetAsync(int idWell,
DateTime dateBegin = default, double intervalSec = 600d,
int approxPointsCount = 1024, CancellationToken token = default);
+
+ ///
+ /// Получить данные тех. процесса
+ ///
+ ///
+ ///
+ ///
+ ///
Task> GetAsync(int idWell, TelemetryDataRequest request, CancellationToken token);
///
- /// Получение статистики за период
+ /// Период за который есть данные по скважине в рамках временного интервала
///
///
- ///
- ///
+ ///
+ ///
///
///
- Task GetRangeAsync(int idWell, DateTimeOffset start, DateTimeOffset end, CancellationToken token);
+ Task GetRangeAsync(int idWell, DateTimeOffset geDate, DateTimeOffset? leDate, CancellationToken token);
+
+ ///
+ /// Период за который есть данные по скважине
+ ///
+ ///
+ ///
+ DatesRangeDto? GetRange(int idWell);
///
/// добавить/изменить данные тех. процесса (используется панелью)
diff --git a/AsbCloudApp/Services/IWellboreService.cs b/AsbCloudApp/Services/IWellboreService.cs
index f42485ae..0b577ba5 100644
--- a/AsbCloudApp/Services/IWellboreService.cs
+++ b/AsbCloudApp/Services/IWellboreService.cs
@@ -2,7 +2,6 @@ using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using AsbCloudApp.Data;
-using AsbCloudApp.Requests;
namespace AsbCloudApp.Services;
@@ -11,20 +10,11 @@ namespace AsbCloudApp.Services;
///
public interface IWellboreService
{
- ///
- /// Получение ствола скважины
- ///
- ///
- ///
- ///
- ///
- Task GetWellboreAsync(int idWell, int idSection, CancellationToken cancellationToken);
-
- ///
- /// Получение стволов скважин
- ///
- ///
- ///
- ///
- Task> GetWellboresAsync(WellboreRequest request, CancellationToken cancellationToken);
+ ///
+ /// Получение стволов скважин
+ ///
+ ///
+ ///
+ ///
+ Task> GetWellboresAsync(IEnumerable idsWells, CancellationToken cancellationToken);
}
\ No newline at end of file
diff --git a/AsbCloudDb/EFExtentionsInnitialization.cs b/AsbCloudDb/EFExtentionsInnitialization.cs
new file mode 100644
index 00000000..110a75ae
--- /dev/null
+++ b/AsbCloudDb/EFExtentionsInnitialization.cs
@@ -0,0 +1,50 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Linq;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+
+namespace AsbCloudDb
+{
+ public static class EFExtentionsInnitialization
+ {
+ public static void EnshureCreatedAndMigrated(this DatabaseFacade db)
+ {
+ db.SetCommandTimeout(TimeSpan.FromMinutes(5));
+ if (db.EnsureCreated())
+ {
+ db.CreateMigrationTable();
+ db.WriteMigrationsInfo();
+ }
+ else
+ {
+ db.SetCommandTimeout(TimeSpan.FromMinutes(20));
+ db.Migrate();
+ }
+ }
+
+ private static void CreateMigrationTable(this DatabaseFacade db)
+ {
+ var sqlCreateMigrationTable =
+ $"CREATE TABLE public.\"__EFMigrationsHistory\" " +
+ $"(\"MigrationId\" varchar(150) NOT NULL, " +
+ $" \"ProductVersion\" varchar(32) NOT NULL, " +
+ $" CONSTRAINT \"PK___EFMigrationsHistory\" PRIMARY KEY (\"MigrationId\"));";
+ db.ExecuteSqlRaw(sqlCreateMigrationTable);
+ }
+
+ private static void WriteMigrationsInfo(this DatabaseFacade db)
+ {
+ var efVersion = db.GetType().Assembly.GetName().Version!;
+ var efVersionString = $"{efVersion.Major}.{efVersion.Minor}.{efVersion.Build}";
+
+ var migrations = db.GetPendingMigrations()
+ .Select(migration => $" ('{migration}', '{efVersionString}')");
+
+ var sqlAddLastMigration =
+ $"INSERT INTO public.\"__EFMigrationsHistory\" " +
+ $"(\"MigrationId\", \"ProductVersion\") " +
+ $"VALUES {string.Join(',', migrations)};";
+ db.ExecuteSqlRaw(sqlAddLastMigration);
+ }
+ }
+}
diff --git a/AsbCloudDb/Migrations/20231017094813_Add_Drill_Test.Designer.cs b/AsbCloudDb/Migrations/20231017094813_Add_Drill_Test.Designer.cs
new file mode 100644
index 00000000..1b2cf452
--- /dev/null
+++ b/AsbCloudDb/Migrations/20231017094813_Add_Drill_Test.Designer.cs
@@ -0,0 +1,8803 @@
+//
+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("20231017094813_Add_Drill_Test")]
+ partial class Add_Drill_Test
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .UseCollation("Russian_Russia.1251")
+ .HasAnnotation("ProductVersion", "6.0.7")
+ .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");
+
+ b.Property("Order")
+ .HasColumnType("integer")
+ .HasColumnName("order");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_company_type");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Caption = "Недрапользователь",
+ IsContact = false,
+ Order = 1
+ },
+ new
+ {
+ Id = 2,
+ Caption = "Буровой подрядчик",
+ IsContact = false,
+ Order = 2
+ },
+ new
+ {
+ Id = 3,
+ Caption = "Сервис автоматизации бурения",
+ IsContact = false,
+ Order = 0
+ });
+ });
+
+ 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.DailyReport.DailyReport", b =>
+ {
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("ID скважины");
+
+ b.Property("StartDate")
+ .HasColumnType("date")
+ .HasColumnName("start_date")
+ .HasComment("Дата отчёта");
+
+ b.Property("Info")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("info")
+ .HasComment("Список параметров для отчёта");
+
+ b.HasKey("IdWell", "StartDate")
+ .HasName("t_id_well_date_start_pk");
+
+ 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"
+ });
+ });
+
+ 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("IdWellSectionType")
+ .HasColumnType("integer")
+ .HasColumnName("id_wellsection_type")
+ .HasComment("Тип секции");
+
+ b.Property("LastUpdate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("last_update")
+ .HasComment("Дата последнего изменения");
+
+ b.Property("Pressure")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure")
+ .HasComment("Давление, атм");
+
+ b.Property("Repeats")
+ .HasColumnType("double precision")
+ .HasColumnName("repeats")
+ .HasComment("Количество повторений");
+
+ b.Property("SetpointDrag")
+ .HasColumnType("double precision")
+ .HasColumnName("setpoint_drag")
+ .HasComment("Уставка зятяжки, т");
+
+ b.Property("SetpointTight")
+ .HasColumnType("double precision")
+ .HasColumnName("setpoint_tight")
+ .HasComment("Уставка посадки, т");
+
+ b.Property("SpeedDownward")
+ .HasColumnType("double precision")
+ .HasColumnName("speed_downward")
+ .HasComment("Скорость спуска, м/ч");
+
+ b.Property("SpeedUpward")
+ .HasColumnType("double precision")
+ .HasColumnName("speed_upward")
+ .HasComment("Скорость подъёма, м/ч");
+
+ b.Property("SpinDownward")
+ .HasColumnType("double precision")
+ .HasColumnName("spin_downward")
+ .HasComment("Вращение при движении вниз, об/мин");
+
+ b.Property("SpinUpward")
+ .HasColumnType("double precision")
+ .HasColumnName("spin_upward")
+ .HasComment("Вращение при движении вверх, об/мин");
+
+ b.Property("Torque")
+ .HasColumnType("double precision")
+ .HasColumnName("torque")
+ .HasComment("Момент, кН*м");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdUser");
+
+ b.HasIndex("IdWell");
+
+ b.HasIndex("IdWellSectionType");
+
+ b.ToTable("t_process_map_well_ream");
+
+ b.HasComment("РТК проработка скважины");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b =>
+ {
+ b.Property("IdCompany")
+ .HasColumnType("integer")
+ .HasColumnName("id_company");
+
+ b.Property