From 94ebf6bfb99c99a3dbac2d525cb88720e3e5a75b Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Fri, 17 Jun 2022 13:20:48 +0500 Subject: [PATCH 01/34] =?UTF-8?q?Edit=20daily=20report=20MakerExcel=20-=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BB?= =?UTF-8?q?=D0=BE=D0=B3=D0=B8=D0=BA=D0=B8=20=D0=BF=D0=BE=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=D1=82=D1=87=D0=B5=D1=82?= =?UTF-8?q?=D0=B0=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D0=B8=20=D0=94=D0=A2?= =?UTF-8?q?=D0=9E=20=D0=B8=20=D0=91=D0=94=20=D1=80=D0=B0=D0=B7=D0=B1=D0=B8?= =?UTF-8?q?=D1=82=D1=8B=20=D0=BD=D0=B0=206=20=D0=B1=D0=BB=D0=BE=D0=BA?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=20?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=20DailyReport?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Тестовая таблица в консольном проекте --- AsbCloudApp/AsbCloudApp.csproj | 6 + .../Data/DailyReport/DailyReportBhaDto.cs | 12 + .../DailyReportDimensionlessDto.cs | 27 + .../Data/DailyReport/DailyReportHeadDto.cs | 110 ++++ .../Data/DailyReport/DailyReportSaubDto.cs | 80 +++ .../Data/DailyReport/DailyReportSignDto.cs | 17 + AsbCloudDb/AsbCloudDb.csproj | 3 + ...0211123130153_Add_UserRoles_Permissions.cs | 1 + .../Model/DailyReportDB/DailyReportBha.cs | 12 + .../Model/DailyReportDB/DailyReportDb.cs | 45 ++ .../DailyReportDB/DailyReportDimensionless.cs | 27 + .../Model/DailyReportDB/DailyReportHead.cs | 107 ++++ .../Model/DailyReportDB/DailyReportSaub.cs | 80 +++ .../Model/DailyReportDB/DailyReportSign.cs | 17 + .../DailyReport/DailyReportMakerExcel.cs | 584 ++++++++++++++++++ .../DailyReport/DailyReportService.cs | 88 ++- ConsoleApp1/Program.cs | 163 +++-- 17 files changed, 1327 insertions(+), 52 deletions(-) create mode 100644 AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs create mode 100644 AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs create mode 100644 AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs create mode 100644 AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs create mode 100644 AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs create mode 100644 AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs create mode 100644 AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs create mode 100644 AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs create mode 100644 AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs create mode 100644 AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs create mode 100644 AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs diff --git a/AsbCloudApp/AsbCloudApp.csproj b/AsbCloudApp/AsbCloudApp.csproj index e84cf12c..ec491ed5 100644 --- a/AsbCloudApp/AsbCloudApp.csproj +++ b/AsbCloudApp/AsbCloudApp.csproj @@ -10,4 +10,10 @@ + + + + + + diff --git a/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs new file mode 100644 index 00000000..7039d59f --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs @@ -0,0 +1,12 @@ +using System; +namespace AsbCloudApp.Data.DailyReportModel +{ + public class DailyReportBhaDto + { + /// + /// КНБК описание + /// + public string BHADescription { get; set; } + } +} + diff --git a/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs new file mode 100644 index 00000000..27766df6 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs @@ -0,0 +1,27 @@ +using System; +namespace AsbCloudApp.Data.DailyReportModel +{ + public class DailyReportDimensionlessDto + { + /// + /// Нормативное время на одну операцию по подготовке ствола скважины к наращиванию + /// + 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/DailyReportHeadDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs new file mode 100644 index 00000000..38fcea8f --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs @@ -0,0 +1,110 @@ +using System; +namespace AsbCloudApp.Data.DailyReportModel +{ + /// + /// + /// + public class DailyReportHeadDto + { + /// + /// название скважины + /// + public string WellName { get; set; } + + /// + /// название куста + /// + public string ClusterName { get; set; } + + /// + /// заказчик + /// + public string Customer { get; set; } + + /// + /// подрядчик + /// + public string Contractor { get; set; } + + /// + /// дата рапорта + /// + public DateTime 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; } + + /// + /// ФИО бурильщиков + /// + public string SecondDriller { get; set; } + + /// + /// Время работы АПД + /// + 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/DailyReportSaubDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs new file mode 100644 index 00000000..b27b9c13 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; + +namespace AsbCloudApp.Data.DailyReportModel +{ + public class DailyReportSaubDto + { + /// + /// Режимы бурения в роторе + /// + public IEnumerable RotorDrillingModes { get; set; } + + /// + /// режимы бурения в слайде + /// + public IEnumerable SlideDrillingModes { get; set; } + + /// + /// Количество метров пробуренных в роторе за отчетный период + /// + 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; } + + } +} + diff --git a/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs new file mode 100644 index 00000000..3c1bd223 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs @@ -0,0 +1,17 @@ +using System; +namespace AsbCloudApp.Data.DailyReportModel +{ + public class DailyReportSignDto + { + /// + /// ФИО Мастера буровой + /// + public string DrillingMaster { get; set; } + + /// + /// ФИО супервайзера + /// + public string Supervisor { get; set; } + } +} + diff --git a/AsbCloudDb/AsbCloudDb.csproj b/AsbCloudDb/AsbCloudDb.csproj index 42a6436b..38f953fe 100644 --- a/AsbCloudDb/AsbCloudDb.csproj +++ b/AsbCloudDb/AsbCloudDb.csproj @@ -17,4 +17,7 @@ + + + diff --git a/AsbCloudDb/Migrations/20211123130153_Add_UserRoles_Permissions.cs b/AsbCloudDb/Migrations/20211123130153_Add_UserRoles_Permissions.cs index df65c7c0..dbd30cbf 100644 --- a/AsbCloudDb/Migrations/20211123130153_Add_UserRoles_Permissions.cs +++ b/AsbCloudDb/Migrations/20211123130153_Add_UserRoles_Permissions.cs @@ -7,6 +7,7 @@ namespace AsbCloudDb.Migrations { protected override void Up(MigrationBuilder migrationBuilder) { + migrationBuilder.DropForeignKey( name: "FK_t_user_t_user_role_id_role", table: "t_user"); diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs new file mode 100644 index 00000000..142ed009 --- /dev/null +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs @@ -0,0 +1,12 @@ +using System; +namespace AsbCloudApp.Data.DailyReportModel +{ + public class DailyReportBha + { + /// + /// КНБК описание + /// + public string BHADescription { get; set; } + } +} + diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs new file mode 100644 index 00000000..874fc154 --- /dev/null +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs @@ -0,0 +1,45 @@ +using System; +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudApp.Data.DailyReportModel; +namespace AsbCloudDb.Model.DailyReportDB +{ +#nullable disable + [Table("t_daily_report"), Comment("Ежедневные отчёты")] + public class DailyReportDb + { + [Column("id_well"), Comment("ID скважины")] + public int IdWell { get; set; } + + [Column("start_date", TypeName = "timestamp with time zone"), Comment("Дата отчёта")] + public DateTimeOffset StartDate { get; set; } + + [Column("blockHead", TypeName = "jsonb"), Comment("1 блок параметров для отчёта")] + public DailyReportHead BlockHead { get; set; } + + [Column("blockBha", TypeName = "jsonb"), Comment("2 блок параметров для отчёта")] + public DailyReportBha BlockBha { get; set; } + + [Column("blockDimensionless", TypeName = "jsonb"), Comment("4 блок параметров для отчёта")] + public DailyReportDimensionless BlockDimensionless { get; set; } + + [Column("blockSaub", TypeName = "jsonb"), Comment("5 блок параметров для отчёта")] + public DailyReportSaub BlockSaub { get; set; } + + [Column("blockSign", TypeName = "jsonb"), Comment("6 блок параметров для отчёта")] + public DailyReportSign BlockSign { get; set; } + + [ForeignKey(nameof(IdWell))] + public virtual Well Well { get; set; } + } +} + + + + + + + + + + diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs new file mode 100644 index 00000000..7ca1697d --- /dev/null +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs @@ -0,0 +1,27 @@ +using System; +namespace AsbCloudApp.Data.DailyReportModel +{ + public class DailyReportDimensionless + { + /// + /// Нормативное время на одну операцию по подготовке ствола скважины к наращиванию + /// + public double? StandardTimeBarrelPreparation { get; set; } + + /// + /// Нормативное время на одну операцию по наращиванию + /// + public double? StandardTimeExtension { get; set; } + + /// + /// Фактическое время проработок при подготовке ствола скважины к наращиванию. + /// + public double? ActualTimeBarrelPreparation { get; set; } + + /// + /// Фактическое время наращиваний + /// + public double? ActualTimeExtension { get; set; } + } +} + diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs new file mode 100644 index 00000000..e49a9a0f --- /dev/null +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs @@ -0,0 +1,107 @@ +using System; +namespace AsbCloudApp.Data.DailyReportModel +{ + public class DailyReportHead + { + /// + /// название скважины + /// + public string WellName { get; set; } + + /// + /// название куста + /// + public string ClusterName { get; set; } + + /// + /// заказчик + /// + public string Customer { get; set; } + + /// + /// подрядчик + /// + public string Contractor { get; set; } + + /// + /// дата рапорта + /// + public DateTime 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; } + + /// + /// ФИО бурильщиков + /// + public string SecondDriller { get; set; } + + /// + /// Время работы АПД + /// + 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/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs new file mode 100644 index 00000000..1d45aa14 --- /dev/null +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; + +namespace AsbCloudApp.Data.DailyReportModel +{ + public class DailyReportSaub + { + /// + /// Режимы бурения в роторе + /// + public IEnumerable RotorDrillingModes { get; set; } + + /// + /// режимы бурения в слайде + /// + public IEnumerable SlideDrillingModes { get; set; } + + /// + /// Количество метров пробуренных в роторе за отчетный период + /// + 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; } + + } +} + diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs new file mode 100644 index 00000000..31d951b0 --- /dev/null +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs @@ -0,0 +1,17 @@ +using System; +namespace AsbCloudApp.Data.DailyReportModel +{ + public class DailyReportSign + { + /// + /// ФИО Мастера буровой + /// + public string DrillingMaster { get; set; } + + /// + /// ФИО супервайзера + /// + public string Supervisor { get; set; } + } +} + diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs index 8e0ed0fe..919682d3 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs @@ -1,4 +1,5 @@ using AsbCloudApp.Data; +using AsbCloudApp.Data.DailyReportModel; using ClosedXML.Excel; using System; using System.IO; @@ -8,6 +9,585 @@ namespace AsbCloudInfrastructure.Services.DailyReport { public class DailyReportMakerExcel { + + + // черновик реализации отчета "по блокам" + + public Stream MakeReportFromBlocks(DailyReportHeadDto blockHead, DailyReportBhaDto blockBha, DailyReportDimensionlessDto blockDimensionless, DailyReportSaubDto blockSaub, DailyReportSignDto blockSign) + { + using var workbook = new XLWorkbook(); + FillSheet6blocks(workbook, blockHead, blockBha, blockDimensionless, blockSaub, blockSign); + MemoryStream memoryStream = new MemoryStream(); + workbook.SaveAs(memoryStream, new SaveOptions { }); + memoryStream.Seek(0, SeekOrigin.Begin); + return memoryStream; + } + + private String converteCellCoordinate(int row, bool isCaps, int column) + { + var c = (Char)((isCaps ? 65 : 97) + (column - 1)); + string convertColumn = c.ToString(); + return $"{convertColumn}{row}"; + } + + public void FillSheet6blocks(XLWorkbook workbook, DailyReportHeadDto blockHead, DailyReportBhaDto blockBha, DailyReportDimensionlessDto blockDimensionless, DailyReportSaubDto blockSaub, DailyReportSignDto blockSign) + { + var sheet = workbook.Worksheets.First(); + sheet.Name = blockHead.ReportDate.ToString("dd.MM.yyyy"); + var tuple = (row: 3, column: 3); + + tuple = (AddBlockHead1(sheet, blockHead,(tuple.row,tuple.column)).row , AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).column); + + + AddBlockBha(sheet, blockBha); + AddBlockTimeBalance(sheet); + AddBlockDimensionless(sheet, blockDimensionless); + AddBlockSaub(sheet, blockSaub); + AddBlockSign(sheet, blockSign); + + + } + // + + private (int row, int column) AddBlockHead1(IXLWorksheet sheet, DailyReportHeadDto blockDto, (int row, int column) tupleStart) + { + var tuple = (row: tupleStart.row, column: tupleStart.column); + sheet.Cell(tuple.row, tuple.column).Value = + $"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); + //4 + tuple.row += 1; + sheet.Cell(tuple.row, tuple.column).Value = + $"Заказчик: {blockDto.Customer}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); + tuple.row += 1; + sheet.Cell(tuple.row, tuple.column).Value = + $"Подрядчик: {blockDto.Contractor}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); + tuple.row += 2; + //7,3 + sheet.Cell(tuple.row, tuple.column).Value = "Отчетный период"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + tuple.column += 4; + sheet.Cell(tuple.row, tuple.column).Value = "Забой за отчетный период, м"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + tuple.column = tupleStart.column; + tuple.row += 1; + //8,3 + + sheet.Cell(tuple.row, tuple.column).Value = "От (дата, время)"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + + tuple.column += 2; //8,5 + sheet.Cell(tuple.row, tuple.column).Value = "До (дата, время)"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.column += 2; //8,7 + sheet.Cell(tuple.row, tuple.column).Value = "От"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.column += 2; //8,9 + sheet.Cell(tuple.row, tuple.column).Value = "До"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.column = tupleStart.column; + tuple.row += 1; //9,3 + + + + sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.ReportDate}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column+2).Merge(); + tuple.column += 2; + //согласно формуле в шаблоне - ячейка С9 + sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"={converteCellCoordinate(tuple.row , true, tuple.column)}-1"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + tuple.column += 2; + sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.WellDepthIntervalStartDate}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + tuple.column += 2; + sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.WellDepthIntervalFinishDate}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + tuple.column = tupleStart.column; + tuple.row += 2; //11,3 + + + + sheet.Cell(tuple.Item1 + 8, tuple.Item2).Value = "Данные по траектории скважины на конец суток"; + sheet.Range(tuple.Item1 + 8, tuple.Item2, tuple.Item1 + 8, tuple.Item2+7).Merge(); + sheet.Cell(tuple.Item1 + 9, tuple.Item2).Value = "Глубина по стволу"; + sheet.Range(tuple.Item1 + 9, tuple.Item2, tuple.Item1 + 9, tuple.Item2+1).Merge(); + sheet.Cell(13, 3).Value = $"{blockDto.BottomholeDepth}"; + sheet.Range(13, 3, 13, 4).Merge(); + sheet.Cell(12, 5).Value = "Глубина по вертикали"; + sheet.Range(12, 5, 12, 6).Merge(); + sheet.Cell(13, 5).Value = $"{blockDto.VerticalDepth}"; + sheet.Range(13, 5, 13, 6).Merge(); + sheet.Cell(12, 7).Value = "Зенитный угол"; + sheet.Range(12, 7, 12, 8).Merge(); + sheet.Cell(13, 7).Value = $"{blockDto.ZenithAngle}"; + sheet.Range(13, 7, 13, 8).Merge(); + sheet.Cell(12, 9).Value = "Азимут"; + sheet.Range(12, 9, 12, 10).Merge(); + sheet.Cell(13, 9).Value = $"{blockDto.AzimuthAngle}"; + sheet.Range(13, 9, 13, 10).Merge(); + sheet.Cell(15, 3).Value = "Бурильщик 1 смена"; + sheet.Range(15, 3, 15, 4).Merge(); + sheet.Cell(15, 5).Value = $"{blockDto.FirstDriller}"; + sheet.Range(15, 6, 15, 7).Merge(); + sheet.Cell(16, 3).Value = "Бурильщик 2 смена"; + sheet.Range(16, 3, 16, 4).Merge(); + sheet.Cell(16, 5).Value = $"{blockDto.SecondDriller}"; + sheet.Range(16, 6, 16, 7).Merge(); + + sheet.Cell(18, 3).Value = "Работа модулей САУБ:"; + sheet.Range(18, 3, 15, 5).Merge(); + sheet.Cell(18, 6).Value = "Часов:"; + sheet.Cell(18, 7).Value = "Метров:"; + sheet.Cell(19, 3).Value = "АПД (автоматическая подача долота), ч/м:"; + sheet.Range(19, 3, 19, 5).Merge(); + sheet.Cell(19, 6).Value = $"{blockDto.WorkTimeSAUB}"; + sheet.Cell(19, 7).Value = $"{blockDto.PenetrationSAUB}"; + + sheet.Cell(20, 3).Value = "Спин Мастер (осцилляция),ч/м:"; + sheet.Range(20, 3, 20, 5).Merge(); + sheet.Cell(20, 6).Value = $"{blockDto.WorkTimeSpinMaster}"; + sheet.Cell(20, 7).Value = $"{blockDto.PenetrationSpinMaster}"; + + sheet.Cell(21, 3).Value = "Торк Мастер (демпфирование), ч/:"; + sheet.Range(21, 3, 21, 5).Merge(); + sheet.Cell(21, 6).Value = $"{blockDto.WorkTimeTorkMaster}"; + sheet.Cell(21, 7).Value = $"{blockDto.PenetrationTorkMaster}"; + + sheet.Cell(22, 3).Value = "МСЕ, колличество запусков, раз:"; + sheet.Range(22, 3, 22, 5).Merge(); + sheet.Cell(22, 6).Value = $"{blockDto.CountLaunchesMSE}"; + sheet.Range(22, 6, 22, 7).Merge(); + + return (tuple.row, tuple.column); + + } + + + // + private void AddBlockHead(IXLWorksheet sheet, DailyReportHeadDto blockDto) + { + sheet.Cell(3, 3).Value = + $"Суточная сводка бурения скважины №{blockDto.WellName}, куст: {blockDto.ClusterName}"; + sheet.Cell(4, 3).Value = + $"Заказчик: {blockDto.Customer}"; + sheet.Cell(5, 3).Value = + $"Подрядчик: {blockDto.Contractor}"; + sheet.Cell(7, 3).Value = "Отчетный период"; + sheet.Range(7, 3, 7, 6).Merge(); + sheet.Cell(7, 7).Value = "Забой за отчетный период, м"; + sheet.Range(7, 7, 7, 10).Merge(); + sheet.Cell(8, 3).Value = "От (дата, время)"; + sheet.Range(8, 3, 8, 4).Merge(); + sheet.Cell(9, 3).Value = $"{blockDto.ReportDate}"; + sheet.Range(9, 3, 9, 4).Merge(); + sheet.Cell(8, 5).Value = "До (дата, время)"; + sheet.Range(8, 5, 8, 6).Merge(); + sheet.Cell(9, 5).Value = "=C9+1"; + sheet.Range(9, 5, 9, 6).Merge(); + sheet.Cell(8, 7).Value = "От"; + sheet.Range(8, 7, 8, 8).Merge(); + sheet.Cell(9, 7).Value = $"{blockDto.WellDepthIntervalStartDate}"; + sheet.Range(9, 7, 9, 8).Merge(); + sheet.Cell(8, 9).Value = "До"; + sheet.Range(8, 9, 8, 10).Merge(); + sheet.Cell(9, 9).Value = $"{blockDto.WellDepthIntervalFinishDate}"; + sheet.Range(9, 9, 9, 10).Merge(); + sheet.Cell(11, 3).Value = "Данные по траектории скважины на конец суток"; + sheet.Range(11, 3, 11, 10).Merge(); + sheet.Cell(12, 3).Value = "Глубина по стволу"; + sheet.Range(12, 3, 12, 4).Merge(); + sheet.Cell(13, 3).Value = $"{blockDto.BottomholeDepth}"; + sheet.Range(13, 3, 13, 4).Merge(); + sheet.Cell(12, 5).Value = "Глубина по вертикали"; + sheet.Range(12, 5, 12, 6).Merge(); + sheet.Cell(13, 5).Value = $"{blockDto.VerticalDepth}"; + sheet.Range(13, 5, 13, 6).Merge(); + sheet.Cell(12, 7).Value = "Зенитный угол"; + sheet.Range(12, 7, 12, 8).Merge(); + sheet.Cell(13, 7).Value = $"{blockDto.ZenithAngle}"; + sheet.Range(13, 7, 13, 8).Merge(); + sheet.Cell(12, 9).Value = "Азимут"; + sheet.Range(12, 9, 12, 10).Merge(); + sheet.Cell(13, 9).Value = $"{blockDto.AzimuthAngle}"; + sheet.Range(13, 9, 13, 10).Merge(); + sheet.Cell(15, 3).Value = "Бурильщик 1 смена"; + sheet.Range(15, 3, 15, 4).Merge(); + sheet.Cell(15, 5).Value = $"{blockDto.FirstDriller}"; + sheet.Range(15, 6, 15, 7).Merge(); + sheet.Cell(16, 3).Value = "Бурильщик 2 смена"; + sheet.Range(16, 3, 16, 4).Merge(); + sheet.Cell(16, 5).Value = $"{blockDto.SecondDriller}"; + sheet.Range(16, 6, 16, 7).Merge(); + + sheet.Cell(18, 3).Value = "Работа модулей САУБ:"; + sheet.Range(18, 3, 15, 5).Merge(); + sheet.Cell(18, 6).Value = "Часов:"; + sheet.Cell(18, 7).Value = "Метров:"; + sheet.Cell(19, 3).Value = "АПД (автоматическая подача долота), ч/м:"; + sheet.Range(19, 3, 19, 5).Merge(); + sheet.Cell(19, 6).Value = $"{blockDto.WorkTimeSAUB}"; + sheet.Cell(19, 7).Value = $"{blockDto.PenetrationSAUB}"; + + sheet.Cell(20, 3).Value = "Спин Мастер (осцилляция),ч/м:"; + sheet.Range(20, 3, 20, 5).Merge(); + sheet.Cell(20, 6).Value = $"{blockDto.WorkTimeSpinMaster}"; + sheet.Cell(20, 7).Value = $"{blockDto.PenetrationSpinMaster}"; + + sheet.Cell(21, 3).Value = "Торк Мастер (демпфирование), ч/:"; + sheet.Range(21, 3, 21, 5).Merge(); + sheet.Cell(21, 6).Value = $"{blockDto.WorkTimeTorkMaster}"; + sheet.Cell(21, 7).Value = $"{blockDto.PenetrationTorkMaster}"; + + sheet.Cell(22, 3).Value = "МСЕ, колличество запусков, раз:"; + sheet.Range(22, 3, 22, 5).Merge(); + sheet.Cell(22, 6).Value = $"{blockDto.CountLaunchesMSE}"; + sheet.Range(22, 6, 22, 7).Merge(); + + } + + private void AddBlockBha(IXLWorksheet sheet, DailyReportBhaDto blockDto) + { + sheet.Cell(24, 3).Value = + $"{blockDto.BHADescription}"; + sheet.Range(24, 3, 24, 10).Merge(); + sheet.Cell(26, 3).Value = + "Выполняемые операции в отчетный период, комментарии:"; + sheet.Range(26, 3, 26, 7).Merge(); + sheet.Cell(26, 8).Value = "Продолжительность, ч. "; + sheet.Range(26, 8, 26, 9).Merge(); + sheet.Cell(26, 10).Value = "Итого"; + + sheet.Cell(27, 3).Value = + "Бурение с наращиваниями в инт. 2195-2763м."; + sheet.Range(27, 3, 27, 7).Merge(); + sheet.Cell(27, 8).Value = ""; + sheet.Cell(27, 9).Value = ""; + sheet.Cell(27, 10).Value = "=IF(I27>0;(I27-H27)*24;\"\")"; + + sheet.Cell(28, 3).Value = + "Промывка."; + sheet.Range(28, 3, 28, 7).Merge(); + sheet.Cell(28, 8).Value = ""; + sheet.Cell(28, 9).Value = ""; + sheet.Cell(28, 10).Value = "=IF(I28>0;(I28-H28)*24;\"\")"; + + sheet.Cell(29, 3).Value = + "Подъем КНБК в инт. 2763-2442м."; + sheet.Range(29, 3, 29, 7).Merge(); + sheet.Cell(29, 8).Value = ""; + sheet.Cell(29, 9).Value = ""; + sheet.Cell(29, 10).Value = "=IF(I29>0;(I29-H29)*24;\"\")"; + + sheet.Cell(30, 3).Value = + "Спуск КНБК в инт. 2442-2763м."; + sheet.Range(30, 3, 30, 7).Merge(); + sheet.Cell(30, 8).Value = ""; + sheet.Cell(30, 9).Value = ""; + sheet.Cell(30, 10).Value = "=IF(I30>0;(I30-H30)*24;\"\")"; + + sheet.Cell(27, 3).Value = + "Бурение с наращиваниями в инт. 2763-2850м."; + sheet.Range(31, 3, 31, 7).Merge(); + sheet.Cell(31, 8).Value = ""; + sheet.Cell(31, 9).Value = ""; + sheet.Cell(31, 10).Value = "=IF(I31>0;(I31-H31)*24;\"\")"; + } + + + private void AddBlockTimeBalance(IXLWorksheet sheet) + { + sheet.Cell(33, 6).Value = + "БАЛАНС ВРЕМЕНИ"; + sheet.Range(33, 6, 33, 7).Merge(); + + sheet.Cell(34, 4).Value = + "Бурение"; + sheet.Cell(34, 5).Value = + ""; + sheet.Cell(34, 6).Value = + "КНБК"; + sheet.Cell(34, 7).Value = + ""; + sheet.Cell(34, 8).Value = + "ОЗЦ"; + sheet.Cell(34, 9).Value = + ""; + + sheet.Cell(35, 4).Value = + "Промывка"; + sheet.Cell(35, 5).Value = + ""; + sheet.Cell(35, 6).Value = + "СПО"; + sheet.Cell(35, 7).Value = + ""; + sheet.Cell(35, 8).Value = + "Тех. работы"; + sheet.Cell(35, 9).Value = + ""; + + sheet.Cell(36, 4).Value = + "Наращивание"; + sheet.Cell(36, 5).Value = + ""; + sheet.Cell(36, 6).Value = + "ПЗР"; + sheet.Cell(36, 7).Value = + ""; + sheet.Cell(36, 8).Value = + "Снятие замера"; + sheet.Cell(36, 9).Value = + ""; + + sheet.Cell(37, 4).Value = + "Проработка"; + sheet.Cell(37, 5).Value = + ""; + sheet.Cell(37, 6).Value = + "ПВО"; + sheet.Cell(37, 7).Value = + ""; + sheet.Cell(37, 8).Value = + "Цементирование"; + sheet.Cell(37, 9).Value = + ""; + + sheet.Cell(38, 4).Value = + "Расширка"; + sheet.Cell(38, 5).Value = + ""; + sheet.Cell(38, 6).Value = + "ПГР"; + sheet.Cell(38, 7).Value = + ""; + sheet.Cell(38, 8).Value = + "Простой"; + sheet.Cell(38, 9).Value = + ""; + + sheet.Cell(39, 4).Value = + "Ремонт "; + sheet.Cell(39, 5).Value = + ""; + sheet.Cell(39, 6).Value = + "ГИС"; + sheet.Cell(39, 7).Value = + ""; + sheet.Cell(39, 8).Value = + "НПВ"; + sheet.Cell(39, 9).Value = + ""; + } + + private void AddBlockDimensionless(IXLWorksheet sheet, DailyReportDimensionlessDto blockDto) + { + + sheet.Cell(41, 6).Value = + "БЕЗМЕТРАЖНЫЕ РАБОТЫ"; + sheet.Range(41, 6, 41, 7).Merge(); + + sheet.Cell(42, 4).Value = + "Подготовка ствола скв. к наращиванию"; + sheet.Range(42, 4, 42, 6).Merge(); + sheet.Cell(42, 7).Value = + "Наращивание"; + sheet.Range(42, 7, 42, 9).Merge(); + + sheet.Cell(43, 4).Value = + "Норматив на одну операцию, (мин):"; + sheet.Range(43, 4, 43, 5).Merge(); + sheet.Cell(43, 6).Value = + $"{blockDto.StandardTimeBarrelPreparation}"; + sheet.Cell(43, 7).Value = + "Норматив на одну операцию, (мин):"; + sheet.Range(43, 7, 43, 8).Merge(); + sheet.Cell(43, 9).Value = + $"{blockDto.StandardTimeExtension}"; + + sheet.Cell(44, 4).Value = + "Проработка при бур, план (ч):"; + sheet.Range(44, 4, 44, 5).Merge(); + sheet.Cell(44, 6).Value = + "=F43/60*G72"; + sheet.Cell(44, 7).Value = + "Наращивание, план (ч):"; + sheet.Range(44, 7, 44, 8).Merge(); + sheet.Cell(44, 9).Value = + "=I43/60*G72"; + + sheet.Cell(45, 4).Value = + "Проработка при бур, факт (ч):"; + sheet.Range(45, 4, 45, 5).Merge(); + sheet.Cell(45, 6).Value = + $"{blockDto.ActualTimeBarrelPreparation}"; + sheet.Cell(45, 7).Value = + "Наращивание, факт (ч):"; + sheet.Range(45, 7, 45, 8).Merge(); + sheet.Cell(45, 9).Value = + $"{blockDto.ActualTimeExtension}"; + + sheet.Cell(46, 4).Value = + "Превышение плановых норм, (ч):"; + sheet.Range(46, 4, 46, 5).Merge(); + sheet.Cell(46, 6).Value = + "=F45-F44"; + sheet.Cell(46, 7).Value = + "Превышение плановых норм, (ч):"; + sheet.Range(46, 7, 46, 8).Merge(); + sheet.Cell(46, 9).Value = + "=I45-I44"; + + sheet.Cell(47, 4).Value = + "Краткие причины: доп проработки при переходе из слайда в ротор, в середине свечи."; + sheet.Range(47, 4, 48, 6).Merge(); + + sheet.Cell(47, 7).Value = + "Краткие причины: нехватка пальцев на обоих руках у первого помощника бурильщика."; + sheet.Range(47, 7, 48, 9).Merge(); + + } + + //private (int,int) AddBlockSaub(IXLWorksheet sheet, Tuple startRow, DailyReportBlock5 blockDto) + private void AddBlockSaub(IXLWorksheet sheet, DailyReportSaubDto blockDto) + { + + sheet.Cell(50, 3).Value = + $"Бурение в роторе : {blockDto.RotorDrillingModes}"; + sheet.Range(50, 4, 50, 10).Merge(); + sheet.Cell(50, 3).Value = + $"Бурение в слайде : {blockDto.SlideDrillingModes}"; + sheet.Range(50, 4, 50, 10).Merge(); + + + sheet.Cell(53, 3).Value = "Бурение в роторе (за отчетный период) с использование САУБ-1"; + sheet.Range(53, 3, 53, 10).Merge(); + sheet.Cell(54, 3).Value = "Проходка"; + sheet.Range(54, 3, 54, 4).Merge(); + sheet.Cell(55, 3).Value = $"{blockDto.PenetrationInRotor}"; + sheet.Range(55, 3, 55, 4).Merge(); + sheet.Cell(54, 5).Value = "Часы бурения"; + sheet.Range(54, 5, 54, 6).Merge(); + sheet.Cell(55, 5).Value = $"{blockDto.NumberDrillingHours}"; + sheet.Range(55, 5, 55, 6).Merge(); + sheet.Cell(54, 7).Value = "Мех. скорость"; + sheet.Range(54, 7, 54, 8).Merge(); + sheet.Cell(55, 7).Value = "=IF(E55>0;C55/E55;0)"; + sheet.Range(55, 7, 55, 8).Merge(); + sheet.Cell(54, 9).Value = "Среднее диф. Давление"; + sheet.Range(54, 9, 54, 10).Merge(); + sheet.Cell(55, 9).Value = $"{blockDto.AVGDiffDropRotor}"; + sheet.Range(55, 9, 55, 10).Merge(); + + sheet.Cell(57, 3).Value = "Бурение в слайде (за отчетный период) с использование САУБ-1"; + sheet.Range(57, 3, 57, 10).Merge(); + sheet.Cell(58, 3).Value = "Проходка"; + sheet.Range(58, 3, 58, 4).Merge(); + sheet.Cell(59, 3).Value = $"{blockDto.PenetrationInSlide}"; + sheet.Range(59, 3, 59, 4).Merge(); + sheet.Cell(58, 5).Value = "Часы бурения"; + sheet.Range(58, 5, 58, 6).Merge(); + sheet.Cell(59, 5).Value = $"{blockDto.DrillingTimeInRotor}"; + sheet.Range(59, 5, 59, 6).Merge(); + sheet.Cell(58, 7).Value = "Мех. скорость"; + sheet.Range(58, 7, 58, 8).Merge(); + sheet.Cell(59, 7).Value = "=IF(E59>0;C59/E59;0)"; + sheet.Range(59, 7, 59, 8).Merge(); + sheet.Cell(58, 9).Value = "Среднее диф. Давление"; + sheet.Range(58, 9, 58, 10).Merge(); + sheet.Cell(59, 9).Value = $"{blockDto.AVGDiffPressureSlide}"; + sheet.Range(59, 9, 59, 10).Merge(); + + sheet.Cell(61, 3).Value = "Итого за отчетный период, использование САУБ-1"; + sheet.Range(61, 3, 61, 8).Merge(); + sheet.Cell(62, 3).Value = "Проходка"; + sheet.Range(62, 3, 62, 4).Merge(); + sheet.Cell(63, 3).Value = "=IF((C59+C55)<>(I9-G9);\"ОШИБКА\";C55+C59)"; + sheet.Range(63, 3, 63, 4).Merge(); + sheet.Cell(62, 5).Value = "Часы бурения"; + sheet.Range(62, 5, 62, 6).Merge(); + sheet.Cell(63, 5).Value = "=E55+E59"; + sheet.Range(63, 5, 63, 6).Merge(); + sheet.Cell(62, 7).Value = "Мех. скорость"; + sheet.Range(62, 7, 62, 8).Merge(); + sheet.Cell(63, 7).Value = ""; + sheet.Range(63, 7, 63, 8).Merge(); + sheet.Cell(61, 9).Value = "Плановая мех скорость"; + sheet.Range(61, 9, 62, 10).Merge(); + sheet.Cell(63, 9).Value = $"{blockDto.SectionROPPlan}"; + sheet.Range(63, 9, 63, 10).Merge(); + + + sheet.Cell(65, 3).Value = "Увеличение мех скорости за секцию %"; + sheet.Range(65, 3, 65, 6).Merge(); + sheet.Cell(65, 7).Value = ""; + sheet.Range(65, 7, 65, 10).Merge(); + sheet.Cell(66, 3).Value = "Увеличение мех скорости за сутки %"; + sheet.Range(66, 3, 66, 6).Merge(); + sheet.Cell(66, 7).Value = ""; + sheet.Range(66, 7, 66, 10).Merge(); + sheet.Cell(67, 3).Value = "Сокращение времени бурения за секцию, ч"; + sheet.Range(67, 3, 67, 6).Merge(); + sheet.Cell(67, 7).Value = ""; + sheet.Range(67, 7, 67, 10).Merge(); + sheet.Cell(68, 3).Value = "Ротор / слайд, %"; + sheet.Range(68, 3, 68, 6).Merge(); + sheet.Cell(68, 7).Value = ""; + sheet.Range(68, 7, 68, 10).Merge(); + sheet.Cell(69, 3).Value = "МСП за секцию м/ч."; + sheet.Range(69, 3, 69, 6).Merge(); + sheet.Cell(69, 7).Value = ""; + sheet.Range(69, 7, 69, 10).Merge(); + + sheet.Cell(70, 3).Value = "Время бурения за секцию"; + sheet.Range(70, 3, 70, 6).Merge(); + sheet.Cell(70, 7).Value = $"{blockDto.SectionDrillingTimeTotal}"; + sheet.Range(70, 7, 70, 10).Merge(); + + sheet.Cell(71, 3).Value = "Проходка за секцию"; + sheet.Range(71, 3, 71, 6).Merge(); + sheet.Cell(71, 7).Value = $"{blockDto.SectionPenetrationTotal}"; + sheet.Range(71, 7, 71, 10).Merge(); + + sheet.Cell(72, 3).Value = "Кол- во наращиваний"; + sheet.Range(72, 3, 72, 6).Merge(); + sheet.Cell(72, 7).Value = $"{blockDto.ExtensionsCount}"; + sheet.Range(72, 7, 72, 10).Merge(); + + sheet.Cell(73, 3).Value = "Отклонение от ГГД +/-, сут"; + sheet.Range(73, 3, 73, 6).Merge(); + sheet.Cell(73, 7).Value = $"{blockDto.DeviationFromTVD}"; + sheet.Range(73, 7, 73, 10).Merge(); + + sheet.Cell(74, 3).Value = $"Примечание: {blockDto.DeclinesReasonsROP}"; + sheet.Range(74, 3, 75, 10).Merge(); + + } + + private void AddBlockSign(IXLWorksheet sheet, DailyReportSignDto blockDto) + { + sheet.Cell(78, 3).Value = + "Мастер буровой "; + sheet.Range(78, 3, 78, 4).Merge(); + sheet.Cell(78, 9).Value = + $"{blockDto.DrillingMaster}"; + sheet.Range(78, 9, 78, 10).Merge(); + + sheet.Cell(80, 3).Value = + "Супервайзер "; + sheet.Range(80, 3, 80, 4).Merge(); + sheet.Cell(80, 9).Value = + $"{blockDto.Supervisor}"; + sheet.Range(80, 9, 80, 10).Merge(); + + } + + + + + // реализация "как есть" + public Stream MakeReport(DailyReportDto dailyReportDto) { using var templateStream = System.Reflection.Assembly.GetExecutingAssembly() @@ -54,6 +634,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport sheet.Cell(startRow + 2, 3).Value = $"Подрядчик: {reportDto.Contractor}"; + return startRow + 2; } @@ -165,6 +746,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport return startRow + 9; } + // private int AddBlockDrillingModes(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) { sheet.Cell(startRow + 2, 6).Value = @@ -222,6 +804,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport return startRow + 13; } + // private int AddBlockSubscribes(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) { sheet.Cell(startRow + 3, 9).Value = @@ -297,3 +880,4 @@ namespace AsbCloudInfrastructure.Services.DailyReport } } } + diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs index 058fb103..1945710d 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs @@ -1,14 +1,15 @@ -using AsbCloudApp.Data; -using AsbCloudApp.Services; -using AsbCloudDb.Model; -using Mapster; -using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; +using System; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Mapster; +using AsbCloudApp.Data; +using AsbCloudApp.Services; +using AsbCloudDb.Model; +using System.Collections.Generic; +using AsbCloudApp.Data.DailyReportModel; namespace AsbCloudInfrastructure.Services.DailyReport { @@ -103,6 +104,8 @@ namespace AsbCloudInfrastructure.Services.DailyReport return memoryStream; } + + private async Task GetAsync(int idWell, DateTime date, CancellationToken token) { var offsetHours = wellService.GetTimezone(idWell).Hours; @@ -149,6 +152,77 @@ namespace AsbCloudInfrastructure.Services.DailyReport .Date; return entity; } + + + // черновик реализации "по блокам" + + public async Task MakeReportFromBlocksAsync(int idWell, DateTime date, CancellationToken token = default) + { + var dailyReportDto = await GetAsync(idWell, date, token); + if (dailyReportDto is null) + return null; + var block1 = new DailyReportHeadDto() + { + WellName = dailyReportDto.WellName, + ClusterName = dailyReportDto.ClusterName, + Customer = dailyReportDto.Customer, + Contractor = dailyReportDto.Contractor, + ReportDate = dailyReportDto.ReportDate, + WellDepthIntervalStartDate = dailyReportDto.WellDepthIntervalStartDate, + WellDepthIntervalFinishDate = dailyReportDto.WellDepthIntervalFinishDate, + BottomholeDepth = dailyReportDto.BottomholeDepth, + VerticalDepth = dailyReportDto.VerticalDepth, + ZenithAngle = dailyReportDto.ZenithAngle, + AzimuthAngle = dailyReportDto.AzimuthAngle, + FirstDriller = dailyReportDto.FirstDriller, + SecondDriller = dailyReportDto.SecondDriller, + WorkTimeSAUB = dailyReportDto.WorkTimeSAUB, + WorkTimeSpinMaster = dailyReportDto.WorkTimeSpinMaster, + WorkTimeTorkMaster = dailyReportDto.WorkTimeTorkMaster, + PenetrationSAUB = dailyReportDto.PenetrationSAUB, + PenetrationSpinMaster = dailyReportDto.PenetrationSpinMaster, + PenetrationTorkMaster = dailyReportDto.PenetrationTorkMaster, + CountLaunchesMSE = dailyReportDto.CountLaunchesMSE + }; + var block2 = new DailyReportBhaDto() + { + BHADescription = dailyReportDto.BHADescription + }; + var block4 = new DailyReportDimensionlessDto() + { + ActualTimeBarrelPreparation = dailyReportDto.ActualTimeBarrelPreparation, + ActualTimeExtension = dailyReportDto.ActualTimeExtension, + StandardTimeBarrelPreparation = dailyReportDto.StandardTimeBarrelPreparation, + StandardTimeExtension = dailyReportDto.StandardTimeExtension + }; + var block5 = new DailyReportSaubDto() + { + AVGDiffDropRotor = dailyReportDto.AVGDiffDropRotor, + AVGDiffPressureSlide = dailyReportDto.AVGDiffPressureSlide, + DeclinesReasonsROP = dailyReportDto.DeclinesReasonsROP, + DeviationFromTVD = dailyReportDto.DeviationFromTVD, + DrillingTimeInRotor = dailyReportDto.DrillingTimeInRotor, + NumberDrillingHours = dailyReportDto.NumberDrillingHours, + ExtensionsCount = dailyReportDto.ExtensionsCount, + PenetrationInRotor = dailyReportDto.PenetrationInRotor, + PenetrationInSlide = dailyReportDto.PenetrationInSlide, + RotorDrillingModes = dailyReportDto.RotorDrillingModes, + SectionDrillingTimeTotal = dailyReportDto.SectionDrillingTimeTotal, + SectionPenetrationTotal = dailyReportDto.SectionPenetrationTotal, + SectionROPPlan = dailyReportDto.SectionROPPlan, + SlideDrillingModes = dailyReportDto.SlideDrillingModes + + }; + var block6 = new DailyReportSignDto() + { + DrillingMaster = dailyReportDto.DrillingMaster, + Supervisor = dailyReportDto.Supervisor + }; + + var memoryStream = dailyReportMaker.MakeReportFromBlocks(block1, block2, block4, block5, block6); + return memoryStream; + } } #nullable disable } + diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs index c4f6f029..c26c57f6 100644 --- a/ConsoleApp1/Program.cs +++ b/ConsoleApp1/Program.cs @@ -1,5 +1,8 @@ -using AsbCloudInfrastructure.EfCache; +using AsbCloudApp.Data.DailyReportModel; +using AsbCloudInfrastructure.EfCache; +using ClosedXML.Excel; using System; +using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -12,59 +15,129 @@ namespace ConsoleApp1 // use ServiceFactory to make services static void Main(/*string[] args*/) { - Console.WriteLine("hit keyboard to start"); - Console.ReadLine(); - - for (int i = 0; i < 24; i++) + var block = new DailyReportHeadDto() { - var t = new Thread(_ => - { - for (int j = 0; j < 32; j++) - //Task.Run(GetDataAsync).Wait(); - GetData(); - }); - t.Start(); - } + AzimuthAngle=12, + WellName= "WellName", + ClusterName= "clusterName", + Customer="customer", + Contractor="Contractor", + ReportDate = DateTime.Now, + WellDepthIntervalFinishDate= 27.5, + WellDepthIntervalStartDate= 26.5, + BottomholeDepth= 66.6 + }; - Console.WriteLine("End of Test"); - Console.ReadLine(); + var ms = MakeReportFromBlocks(block); + //File.Create("", MakeReportFromBlocks(block)); + using var file = new FileStream("file.xlsx", FileMode.Create, System.IO.FileAccess.Write); + byte[] bytes = new byte[ms.Length]; + ms.Read(bytes, 0, (int)ms.Length); + file.Write(bytes, 0, bytes.Length); + ms.Close(); } - static TimeSpan obso = TimeSpan.FromSeconds(5); - static (long, long) GetData() + public static Stream MakeReportFromBlocks(DailyReportHeadDto blockHead) { - using var db = ServiceFactory.MakeContext(); - var sw = System.Diagnostics.Stopwatch.StartNew(); - var cs = db.TelemetryDataSaub - .Where(t => t.IdTelemetry == 135) - .OrderBy(t => t.DateTime) - .Take(100_000) - .FromCache("tds", obso, r => new { r.Pressure, r.HookWeight }) - .ToList(); - sw.Stop(); - Console.WriteLine($"{DateTime.Now}\tth: {Thread.CurrentThread.ManagedThreadId}\ttime {sw.ElapsedMilliseconds}\tcount {cs.Count}"); - - GC.Collect(); - Thread.Sleep(10); - return (cs.Count, sw.ElapsedMilliseconds); + using var workbook = new XLWorkbook(); + FillSheet6blocks(workbook, blockHead); + MemoryStream memoryStream = new MemoryStream(); + workbook.SaveAs(memoryStream, new SaveOptions { }); + memoryStream.Seek(0, SeekOrigin.Begin); + return memoryStream; } - static async Task<(long, long)> GetDataAsync() + private static String converteCellCoordinate(int row, bool isCaps, int column) { - using var db = ServiceFactory.MakeContext(); - var sw = System.Diagnostics.Stopwatch.StartNew(); - var cs = (await db.TelemetryDataSaub - .Where(t => t.IdTelemetry == 135) - .OrderBy(t => t.DateTime) - .Take(100_000) - .FromCacheDictionaryAsync("tds", obso, r => (r.IdTelemetry, r.DateTime), r => new { r.Pressure, r.HookWeight })) - .ToList(); - sw.Stop(); - Console.WriteLine($"{DateTime.Now}\tth: {Thread.CurrentThread.ManagedThreadId}\ttime {sw.ElapsedMilliseconds}\tcount {cs.Count}"); + var c = (Char)((isCaps ? 65 : 97) + (column - 1)); + string convertColumn = c.ToString(); + return $"{convertColumn}{row}"; + } + + public static void FillSheet6blocks(XLWorkbook workbook, DailyReportHeadDto blockHead) + { + var sheet = workbook.Worksheets.Add(blockHead.ReportDate.ToString("dd.MM.yyyy")); + //sheet.Name = blockHead.ReportDate.ToString("dd.MM.yyyy"); + + var tuple = (row: 3, column: 3); + + tuple = (AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).row, AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).column); + //sheet.Columns().AdjustToContents(); + } + // + + private static (int row, int column) AddBlockHead1(IXLWorksheet sheet, DailyReportHeadDto blockDto, (int row, int column) tupleStart) + { + + var tuple = (row: tupleStart.row, column: tupleStart.column); + sheet.Cell(tuple.row, tuple.column).Value = + $"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); + //4 + tuple.row += 1; + sheet.Cell(tuple.row, tuple.column).Value = + $"Заказчик: {blockDto.Customer}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); + tuple.row += 1; + sheet.Cell(tuple.row, tuple.column).Value = + $"Подрядчик: {blockDto.Contractor}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); + tuple.row += 2; + //7,3 + sheet.Cell(tuple.row, tuple.column).Value = "Отчетный период"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + tuple.column += 4; + sheet.Cell(tuple.row, tuple.column).Value = "Забой за отчетный период, м"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + tuple.column = tupleStart.column; + tuple.row += 1; + //8,3 + + sheet.Cell(tuple.row, tuple.column).Value = "От (дата, время)"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + + tuple.column += 2; //8,5 + sheet.Cell(tuple.row, tuple.column).Value = "До (дата, время)"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.column += 2; //8,7 + sheet.Cell(tuple.row, tuple.column).Value = "От"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.column += 2; //8,9 + sheet.Cell(tuple.row, tuple.column).Value = "До"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.column = tupleStart.column; + tuple.row += 1; //9,3 + + + + sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.ReportDate}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + tuple.column += 2; + //согласно формуле в шаблоне - ячейка С9 + sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"={converteCellCoordinate(tuple.row, true, tuple.column-2)}-1"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + tuple.column += 2; + sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.WellDepthIntervalStartDate}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + tuple.column += 2; + sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.WellDepthIntervalFinishDate}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + tuple.column = tupleStart.column; + tuple.row += 2; //11,3 + + + + return (tuple.Item1, tuple.Item2); - GC.Collect(); - Thread.Sleep(10); - return (cs.Count, sw.ElapsedMilliseconds); } } + struct CellAddress + { + public int Col { get; set; } + public int Row { get; set; } + //public string GetExcelAddress() + //{ + + //} + } } From 6570647bec5b624c1f3723219c0f00e81cc29495 Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Wed, 22 Jun 2022 23:26:04 +0500 Subject: [PATCH 02/34] new generate report with style --- .../DailyReport/DailyReportMakerExcel.cs | 1051 ++++++++++------- ConsoleApp1/Program.cs | 441 ++++++- 2 files changed, 1005 insertions(+), 487 deletions(-) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs index 919682d3..dda6edd9 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs @@ -30,24 +30,43 @@ namespace AsbCloudInfrastructure.Services.DailyReport return $"{convertColumn}{row}"; } + private string FormulaBhaBlock((int row, int col) tuple) + { + return $"IF({converteCellCoordinate(tuple.row, true, tuple.col - 1)}>0,({converteCellCoordinate(tuple.row, true, tuple.col - 1)}-{converteCellCoordinate(tuple.row, true, tuple.col - 2)})*24, \"\")"; + } + + private string FormulaMechanicalSpeed((int row, int col) tuple) + { + return $"=IF({converteCellCoordinate(tuple.row, true, tuple.col - 2)}>0," + + $"{converteCellCoordinate(tuple.row, true, tuple.col - 4)}/{converteCellCoordinate(tuple.row, true, tuple.col - 2)},0)"; + } + + private string FormulaDrillingWatch((int row, int col) tuple) + { + return $"=IF({converteCellCoordinate(tuple.row - 8, true, tuple.col)}+" + + $"{converteCellCoordinate(tuple.row - 4, true, tuple.col)}"; + } + + private string FormulaSinking((int row, int col) tuple) + { + return $"=IF(({converteCellCoordinate(tuple.row - 4, true, tuple.col)}+{converteCellCoordinate(tuple.row - 8, true, tuple.col)})" + + $"<>({converteCellCoordinate(tuple.row - 54, true, tuple.col + 6)}-{converteCellCoordinate(tuple.row - 54, true, tuple.col + 4)}),\"ОШИБКА\"" + + $",{converteCellCoordinate(tuple.row - 4, true, tuple.col)}+{converteCellCoordinate(tuple.row - 8, true, tuple.col)})"; + } + public void FillSheet6blocks(XLWorkbook workbook, DailyReportHeadDto blockHead, DailyReportBhaDto blockBha, DailyReportDimensionlessDto blockDimensionless, DailyReportSaubDto blockSaub, DailyReportSignDto blockSign) { - var sheet = workbook.Worksheets.First(); - sheet.Name = blockHead.ReportDate.ToString("dd.MM.yyyy"); + var sheet = workbook.Worksheets.Add(blockHead.ReportDate.ToString("dd.MM.yyyy")); + sheet.Style.Font.FontName = "TimesNewRoman"; + sheet.Style.Font.FontSize = 10; var tuple = (row: 3, column: 3); - tuple = (AddBlockHead1(sheet, blockHead,(tuple.row,tuple.column)).row , AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).column); - - - AddBlockBha(sheet, blockBha); - AddBlockTimeBalance(sheet); - AddBlockDimensionless(sheet, blockDimensionless); - AddBlockSaub(sheet, blockSaub); - AddBlockSign(sheet, blockSign); - - - } - // + tuple = AddBlockBha(sheet, blockBha, tuple); + tuple = AddBlockTimeBalance(sheet, tuple); + tuple = AddBlockDimensionless(sheet, blockDimensionless, tuple); + tuple = AddBlockSaub(sheet, blockSaub, tuple); + tuple = AddBlockSign(sheet, blockSign, tuple); + } private (int row, int column) AddBlockHead1(IXLWorksheet sheet, DailyReportHeadDto blockDto, (int row, int column) tupleStart) { @@ -55,7 +74,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport sheet.Cell(tuple.row, tuple.column).Value = $"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}"; sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); - //4 tuple.row += 1; sheet.Cell(tuple.row, tuple.column).Value = $"Заказчик: {blockDto.Customer}"; @@ -66,520 +84,639 @@ namespace AsbCloudInfrastructure.Services.DailyReport sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); tuple.row += 2; //7,3 - sheet.Cell(tuple.row, tuple.column).Value = "Отчетный период"; sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Отчетный период"); tuple.column += 4; - sheet.Cell(tuple.row, tuple.column).Value = "Забой за отчетный период, м"; sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + sheet.Cell(tuple.row, tuple.column + 3).Style.Border.RightBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, "Забой за отчетный период, м"); tuple.column = tupleStart.column; tuple.row += 1; //8,3 - - sheet.Cell(tuple.row, tuple.column).Value = "От (дата, время)"; sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - + SetCell(sheet.Row(tuple.row), tuple.column, "От (дата, время)"); tuple.column += 2; //8,5 - sheet.Cell(tuple.row, tuple.column).Value = "До (дата, время)"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "До (дата, время)"); tuple.column += 2; //8,7 - sheet.Cell(tuple.row, tuple.column).Value = "От"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "От"); tuple.column += 2; //8,9 - sheet.Cell(tuple.row, tuple.column).Value = "До"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "До"); + sheet.Cell(tuple.row, tuple.column + 1).Style.Border.RightBorder = XLBorderStyleValues.Thin; tuple.column = tupleStart.column; tuple.row += 1; //9,3 - - - sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.ReportDate}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column+2).Merge(); + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.ReportDate}"); tuple.column += 2; //согласно формуле в шаблоне - ячейка С9 - sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"={converteCellCoordinate(tuple.row , true, tuple.column)}-1"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"={converteCellCoordinate(tuple.row, true, tuple.column - 2)}-1"; + SetDateTime(sheet.Cell(tuple.row, tuple.column)); tuple.column += 2; - sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.WellDepthIntervalStartDate}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.WellDepthIntervalStartDate}"); tuple.column += 2; - sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.WellDepthIntervalFinishDate}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.WellDepthIntervalFinishDate}"); tuple.column = tupleStart.column; - tuple.row += 2; //11,3 + tuple.row += 2; //11,3 + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, "Данные по траектории скважины на конец суток"); + tuple.column = tupleStart.column; + tuple.row += 1;//12 + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Глубина по стволу"); + tuple.column += 2; //12,5 + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Глубина по вертикали"); + tuple.column += 2; //12,7 + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Зенитный угол"); + tuple.column += 2; //12,9 + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, "Азимут"); + tuple.column = tupleStart.column; + tuple.row += 1; //13,3 + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.BottomholeDepth}"); + tuple.column += 2; - sheet.Cell(tuple.Item1 + 8, tuple.Item2).Value = "Данные по траектории скважины на конец суток"; - sheet.Range(tuple.Item1 + 8, tuple.Item2, tuple.Item1 + 8, tuple.Item2+7).Merge(); - sheet.Cell(tuple.Item1 + 9, tuple.Item2).Value = "Глубина по стволу"; - sheet.Range(tuple.Item1 + 9, tuple.Item2, tuple.Item1 + 9, tuple.Item2+1).Merge(); - sheet.Cell(13, 3).Value = $"{blockDto.BottomholeDepth}"; - sheet.Range(13, 3, 13, 4).Merge(); - sheet.Cell(12, 5).Value = "Глубина по вертикали"; - sheet.Range(12, 5, 12, 6).Merge(); - sheet.Cell(13, 5).Value = $"{blockDto.VerticalDepth}"; - sheet.Range(13, 5, 13, 6).Merge(); - sheet.Cell(12, 7).Value = "Зенитный угол"; - sheet.Range(12, 7, 12, 8).Merge(); - sheet.Cell(13, 7).Value = $"{blockDto.ZenithAngle}"; - sheet.Range(13, 7, 13, 8).Merge(); - sheet.Cell(12, 9).Value = "Азимут"; - sheet.Range(12, 9, 12, 10).Merge(); - sheet.Cell(13, 9).Value = $"{blockDto.AzimuthAngle}"; - sheet.Range(13, 9, 13, 10).Merge(); - sheet.Cell(15, 3).Value = "Бурильщик 1 смена"; - sheet.Range(15, 3, 15, 4).Merge(); - sheet.Cell(15, 5).Value = $"{blockDto.FirstDriller}"; - sheet.Range(15, 6, 15, 7).Merge(); - sheet.Cell(16, 3).Value = "Бурильщик 2 смена"; - sheet.Range(16, 3, 16, 4).Merge(); - sheet.Cell(16, 5).Value = $"{blockDto.SecondDriller}"; - sheet.Range(16, 6, 16, 7).Merge(); + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.VerticalDepth}"); + tuple.column += 2; - sheet.Cell(18, 3).Value = "Работа модулей САУБ:"; - sheet.Range(18, 3, 15, 5).Merge(); - sheet.Cell(18, 6).Value = "Часов:"; - sheet.Cell(18, 7).Value = "Метров:"; - sheet.Cell(19, 3).Value = "АПД (автоматическая подача долота), ч/м:"; - sheet.Range(19, 3, 19, 5).Merge(); - sheet.Cell(19, 6).Value = $"{blockDto.WorkTimeSAUB}"; - sheet.Cell(19, 7).Value = $"{blockDto.PenetrationSAUB}"; - - sheet.Cell(20, 3).Value = "Спин Мастер (осцилляция),ч/м:"; - sheet.Range(20, 3, 20, 5).Merge(); - sheet.Cell(20, 6).Value = $"{blockDto.WorkTimeSpinMaster}"; - sheet.Cell(20, 7).Value = $"{blockDto.PenetrationSpinMaster}"; - - sheet.Cell(21, 3).Value = "Торк Мастер (демпфирование), ч/:"; - sheet.Range(21, 3, 21, 5).Merge(); - sheet.Cell(21, 6).Value = $"{blockDto.WorkTimeTorkMaster}"; - sheet.Cell(21, 7).Value = $"{blockDto.PenetrationTorkMaster}"; - - sheet.Cell(22, 3).Value = "МСЕ, колличество запусков, раз:"; - sheet.Range(22, 3, 22, 5).Merge(); - sheet.Cell(22, 6).Value = $"{blockDto.CountLaunchesMSE}"; - sheet.Range(22, 6, 22, 7).Merge(); - - return (tuple.row, tuple.column); + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.ZenithAngle}"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.AzimuthAngle}"); + tuple.column = tupleStart.column; + tuple.row += 2; //15,3 + sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 1 смена"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.column += 2; + sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.FirstDriller}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.row += 1; + tuple.column = tupleStart.column; + sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 2 смена"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.column += 2; + sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.SecondDriller}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.row += 2; + tuple.column = tupleStart.column; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Работа модулей САУБ:"); + tuple.column += 3; + SetCell(sheet.Row(tuple.row), tuple.column, "Часов:"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, "Метров:").Style.Border.RightBorder = XLBorderStyleValues.Thin; + tuple.row += 1; + tuple.column = tupleStart.column; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "АПД (автоматическая подача долота), ч/м:"); + tuple.column += 3; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.WorkTimeSAUB}"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.PenetrationSAUB}").Style.Border.RightBorder = XLBorderStyleValues.Thin; + tuple.row += 1; + tuple.column = tupleStart.column; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Спин Мастер (осцилляция),ч/м:"); + tuple.column += 3; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.WorkTimeSpinMaster}"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.PenetrationSpinMaster}").Style.Border.RightBorder = XLBorderStyleValues.Thin; + tuple.row += 1; + tuple.column = tupleStart.column; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Торк Мастер (демпфирование), ч/:"); + tuple.column += 3; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.WorkTimeTorkMaster}"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.PenetrationTorkMaster}").Style.Border.RightBorder = XLBorderStyleValues.Thin; + tuple.row += 1; + tuple.column = tupleStart.column; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "МСЕ, колличество запусков, раз:"); + tuple.column += 3; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.CountLaunchesMSE}"); + tuple.column += 2; + return tuple; } - // - private void AddBlockHead(IXLWorksheet sheet, DailyReportHeadDto blockDto) + private (int row, int column) AddBlockBha(IXLWorksheet sheet, DailyReportBhaDto blockDto, (int row, int column) tupleStart) { - sheet.Cell(3, 3).Value = - $"Суточная сводка бурения скважины №{blockDto.WellName}, куст: {blockDto.ClusterName}"; - sheet.Cell(4, 3).Value = - $"Заказчик: {blockDto.Customer}"; - sheet.Cell(5, 3).Value = - $"Подрядчик: {blockDto.Contractor}"; - sheet.Cell(7, 3).Value = "Отчетный период"; - sheet.Range(7, 3, 7, 6).Merge(); - sheet.Cell(7, 7).Value = "Забой за отчетный период, м"; - sheet.Range(7, 7, 7, 10).Merge(); - sheet.Cell(8, 3).Value = "От (дата, время)"; - sheet.Range(8, 3, 8, 4).Merge(); - sheet.Cell(9, 3).Value = $"{blockDto.ReportDate}"; - sheet.Range(9, 3, 9, 4).Merge(); - sheet.Cell(8, 5).Value = "До (дата, время)"; - sheet.Range(8, 5, 8, 6).Merge(); - sheet.Cell(9, 5).Value = "=C9+1"; - sheet.Range(9, 5, 9, 6).Merge(); - sheet.Cell(8, 7).Value = "От"; - sheet.Range(8, 7, 8, 8).Merge(); - sheet.Cell(9, 7).Value = $"{blockDto.WellDepthIntervalStartDate}"; - sheet.Range(9, 7, 9, 8).Merge(); - sheet.Cell(8, 9).Value = "До"; - sheet.Range(8, 9, 8, 10).Merge(); - sheet.Cell(9, 9).Value = $"{blockDto.WellDepthIntervalFinishDate}"; - sheet.Range(9, 9, 9, 10).Merge(); - sheet.Cell(11, 3).Value = "Данные по траектории скважины на конец суток"; - sheet.Range(11, 3, 11, 10).Merge(); - sheet.Cell(12, 3).Value = "Глубина по стволу"; - sheet.Range(12, 3, 12, 4).Merge(); - sheet.Cell(13, 3).Value = $"{blockDto.BottomholeDepth}"; - sheet.Range(13, 3, 13, 4).Merge(); - sheet.Cell(12, 5).Value = "Глубина по вертикали"; - sheet.Range(12, 5, 12, 6).Merge(); - sheet.Cell(13, 5).Value = $"{blockDto.VerticalDepth}"; - sheet.Range(13, 5, 13, 6).Merge(); - sheet.Cell(12, 7).Value = "Зенитный угол"; - sheet.Range(12, 7, 12, 8).Merge(); - sheet.Cell(13, 7).Value = $"{blockDto.ZenithAngle}"; - sheet.Range(13, 7, 13, 8).Merge(); - sheet.Cell(12, 9).Value = "Азимут"; - sheet.Range(12, 9, 12, 10).Merge(); - sheet.Cell(13, 9).Value = $"{blockDto.AzimuthAngle}"; - sheet.Range(13, 9, 13, 10).Merge(); - sheet.Cell(15, 3).Value = "Бурильщик 1 смена"; - sheet.Range(15, 3, 15, 4).Merge(); - sheet.Cell(15, 5).Value = $"{blockDto.FirstDriller}"; - sheet.Range(15, 6, 15, 7).Merge(); - sheet.Cell(16, 3).Value = "Бурильщик 2 смена"; - sheet.Range(16, 3, 16, 4).Merge(); - sheet.Cell(16, 5).Value = $"{blockDto.SecondDriller}"; - sheet.Range(16, 6, 16, 7).Merge(); + tupleStart.column = 3; + tupleStart.row += 1; + var tuple = (row: tupleStart.row, column: tupleStart.column); - sheet.Cell(18, 3).Value = "Работа модулей САУБ:"; - sheet.Range(18, 3, 15, 5).Merge(); - sheet.Cell(18, 6).Value = "Часов:"; - sheet.Cell(18, 7).Value = "Метров:"; - sheet.Cell(19, 3).Value = "АПД (автоматическая подача долота), ч/м:"; - sheet.Range(19, 3, 19, 5).Merge(); - sheet.Cell(19, 6).Value = $"{blockDto.WorkTimeSAUB}"; - sheet.Cell(19, 7).Value = $"{blockDto.PenetrationSAUB}"; + - sheet.Cell(20, 3).Value = "Спин Мастер (осцилляция),ч/м:"; - sheet.Range(20, 3, 20, 5).Merge(); - sheet.Cell(20, 6).Value = $"{blockDto.WorkTimeSpinMaster}"; - sheet.Cell(20, 7).Value = $"{blockDto.PenetrationSpinMaster}"; - sheet.Cell(21, 3).Value = "Торк Мастер (демпфирование), ч/:"; - sheet.Range(21, 3, 21, 5).Merge(); - sheet.Cell(21, 6).Value = $"{blockDto.WorkTimeTorkMaster}"; - sheet.Cell(21, 7).Value = $"{blockDto.PenetrationTorkMaster}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.BHADescription}"); + tuple.row += 2; - sheet.Cell(22, 3).Value = "МСЕ, колличество запусков, раз:"; - sheet.Range(22, 3, 22, 5).Merge(); - sheet.Cell(22, 6).Value = $"{blockDto.CountLaunchesMSE}"; - sheet.Range(22, 6, 22, 7).Merge(); + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Выполняемые операции в отчетный период, комментарии:"); + tuple.column += 5; - } + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Продолжительность, ч. "); + tuple.column += 2; + SetCell(sheet.Row(tuple.row), tuple.column, "Итого").Style.Border.RightBorder = XLBorderStyleValues.Thin; + tuple.column = tupleStart.column; + tuple.row += 1; - private void AddBlockBha(IXLWorksheet sheet, DailyReportBhaDto blockDto) - { - sheet.Cell(24, 3).Value = - $"{blockDto.BHADescription}"; - sheet.Range(24, 3, 24, 10).Merge(); - sheet.Cell(26, 3).Value = - "Выполняемые операции в отчетный период, комментарии:"; - sheet.Range(26, 3, 26, 7).Merge(); - sheet.Cell(26, 8).Value = "Продолжительность, ч. "; - sheet.Range(26, 8, 26, 9).Merge(); - sheet.Cell(26, 10).Value = "Итого"; - sheet.Cell(27, 3).Value = - "Бурение с наращиваниями в инт. 2195-2763м."; - sheet.Range(27, 3, 27, 7).Merge(); - sheet.Cell(27, 8).Value = ""; - sheet.Cell(27, 9).Value = ""; - sheet.Cell(27, 10).Value = "=IF(I27>0;(I27-H27)*24;\"\")"; - sheet.Cell(28, 3).Value = - "Промывка."; - sheet.Range(28, 3, 28, 7).Merge(); - sheet.Cell(28, 8).Value = ""; - sheet.Cell(28, 9).Value = ""; - sheet.Cell(28, 10).Value = "=IF(I28>0;(I28-H28)*24;\"\")"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Бурение с наращиваниями в инт. 2195-2763м."); + tuple.column += 5; - sheet.Cell(29, 3).Value = - "Подъем КНБК в инт. 2763-2442м."; - sheet.Range(29, 3, 29, 7).Merge(); - sheet.Cell(29, 8).Value = ""; - sheet.Cell(29, 9).Value = ""; - sheet.Cell(29, 10).Value = "=IF(I29>0;(I29-H29)*24;\"\")"; + SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00"); + tuple.column += 1; - sheet.Cell(30, 3).Value = - "Спуск КНБК в инт. 2442-2763м."; - sheet.Range(30, 3, 30, 7).Merge(); - sheet.Cell(30, 8).Value = ""; - sheet.Cell(30, 9).Value = ""; - sheet.Cell(30, 10).Value = "=IF(I30>0;(I30-H30)*24;\"\")"; + SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column) + .FormulaR1C1 = FormulaBhaBlock(tuple); + tuple.column = tupleStart.column; + tuple.row += 1; - sheet.Cell(27, 3).Value = - "Бурение с наращиваниями в инт. 2763-2850м."; - sheet.Range(31, 3, 31, 7).Merge(); - sheet.Cell(31, 8).Value = ""; - sheet.Cell(31, 9).Value = ""; - sheet.Cell(31, 10).Value = "=IF(I31>0;(I31-H31)*24;\"\")"; + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Промывка."); + tuple.column += 5; + + SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00"); + tuple.column += 1; + + SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column) + .FormulaR1C1 = FormulaBhaBlock(tuple); + tuple.column = tupleStart.column; + tuple.row += 1; + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Подъем КНБК в инт. 2763-2442м."); + tuple.column += 5; + + SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00"); + tuple.column += 1; + + SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column) + .FormulaR1C1 = FormulaBhaBlock(tuple); + tuple.column = tupleStart.column; + tuple.row += 1; + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Спуск КНБК в инт. 2442-2763м."); + tuple.column += 5; + + SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00"); + tuple.column += 1; + + SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column) + .FormulaR1C1 = FormulaBhaBlock(tuple); + tuple.column = tupleStart.column; + tuple.row += 1; + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Бурение с наращиваниями в инт. 2763-2850м."); + tuple.column += 5; + + SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00"); + tuple.column += 1; + + SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column) + .FormulaR1C1 = FormulaBhaBlock(tuple); + + return tuple; } - private void AddBlockTimeBalance(IXLWorksheet sheet) + private (int row, int column) AddBlockTimeBalance(IXLWorksheet sheet, (int row, int column) tupleStart) { - sheet.Cell(33, 6).Value = + tupleStart.column = 4; + tupleStart.row += 2; + var tuple = (row: tupleStart.row, column: tupleStart.column); + + sheet.Cell(tuple.row, tuple.column + 2).Value = "БАЛАНС ВРЕМЕНИ"; - sheet.Range(33, 6, 33, 7).Merge(); + sheet.Range(tuple.row, tuple.column + 2, tuple.row, tuple.column + 3).Merge(); + tuple.row += 1; - sheet.Cell(34, 4).Value = - "Бурение"; - sheet.Cell(34, 5).Value = - ""; - sheet.Cell(34, 6).Value = - "КНБК"; - sheet.Cell(34, 7).Value = - ""; - sheet.Cell(34, 8).Value = - "ОЗЦ"; - sheet.Cell(34, 9).Value = - ""; - sheet.Cell(35, 4).Value = - "Промывка"; - sheet.Cell(35, 5).Value = - ""; - sheet.Cell(35, 6).Value = - "СПО"; - sheet.Cell(35, 7).Value = - ""; - sheet.Cell(35, 8).Value = - "Тех. работы"; - sheet.Cell(35, 9).Value = - ""; + SetCell(sheet.Row(tuple.row), tuple.column, "Бурение"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, "КНБК"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, "ОЗЦ"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column = tupleStart.column; + tuple.row += 1; - sheet.Cell(36, 4).Value = - "Наращивание"; - sheet.Cell(36, 5).Value = - ""; - sheet.Cell(36, 6).Value = - "ПЗР"; - sheet.Cell(36, 7).Value = - ""; - sheet.Cell(36, 8).Value = - "Снятие замера"; - sheet.Cell(36, 9).Value = - ""; + SetCell(sheet.Row(tuple.row), tuple.column, "Промывка"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, "СПО"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, "Тех. работы"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column = tupleStart.column; + tuple.row += 1; - sheet.Cell(37, 4).Value = - "Проработка"; - sheet.Cell(37, 5).Value = - ""; - sheet.Cell(37, 6).Value = - "ПВО"; - sheet.Cell(37, 7).Value = - ""; - sheet.Cell(37, 8).Value = - "Цементирование"; - sheet.Cell(37, 9).Value = - ""; + SetCell(sheet.Row(tuple.row), tuple.column, "Наращивание"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, "ПЗР"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, "Снятие замера"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column = tupleStart.column; + tuple.row += 1; - sheet.Cell(38, 4).Value = - "Расширка"; - sheet.Cell(38, 5).Value = - ""; - sheet.Cell(38, 6).Value = - "ПГР"; - sheet.Cell(38, 7).Value = - ""; - sheet.Cell(38, 8).Value = - "Простой"; - sheet.Cell(38, 9).Value = - ""; + SetCell(sheet.Row(tuple.row), tuple.column, "Расширка"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, "ПГР"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, "Простой"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column = tupleStart.column; + tuple.row += 1; - sheet.Cell(39, 4).Value = - "Ремонт "; - sheet.Cell(39, 5).Value = - ""; - sheet.Cell(39, 6).Value = - "ГИС"; - sheet.Cell(39, 7).Value = - ""; - sheet.Cell(39, 8).Value = - "НПВ"; - sheet.Cell(39, 9).Value = - ""; + SetCell(sheet.Row(tuple.row), tuple.column, "Ремонт"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, "ГИС"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, "НПВ"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + return tuple; } - private void AddBlockDimensionless(IXLWorksheet sheet, DailyReportDimensionlessDto blockDto) + private (int row, int column) AddBlockDimensionless(IXLWorksheet sheet, DailyReportDimensionlessDto blockDto, (int row, int column) tupleStart) { - sheet.Cell(41, 6).Value = + tupleStart.column = 4; + tupleStart.row += 2; + var tuple = (row: tupleStart.row, column: tupleStart.column); + + sheet.Cell(tuple.row, tuple.column).Value = "БЕЗМЕТРАЖНЫЕ РАБОТЫ"; - sheet.Range(41, 6, 41, 7).Merge(); + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 5).Merge(); + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Подготовка ствола скв. к наращиванию"); + tuple.column += 3; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, "Наращивание"); + tuple.row += 1; + tuple.column = tupleStart.column; - sheet.Cell(42, 4).Value = - "Подготовка ствола скв. к наращиванию"; - sheet.Range(42, 4, 42, 6).Merge(); - sheet.Cell(42, 7).Value = - "Наращивание"; - sheet.Range(42, 7, 42, 9).Merge(); + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Норматив на одну операцию, (мин):"); + tuple.column += 2; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.StandardTimeBarrelPreparation}"); + tuple.column += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Норматив на одну операцию, (мин):"); + tuple.column += 2; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.StandardTimeExtension}"); + tuple.column = tupleStart.column; + tuple.row += 1; - sheet.Cell(43, 4).Value = - "Норматив на одну операцию, (мин):"; - sheet.Range(43, 4, 43, 5).Merge(); - sheet.Cell(43, 6).Value = - $"{blockDto.StandardTimeBarrelPreparation}"; - sheet.Cell(43, 7).Value = - "Норматив на одну операцию, (мин):"; - sheet.Range(43, 7, 43, 8).Merge(); - sheet.Cell(43, 9).Value = - $"{blockDto.StandardTimeExtension}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Проработка при бур, план (ч):"); + tuple.column += 2; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"{converteCellCoordinate(tuple.row - 1, true, tuple.column)}/60*{converteCellCoordinate(tuple.row + 28, true, tuple.column + 1)}"; + tuple.column += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Наращивание, план (ч):"); + tuple.column += 2; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"{converteCellCoordinate(tuple.row - 1, true, tuple.column)}/60*{converteCellCoordinate(tuple.row + 28, true, tuple.column - 2)}"; + tuple.column = tupleStart.column; + tuple.row += 1; - sheet.Cell(44, 4).Value = - "Проработка при бур, план (ч):"; - sheet.Range(44, 4, 44, 5).Merge(); - sheet.Cell(44, 6).Value = - "=F43/60*G72"; - sheet.Cell(44, 7).Value = - "Наращивание, план (ч):"; - sheet.Range(44, 7, 44, 8).Merge(); - sheet.Cell(44, 9).Value = - "=I43/60*G72"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Проработка при бур, факт (ч):"); + tuple.column += 2; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.ActualTimeBarrelPreparation}"); + tuple.column += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Наращивание, факт (ч):"); + tuple.column += 2; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.ActualTimeExtension}"); + tuple.column = tupleStart.column; + tuple.row += 1; - sheet.Cell(45, 4).Value = - "Проработка при бур, факт (ч):"; - sheet.Range(45, 4, 45, 5).Merge(); - sheet.Cell(45, 6).Value = - $"{blockDto.ActualTimeBarrelPreparation}"; - sheet.Cell(45, 7).Value = - "Наращивание, факт (ч):"; - sheet.Range(45, 7, 45, 8).Merge(); - sheet.Cell(45, 9).Value = - $"{blockDto.ActualTimeExtension}"; - sheet.Cell(46, 4).Value = - "Превышение плановых норм, (ч):"; - sheet.Range(46, 4, 46, 5).Merge(); - sheet.Cell(46, 6).Value = - "=F45-F44"; - sheet.Cell(46, 7).Value = - "Превышение плановых норм, (ч):"; - sheet.Range(46, 7, 46, 8).Merge(); - sheet.Cell(46, 9).Value = - "=I45-I44"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Превышение плановых норм, (ч):"); + tuple.column += 2; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"{converteCellCoordinate(tuple.row - 1, true, tuple.column)}-{converteCellCoordinate(tuple.row - 2, true, tuple.column)}"; + tuple.column += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Превышение плановых норм, (ч):"); + tuple.column += 2; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"{converteCellCoordinate(tuple.row - 1, true, tuple.column)}-{converteCellCoordinate(tuple.row - 2, true, tuple.column)}"; + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row + 1, tuple.column + 2).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, "Краткие причины: доп проработки при переходе из слайда в ротор, в середине свечи."); + tuple.column += 3; + sheet.Range(tuple.row, tuple.column, tuple.row + 1, tuple.column + 2).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, "Краткие причины: нехватка пальцев на обоих руках у первого помощника бурильщика."); + tuple.column += 2; + return tuple; + } + + private (int row, int column) AddBlockSaub(IXLWorksheet sheet, DailyReportSaubDto blockDto, (int row, int column) tupleStart) + { - sheet.Cell(47, 4).Value = - "Краткие причины: доп проработки при переходе из слайда в ротор, в середине свечи."; - sheet.Range(47, 4, 48, 6).Merge(); + tupleStart.row += 2; + tupleStart.column = 3; + var tuple = (row: tupleStart.row, column: tupleStart.column); - sheet.Cell(47, 7).Value = - "Краткие причины: нехватка пальцев на обоих руках у первого помощника бурильщика."; - sheet.Range(47, 7, 48, 9).Merge(); + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, $"Бурение в роторе : {blockDto.RotorDrillingModes}"); + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, $"Бурение в слайде : {blockDto.SlideDrillingModes}"); + tuple.row += 2; + + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, "Бурение в роторе (за отчетный период) с использование САУБ-1"); + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Проходка"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Часы бурения"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Мех. скорость"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Среднее диф. Давление") + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.PenetrationInRotor}"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.NumberDrillingHours}"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column).FormulaA1 = FormulaMechanicalSpeed(tuple); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.AVGDiffDropRotor}") + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + tuple.column = tupleStart.column; + tuple.row += 2; + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, "Бурение в слайде (за отчетный период) с использование САУБ-1"); + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Проходка"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Часы бурения"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Мех. скорость"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, "Среднее диф. Давление"); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.PenetrationInSlide}"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.DrillingTimeInRotor}"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column).FormulaA1 = FormulaMechanicalSpeed(tuple); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.AVGDiffPressureSlide}"); + tuple.column = tupleStart.column; + tuple.row += 2; + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 5).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Итого за отчетный период, использование САУБ-1"); + tuple.column += 6; + sheet.Range(tuple.row, tuple.column, tuple.row + 1, tuple.column + 1).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, "Плановая мех скорость"); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Проходка"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Часы бурения"); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Мех. скорость"); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column).FormulaA1 = FormulaSinking(tuple); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, ""); + sheet.Cell(tuple.row, tuple.column).FormulaA1 = FormulaDrillingWatch(tuple); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column += 2; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.SectionROPPlan}"); + tuple.column = tupleStart.column; + tuple.row += 2; + + + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Увеличение мех скорости за секцию %"); + tuple.column += 4; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Увеличение мех скорости за сутки %"); + tuple.column += 4; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Сокращение времени бурения за секцию, ч"); + tuple.column += 4; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Ротор / слайд, %"); + tuple.column += 4; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "МСП за секцию м/ч."); + tuple.column += 4; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, ""); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Время бурения за секцию"); + tuple.column += 4; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.SectionDrillingTimeTotal}"); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Проходка за секцию"); + tuple.column += 4; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.SectionPenetrationTotal}"); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Кол- во наращиваний"); + tuple.column += 4; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.ExtensionsCount}"); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row), tuple.column, "Отклонение от ГГД +/-, сут"); + tuple.column += 4; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.DeviationFromTVD}"); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row), tuple.column, $"Примечание: {blockDto.DeclinesReasonsROP}"); + tuple.column += 7; + return tuple; } - //private (int,int) AddBlockSaub(IXLWorksheet sheet, Tuple startRow, DailyReportBlock5 blockDto) - private void AddBlockSaub(IXLWorksheet sheet, DailyReportSaubDto blockDto) + private (int row, int column) AddBlockSign(IXLWorksheet sheet, DailyReportSignDto blockDto, (int row, int column) tupleStart) { - - sheet.Cell(50, 3).Value = - $"Бурение в роторе : {blockDto.RotorDrillingModes}"; - sheet.Range(50, 4, 50, 10).Merge(); - sheet.Cell(50, 3).Value = - $"Бурение в слайде : {blockDto.SlideDrillingModes}"; - sheet.Range(50, 4, 50, 10).Merge(); - - - sheet.Cell(53, 3).Value = "Бурение в роторе (за отчетный период) с использование САУБ-1"; - sheet.Range(53, 3, 53, 10).Merge(); - sheet.Cell(54, 3).Value = "Проходка"; - sheet.Range(54, 3, 54, 4).Merge(); - sheet.Cell(55, 3).Value = $"{blockDto.PenetrationInRotor}"; - sheet.Range(55, 3, 55, 4).Merge(); - sheet.Cell(54, 5).Value = "Часы бурения"; - sheet.Range(54, 5, 54, 6).Merge(); - sheet.Cell(55, 5).Value = $"{blockDto.NumberDrillingHours}"; - sheet.Range(55, 5, 55, 6).Merge(); - sheet.Cell(54, 7).Value = "Мех. скорость"; - sheet.Range(54, 7, 54, 8).Merge(); - sheet.Cell(55, 7).Value = "=IF(E55>0;C55/E55;0)"; - sheet.Range(55, 7, 55, 8).Merge(); - sheet.Cell(54, 9).Value = "Среднее диф. Давление"; - sheet.Range(54, 9, 54, 10).Merge(); - sheet.Cell(55, 9).Value = $"{blockDto.AVGDiffDropRotor}"; - sheet.Range(55, 9, 55, 10).Merge(); - - sheet.Cell(57, 3).Value = "Бурение в слайде (за отчетный период) с использование САУБ-1"; - sheet.Range(57, 3, 57, 10).Merge(); - sheet.Cell(58, 3).Value = "Проходка"; - sheet.Range(58, 3, 58, 4).Merge(); - sheet.Cell(59, 3).Value = $"{blockDto.PenetrationInSlide}"; - sheet.Range(59, 3, 59, 4).Merge(); - sheet.Cell(58, 5).Value = "Часы бурения"; - sheet.Range(58, 5, 58, 6).Merge(); - sheet.Cell(59, 5).Value = $"{blockDto.DrillingTimeInRotor}"; - sheet.Range(59, 5, 59, 6).Merge(); - sheet.Cell(58, 7).Value = "Мех. скорость"; - sheet.Range(58, 7, 58, 8).Merge(); - sheet.Cell(59, 7).Value = "=IF(E59>0;C59/E59;0)"; - sheet.Range(59, 7, 59, 8).Merge(); - sheet.Cell(58, 9).Value = "Среднее диф. Давление"; - sheet.Range(58, 9, 58, 10).Merge(); - sheet.Cell(59, 9).Value = $"{blockDto.AVGDiffPressureSlide}"; - sheet.Range(59, 9, 59, 10).Merge(); - - sheet.Cell(61, 3).Value = "Итого за отчетный период, использование САУБ-1"; - sheet.Range(61, 3, 61, 8).Merge(); - sheet.Cell(62, 3).Value = "Проходка"; - sheet.Range(62, 3, 62, 4).Merge(); - sheet.Cell(63, 3).Value = "=IF((C59+C55)<>(I9-G9);\"ОШИБКА\";C55+C59)"; - sheet.Range(63, 3, 63, 4).Merge(); - sheet.Cell(62, 5).Value = "Часы бурения"; - sheet.Range(62, 5, 62, 6).Merge(); - sheet.Cell(63, 5).Value = "=E55+E59"; - sheet.Range(63, 5, 63, 6).Merge(); - sheet.Cell(62, 7).Value = "Мех. скорость"; - sheet.Range(62, 7, 62, 8).Merge(); - sheet.Cell(63, 7).Value = ""; - sheet.Range(63, 7, 63, 8).Merge(); - sheet.Cell(61, 9).Value = "Плановая мех скорость"; - sheet.Range(61, 9, 62, 10).Merge(); - sheet.Cell(63, 9).Value = $"{blockDto.SectionROPPlan}"; - sheet.Range(63, 9, 63, 10).Merge(); - - - sheet.Cell(65, 3).Value = "Увеличение мех скорости за секцию %"; - sheet.Range(65, 3, 65, 6).Merge(); - sheet.Cell(65, 7).Value = ""; - sheet.Range(65, 7, 65, 10).Merge(); - sheet.Cell(66, 3).Value = "Увеличение мех скорости за сутки %"; - sheet.Range(66, 3, 66, 6).Merge(); - sheet.Cell(66, 7).Value = ""; - sheet.Range(66, 7, 66, 10).Merge(); - sheet.Cell(67, 3).Value = "Сокращение времени бурения за секцию, ч"; - sheet.Range(67, 3, 67, 6).Merge(); - sheet.Cell(67, 7).Value = ""; - sheet.Range(67, 7, 67, 10).Merge(); - sheet.Cell(68, 3).Value = "Ротор / слайд, %"; - sheet.Range(68, 3, 68, 6).Merge(); - sheet.Cell(68, 7).Value = ""; - sheet.Range(68, 7, 68, 10).Merge(); - sheet.Cell(69, 3).Value = "МСП за секцию м/ч."; - sheet.Range(69, 3, 69, 6).Merge(); - sheet.Cell(69, 7).Value = ""; - sheet.Range(69, 7, 69, 10).Merge(); - - sheet.Cell(70, 3).Value = "Время бурения за секцию"; - sheet.Range(70, 3, 70, 6).Merge(); - sheet.Cell(70, 7).Value = $"{blockDto.SectionDrillingTimeTotal}"; - sheet.Range(70, 7, 70, 10).Merge(); - - sheet.Cell(71, 3).Value = "Проходка за секцию"; - sheet.Range(71, 3, 71, 6).Merge(); - sheet.Cell(71, 7).Value = $"{blockDto.SectionPenetrationTotal}"; - sheet.Range(71, 7, 71, 10).Merge(); - - sheet.Cell(72, 3).Value = "Кол- во наращиваний"; - sheet.Range(72, 3, 72, 6).Merge(); - sheet.Cell(72, 7).Value = $"{blockDto.ExtensionsCount}"; - sheet.Range(72, 7, 72, 10).Merge(); - - sheet.Cell(73, 3).Value = "Отклонение от ГГД +/-, сут"; - sheet.Range(73, 3, 73, 6).Merge(); - sheet.Cell(73, 7).Value = $"{blockDto.DeviationFromTVD}"; - sheet.Range(73, 7, 73, 10).Merge(); - - sheet.Cell(74, 3).Value = $"Примечание: {blockDto.DeclinesReasonsROP}"; - sheet.Range(74, 3, 75, 10).Merge(); - - } - - private void AddBlockSign(IXLWorksheet sheet, DailyReportSignDto blockDto) - { - sheet.Cell(78, 3).Value = + tupleStart.row += 2; + tupleStart.column = 3; + var tuple = (row: tupleStart.row, column: tupleStart.column); + sheet.Cell(tuple.row,tuple.column).Value = "Мастер буровой "; - sheet.Range(78, 3, 78, 4).Merge(); - sheet.Cell(78, 9).Value = + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + sheet.Cell(tuple.row, tuple.column+5).Value = $"{blockDto.DrillingMaster}"; - sheet.Range(78, 9, 78, 10).Merge(); - - sheet.Cell(80, 3).Value = + sheet.Range(tuple.row, tuple.column + 5, tuple.row, tuple.column + 1).Merge(); + tuple.column = tupleStart.column; + tuple.row += 2; + sheet.Cell(tuple.row, tuple.column).Value = "Супервайзер "; - sheet.Range(80, 3, 80, 4).Merge(); - sheet.Cell(80, 9).Value = + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + sheet.Cell(tuple.row, tuple.column + 5).Value = $"{blockDto.Supervisor}"; - sheet.Range(80, 9, 80, 10).Merge(); + sheet.Range(tuple.row, tuple.column + 5, tuple.row, tuple.column + 1).Merge(); + + return tuple; } diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs index c26c57f6..61cbf11e 100644 --- a/ConsoleApp1/Program.cs +++ b/ConsoleApp1/Program.cs @@ -27,8 +27,14 @@ namespace ConsoleApp1 WellDepthIntervalStartDate= 26.5, BottomholeDepth= 66.6 }; + var block2 = new DailyReportBhaDto() + { + BHADescription="sadasdasdasdasdasdjlaskjdaksjdlasdlalskdklj" + }; - var ms = MakeReportFromBlocks(block); + var block3 = new DailyReportSaubDto(); + + var ms = MakeReportFromBlocks(block,block3); //File.Create("", MakeReportFromBlocks(block)); using var file = new FileStream("file.xlsx", FileMode.Create, System.IO.FileAccess.Write); byte[] bytes = new byte[ms.Length]; @@ -37,10 +43,10 @@ namespace ConsoleApp1 ms.Close(); } - public static Stream MakeReportFromBlocks(DailyReportHeadDto blockHead) + public static Stream MakeReportFromBlocks(DailyReportHeadDto blockHead, DailyReportSaubDto blockD) { using var workbook = new XLWorkbook(); - FillSheet6blocks(workbook, blockHead); + FillSheet6blocks(workbook, blockHead, blockD); MemoryStream memoryStream = new MemoryStream(); workbook.SaveAs(memoryStream, new SaveOptions { }); memoryStream.Seek(0, SeekOrigin.Begin); @@ -54,27 +60,105 @@ namespace ConsoleApp1 return $"{convertColumn}{row}"; } - public static void FillSheet6blocks(XLWorkbook workbook, DailyReportHeadDto blockHead) + private static string FormulaMechanicalSpeed((int row, int col) tuple) + { + return $"=IF({converteCellCoordinate(tuple.row,true,tuple.col-2)}>0," + + $"{converteCellCoordinate(tuple.row,true,tuple.col-4)}/{converteCellCoordinate(tuple.row,true,tuple.col-2)},0)"; + } + + private static string FormulaDrillingWatch((int row, int col) tuple) + { + return $"=IF({converteCellCoordinate(tuple.row - 8,true,tuple.col)}+" + + $"{converteCellCoordinate(tuple.row - 4,true,tuple.col)}"; + } + + private static string FormulaSinking((int row, int col) tuple) + { + return $"=IF(({converteCellCoordinate(tuple.row - 4,true,tuple.col)}+{converteCellCoordinate(tuple.row - 8,true,tuple.col)})" + + $"<>({converteCellCoordinate(tuple.row - 54,true,tuple.col + 6)}-{converteCellCoordinate(tuple.row - 54,true,tuple.col + 4)}),\"ОШИБКА\"" + + $",{converteCellCoordinate(tuple.row - 4,true,tuple.col)}+{converteCellCoordinate(tuple.row - 8,true,tuple.col)})"; + + //return $"=IF({converteCellCoordinate(tuple.row - 8,true,tuple.col)}+" + + // $"{converteCellCoordinate(tuple.row - 4,true,tuple.col)}"; + } + + public static void FillSheet6blocks(XLWorkbook workbook, DailyReportHeadDto blockHead, DailyReportSaubDto blockD) { var sheet = workbook.Worksheets.Add(blockHead.ReportDate.ToString("dd.MM.yyyy")); //sheet.Name = blockHead.ReportDate.ToString("dd.MM.yyyy"); var tuple = (row: 3, column: 3); - + sheet.Style.Font.FontName = "TimesNewRoman"; + sheet.Style.Font.FontSize = 10; + tuple = (AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).row, AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).column); - //sheet.Columns().AdjustToContents(); + AddBlockBha(sheet, blockD, tuple); + //sheet.Columns().AdjustToContents(8,9); + //sheet.Rows().AdjustToContents(3,21); + + } // + private static IXLStyle SetBorder(IXLStyle style) + { + style.Border.RightBorder = XLBorderStyleValues.Thin; + style.Border.LeftBorder = XLBorderStyleValues.Thin; + style.Border.TopBorder = XLBorderStyleValues.Thin; + style.Border.BottomBorder = XLBorderStyleValues.Thin; + style.Border.InsideBorder = XLBorderStyleValues.Thin; + return style; + } + + private static IXLCell SetDateTime(IXLCell cell) + { + cell.DataType = XLDataType.DateTime; + cell.Style.DateFormat.Format = "DD.MM.YYYY HH:MM:SS"; + return cell; + } + + private static IXLCell SetNumber(IXLCell cell) + { + cell.DataType = XLDataType.Number; + cell.Style.NumberFormat.Format = "0.00"; + return cell; + } + + private static IXLCell SetCell(IXLRow row, int colunm, object value, int maxChartsToWrap = 88) + { + var cell = row.Cell(colunm); + cell.Value = value; + + SetBorder(cell.Style); + cell.Style.Alignment.WrapText = true; + + + if (value is string valueString && valueString.Length > maxChartsToWrap) + { + var baseHeight = row.Height; + row.Height = 0.82d * baseHeight * Math.Ceiling(1d + valueString.Length / maxChartsToWrap); + } + + if (value is DateTime) + { + SetDateTime(cell); + } + else if (value is IFormattable) + { + SetNumber(cell); + } + + return cell; + } + private static (int row, int column) AddBlockHead1(IXLWorksheet sheet, DailyReportHeadDto blockDto, (int row, int column) tupleStart) { var tuple = (row: tupleStart.row, column: tupleStart.column); sheet.Cell(tuple.row, tuple.column).Value = $"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); - //4 - tuple.row += 1; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); + tuple.row += 1; sheet.Cell(tuple.row, tuple.column).Value = $"Заказчик: {blockDto.Customer}"; sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); @@ -84,51 +168,348 @@ namespace ConsoleApp1 sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); tuple.row += 2; //7,3 - sheet.Cell(tuple.row, tuple.column).Value = "Отчетный период"; sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Отчетный период"); tuple.column += 4; - sheet.Cell(tuple.row, tuple.column).Value = "Забой за отчетный период, м"; sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); + sheet.Cell(tuple.row, tuple.column+3).Style.Border.RightBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, "Забой за отчетный период, м"); tuple.column = tupleStart.column; tuple.row += 1; //8,3 - - sheet.Cell(tuple.row, tuple.column).Value = "От (дата, время)"; sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - + SetCell(sheet.Row(tuple.row),tuple.column, "От (дата, время)"); tuple.column += 2; //8,5 - sheet.Cell(tuple.row, tuple.column).Value = "До (дата, время)"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "До (дата, время)"); tuple.column += 2; //8,7 - sheet.Cell(tuple.row, tuple.column).Value = "От"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "От"); tuple.column += 2; //8,9 - sheet.Cell(tuple.row, tuple.column).Value = "До"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "До"); + sheet.Cell(tuple.row, tuple.column+1).Style.Border.RightBorder = XLBorderStyleValues.Thin; tuple.column = tupleStart.column; tuple.row += 1; //9,3 + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.ReportDate}"); + tuple.column += 2; - - sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.ReportDate}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + //согласно формуле в шаблоне - ячейка С9 + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, ""); + sheet.Cell(tuple.row,tuple.column).FormulaA1 = $"={converteCellCoordinate(tuple.row, true, tuple.column - 2)}-1"; + SetDateTime(sheet.Cell(tuple.row,tuple.column)); tuple.column += 2; - //согласно формуле в шаблоне - ячейка С9 - sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"={converteCellCoordinate(tuple.row, true, tuple.column-2)}-1"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.WellDepthIntervalStartDate}"); tuple.column += 2; - sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.WellDepthIntervalStartDate}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); - tuple.column += 2; - sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.WellDepthIntervalFinishDate}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.WellDepthIntervalFinishDate}"); tuple.column = tupleStart.column; - tuple.row += 2; //11,3 + tuple.row += 2; //11,3 + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, "Данные по траектории скважины на конец суток"); + tuple.column = tupleStart.column; + tuple.row += 1;//12 + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Глубина по стволу"); + tuple.column += 2; //12,5 + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Глубина по вертикали"); + tuple.column += 2; //12,7 + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Зенитный угол"); + tuple.column += 2; //12,9 + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, "Азимут"); + tuple.column = tupleStart.column; + tuple.row += 1; //13,3 + + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.BottomholeDepth}"); + tuple.column += 2; + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.VerticalDepth}"); + tuple.column += 2; + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.ZenithAngle}"); + tuple.column += 2; + + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.AzimuthAngle}"); + tuple.column = tupleStart.column; + tuple.row += 2; //15,3 - return (tuple.Item1, tuple.Item2); + sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 1 смена"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.column += 2; + sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.FirstDriller}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.row += 1; + tuple.column = tupleStart.column; + sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 2 смена"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.column += 2; + sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.SecondDriller}"; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); + tuple.row += 2; + tuple.column = tupleStart.column; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column,"Работа модулей САУБ:"); + tuple.column += 3; + SetCell(sheet.Row(tuple.row),tuple.column,"Часов:"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row),tuple.column, "Метров:").Style.Border.RightBorder = XLBorderStyleValues.Thin; + tuple.row += 1; + tuple.column = tupleStart.column; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column,"АПД (автоматическая подача долота), ч/м:"); + tuple.column += 3; + SetCell(sheet.Row(tuple.row),tuple.column,$"{blockDto.WorkTimeSAUB}"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationSAUB}").Style.Border.RightBorder = XLBorderStyleValues.Thin; + tuple.row += 1; + tuple.column = tupleStart.column; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column,"Спин Мастер (осцилляция),ч/м:"); + tuple.column += 3; + SetCell(sheet.Row(tuple.row),tuple.column,$"{blockDto.WorkTimeSpinMaster}"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationSpinMaster}").Style.Border.RightBorder = XLBorderStyleValues.Thin; + tuple.row += 1; + tuple.column = tupleStart.column; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column,"Торк Мастер (демпфирование), ч/:"); + tuple.column += 3; + SetCell(sheet.Row(tuple.row),tuple.column,$"{blockDto.WorkTimeTorkMaster}"); + tuple.column += 1; + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationTorkMaster}").Style.Border.RightBorder = XLBorderStyleValues.Thin; + tuple.row += 1; + tuple.column = tupleStart.column; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column,"МСЕ, колличество запусков, раз:"); + tuple.column += 3; + sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.CountLaunchesMSE}"); + tuple.column+=2; + return tuple; + } + private static (int row, int column) AddBlockBha(IXLWorksheet sheet, DailyReportSaubDto blockDto, (int row, int column) tupleStart) + { + tupleStart.row += 2; + tupleStart.column = 3; + var tuple = (row: tupleStart.row, column: tupleStart.column); + + + sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, $"Бурение в роторе : {blockDto.RotorDrillingModes}"); + tuple.row+=1; + sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, $"Бурение в слайде : {blockDto.SlideDrillingModes}"); + tuple.row+=2; + + + sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, "Бурение в роторе (за отчетный период) с использование САУБ-1"); + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Проходка"); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Часы бурения"); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Мех. скорость"); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Среднее диф. Давление") + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + tuple.column=tupleStart.column; + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationInRotor}"); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.NumberDrillingHours}"); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, ""); + sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaMechanicalSpeed(tuple); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.AVGDiffDropRotor}") + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + tuple.column=tupleStart.column; + tuple.row+=2; + + sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, "Бурение в слайде (за отчетный период) с использование САУБ-1"); + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Проходка"); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Часы бурения"); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Мех. скорость"); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, "Среднее диф. Давление"); + tuple.column=tupleStart.column; + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationInSlide}"); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.DrillingTimeInRotor}"); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, ""); + sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaMechanicalSpeed(tuple); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.AVGDiffPressureSlide}"); + tuple.column=tupleStart.column; + tuple.row+=2; + + sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 5).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Итого за отчетный период, использование САУБ-1"); + tuple.column+=6; + sheet.Range(tuple.row,tuple.column, tuple.row + 1,tuple.column + 1).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, "Плановая мех скорость"); + tuple.column = tupleStart.column; + tuple.row += 1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Проходка"); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Часы бурения"); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Мех. скорость"); + tuple.column=tupleStart.column; + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, ""); + sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaSinking(tuple); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, ""); + sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaDrillingWatch(tuple); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, ""); + tuple.column+=2; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.SectionROPPlan}"); + tuple.column=tupleStart.column; + tuple.row+=2; + + + + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Увеличение мех скорости за секцию %"); + tuple.column+=4; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, ""); + tuple.column=tupleStart.column; + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Увеличение мех скорости за сутки %"); + tuple.column+=4; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, ""); + tuple.column=tupleStart.column; + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Сокращение времени бурения за секцию, ч"); + tuple.column+=4; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, ""); + tuple.column=tupleStart.column; + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Ротор / слайд, %"); + tuple.column+=4; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, ""); + tuple.column=tupleStart.column; + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "МСП за секцию м/ч."); + tuple.column+=4; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, ""); + tuple.column=tupleStart.column; + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Время бурения за секцию"); + tuple.column+=4; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.SectionDrillingTimeTotal}"); + tuple.column=tupleStart.column; + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Проходка за секцию"); + tuple.column+=4; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.SectionPenetrationTotal}"); + tuple.column=tupleStart.column; + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Кол- во наращиваний"); + tuple.column+=4; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.ExtensionsCount}"); + tuple.column=tupleStart.column; + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); + SetCell(sheet.Row(tuple.row),tuple.column, "Отклонение от ГГД +/-, сут"); + tuple.column+=4; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.DeviationFromTVD}"); + tuple.column=tupleStart.column; + tuple.row+=1; + sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 7).Merge() + .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; + SetCell(sheet.Row(tuple.row),tuple.column, $"Примечание: {blockDto.DeclinesReasonsROP}"); + tuple.column += 7; + return tuple; } } struct CellAddress From 9a3ac58219587c6b2c30662ca0a17b0d2deb6e9a Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Thu, 23 Jun 2022 16:42:20 +0500 Subject: [PATCH 03/34] Edit model for Report add model TimeBalance --- .../Data/DailyReport/DailyReportBhaDto.cs | 50 +++++++++ .../Data/DailyReport/DailyReportHeadDto.cs | 9 +- .../Data/DailyReport/DailyReportSaubDto.cs | 25 +++++ .../DailyReport/DailyReportTimeBalanceDto.cs | 100 ++++++++++++++++++ 4 files changed, 181 insertions(+), 3 deletions(-) create mode 100644 AsbCloudApp/Data/DailyReport/DailyReportTimeBalanceDto.cs diff --git a/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs index 7039d59f..1eef09ab 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs @@ -7,6 +7,56 @@ namespace AsbCloudApp.Data.DailyReportModel /// КНБК описание /// public string BHADescription { get; set; } + + /// + /// Бурение с наращиваниями в инт. 2195-2763м. Время начала + /// + public string ExtensionDrillingOneBegin{ get; set; } + + /// + /// Бурение с наращиваниями в инт. 2195-2763м. Время окончания + /// + public string ExtensionDrillingOneFinish { get; set; } + + /// + /// Промывка. Время начала + /// + public string SluiceBegin { get; set; } + + /// + /// Промывка. Время окончания + /// + public string SluiceFinish { get; set; } + + /// + /// Подьем КНБК. Время начала + /// + public string ClimbBegin { get; set; } + + /// + /// Подьем КНБК. Время окончания + /// + public string ClimbFinish { get; set; } + + /// + /// Спуск КНБК. Время начала + /// + public string DescentBegin { get; set; } + + /// + /// Спуск КНБК. Время окончания + /// + public string DescentFinish { get; set; } + + /// + /// Бурение с наращиваниями в инт. 2763-2850м. Время начала + /// + public string ExtensionDrillingTwoBegin { get; set; } + + /// + /// Бурение с наращиваниями в инт. 2763-2850м. Время окончания + /// + public string ExtensionDrillingTwoFinish { get; set; } } } diff --git a/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs index 38fcea8f..615859ca 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs @@ -1,9 +1,7 @@ using System; namespace AsbCloudApp.Data.DailyReportModel { - /// - /// - /// + public class DailyReportHeadDto { /// @@ -105,6 +103,11 @@ namespace AsbCloudApp.Data.DailyReportModel /// Количество запусков МСЕ /// public int CountLaunchesMSE { get; set; } + + + + + } } diff --git a/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs index b27b9c13..b9a2a032 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs @@ -75,6 +75,31 @@ namespace AsbCloudApp.Data.DailyReportModel /// public string DeclinesReasonsROP { get; set; } + /// + /// Увеличение мех скорости за секцию % + /// + public string IncreaseSpeedSection { get; set; } + + /// + /// Увеличение мех скорости за сутки % + /// + public string IncreaseSpeedDay { get; set; } + + /// + /// Сокращение времени бурения за секцию, ч + /// + public string ReductionTimeDrilling { get; set; } + + /// + /// Ротор/Слайд % + /// + public string RotorSlidePercent { get; set; } + + /// + /// МСП + /// + public string MspSection { get; set; } + } } diff --git a/AsbCloudApp/Data/DailyReport/DailyReportTimeBalanceDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportTimeBalanceDto.cs new file mode 100644 index 00000000..f4c597f1 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/DailyReportTimeBalanceDto.cs @@ -0,0 +1,100 @@ +using System; +namespace AsbCloudApp.Data.DailyReport +{ + public class DailyReportTimeBalanceDto + { + /// + /// Бурение + /// + public string Drilling { get; set; } + + /// + /// Промывка + /// + public string Flushing { get; set; } + + /// + /// Наращивание + /// + public string Building { get; set; } + + /// + /// Проработка + /// + public string Elaboration { get; set; } + + /// + /// Расширка + /// + public string Extension { get; set; } + + /// + /// Ремонт + /// + public string Repair { get; set; } + + + + /// + /// КНБК + /// + public string Knbk { get; set; } + + /// + /// СПО + /// + public string Spo { get; set; } + + /// + /// ПЗР + /// + public string Pzr { get; set; } + + /// + /// ПВО + /// + public string Pvo { get; set; } + + /// + /// ПГР + /// + public string Pgr { get; set; } + + /// + /// ГИС + /// + public string Gis { get; set; } + + + /// + /// ОЗЦ + /// + public string Ozc { get; set; } + + /// + /// Тех. работы + /// + public string EngineeringWorks { get; set; } + + /// + /// Снятие замера + /// + public string TakingMeasure { get; set; } + + /// + /// Цементирование + /// + public string Cementing { get; set; } + + /// + /// Простой + /// + public string Simple { get; set; } + + /// + /// НПВ + /// + public string Npv { get; set; } + } +} + From fce7482d1b11bd0a49326cd98353f99172eefd3c Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Thu, 23 Jun 2022 18:04:01 +0500 Subject: [PATCH 04/34] =?UTF-8?q?CellAddress=20=D0=B4=D0=BB=D1=8F=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BC=D0=B5=D0=BD=D1=8B=20tuple;=20XLExtentions=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4=D1=8B=20=D1=80=D0=B0=D1=81=D1=88=D0=B8?= =?UTF-8?q?=D1=80=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8?= =?UTF-8?q?=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B9;=20SheetBlockAbstract=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B1=D0=BB=D0=BE=D0=BA=D0=BE=D0=B2=20=D1=80=D0=B0=D0=BF=D0=BE?= =?UTF-8?q?=D1=80=D1=82=D0=B0;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/DailyReport/CellAddress.cs | 92 +++++++++++++++++++ .../DailyReport/SheetBlockAbstract.cs | 11 +++ .../Services/DailyReport/XLExtentions.cs | 78 ++++++++++++++++ 3 files changed, 181 insertions(+) create mode 100644 AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs create mode 100644 AsbCloudInfrastructure/Services/DailyReport/SheetBlockAbstract.cs create mode 100644 AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs diff --git a/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs b/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs new file mode 100644 index 00000000..4b2aa03a --- /dev/null +++ b/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs @@ -0,0 +1,92 @@ +using System; + +namespace AsbCloudInfrastructure.Services.DailyReport +{ + internal class CellAddress + { + const int excelLettersCount = 'Z' - 'A'; + public int Row { get; set; } + public int Colunm { get; set; } + + public CellAddress(int row, int colunm) + { + Row = row; + Colunm = colunm; + } + + public static CellAddress operator + (CellAddress a, CellAddress b) + => new CellAddress(a.Row + b.Row, a.Colunm + b.Colunm); + public static CellAddress operator - (CellAddress a, CellAddress b) + => new CellAddress(a.Row - b.Row, a.Colunm - b.Colunm); + public static bool operator == (CellAddress a, CellAddress b) + => a.Row == b.Row && a.Colunm == b.Colunm; + public static bool operator !=(CellAddress a, CellAddress b) + => !(a == b); + + public static bool TryParse(string cellAddress, out CellAddress parsedAddress) + { + if (cellAddress.Length < 2) + { + parsedAddress = default; + return false; + } + + int row = 0; + int col = 0; + + for (int i = 0; i < cellAddress.Length; i++) + switch (cellAddress[i]) + { + case >= '0' and <= '9': + row = row * 10 + cellAddress[i] - '0'; + break; + case >= 'A' and <= 'Z': + col = col * excelLettersCount + cellAddress[i] - 'A'; + break; + case >= 'a' and <= 'z': + col = col * excelLettersCount + cellAddress[i] - 'a'; + break; + default: + parsedAddress = default; + return false; + } + parsedAddress = new CellAddress(row, col); + return true; + } + + public string ToStringA1() + { + string letter = ""; + + while (Colunm > 0) + { + int modulo = (Colunm - 1) % excelLettersCount; + letter = Convert.ToChar('A' + modulo) + letter; + Colunm = (Colunm - modulo) / excelLettersCount; + } + + return letter + Row; + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(this, obj)) + { + return true; + } + + if (obj is null) + { + return false; + } + + if (obj is CellAddress address) + return this == address; + + return false; + } + + public override int GetHashCode() + => base.GetHashCode(); + } +} diff --git a/AsbCloudInfrastructure/Services/DailyReport/SheetBlockAbstract.cs b/AsbCloudInfrastructure/Services/DailyReport/SheetBlockAbstract.cs new file mode 100644 index 00000000..e9d67cce --- /dev/null +++ b/AsbCloudInfrastructure/Services/DailyReport/SheetBlockAbstract.cs @@ -0,0 +1,11 @@ +using ClosedXML.Excel; + +namespace AsbCloudInfrastructure.Services.DailyReport +{ + + internal abstract class SheetBlockAbstract + { + public abstract CellAddress Draw(IXLWorksheet sheet, CellAddress startPoint); + + } +} diff --git a/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs b/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs new file mode 100644 index 00000000..5434a958 --- /dev/null +++ b/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs @@ -0,0 +1,78 @@ +using ClosedXML.Excel; +using System; + +namespace AsbCloudInfrastructure.Services.DailyReport +{ + internal static class XLExtentions + { + public static IXLRange SetValue(this IXLRange range, object value, int maxCharsToWrap = 88) + { + range.Merge(); + range.FirstCell().SetValue(value, maxCharsToWrap); + return range; + } + + public static IXLCell SetValue(this IXLCell cell, object value) + { + cell.Value = value; + cell.Style + .SetAllBorders() + .Alignment.WrapText = true; + + if (value is string valueString && valueString.Length > maxChartsToWrap) + { + var row = cell.WorksheetRow(); + var baseHeight = row.Height; + row.Height = 0.82d * baseHeight * Math.Ceiling(1d + valueString.Length / maxChartsToWrap); + } + + if (value is DateTime) + { + cell.DataType = XLDataType.DateTime; + cell.Style.DateFormat.Format = "DD.MM.YYYY HH:MM:SS"; + } + else if (value is IFormattable) + { + cell.DataType = XLDataType.Number; + cell.Style.NumberFormat.Format = "0.00"; + } + + return cell; + } + + public static IXLCell SetValue(this IXLCell cell, string value, bool adaptRowHeight = false) + { + cell.Value = value; + cell.Style + .SetAllBorders() + .Alignment.WrapText = true; + + cell.Value = value; + + if (adaptRowHeight) + { + var colWidth = cell.WorksheetColumn().Width; + var maxCharsToWrap = colWidth / (0.1d * cell.Style.Font.FontSize); // TODO: Подобрать коэффициент + if(value.Length > maxCharsToWrap) + { + var row = cell.WorksheetRow(); + var baseHeight = row.Height; + row.Height = 0.82d * baseHeight * Math.Ceiling(1d + value.Length / maxCharsToWrap); + } + } + + return cell; + } + + public static IXLStyle SetAllBorders(this IXLStyle style, XLBorderStyleValues borderStyle = XLBorderStyleValues.Thin) + { + style.Border.RightBorder = borderStyle; + style.Border.LeftBorder = borderStyle; + style.Border.TopBorder = borderStyle; + style.Border.BottomBorder = borderStyle; + style.Border.InsideBorder = borderStyle; + style.Border.OutsideBorder = borderStyle; + return style; + } + } +} From 2712eb43ef6bb4ec9a80ca1aa2c15a57fad606e9 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Thu, 23 Jun 2022 18:10:33 +0500 Subject: [PATCH 05/34] Fix extentions --- .../Services/DailyReport/XLExtentions.cs | 67 +++++++++++++------ 1 file changed, 45 insertions(+), 22 deletions(-) diff --git a/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs b/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs index 5434a958..54cee75f 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs @@ -5,36 +5,29 @@ namespace AsbCloudInfrastructure.Services.DailyReport { internal static class XLExtentions { - public static IXLRange SetValue(this IXLRange range, object value, int maxCharsToWrap = 88) + public static IXLRange SetValue(this IXLRange range, object value) { range.Merge(); - range.FirstCell().SetValue(value, maxCharsToWrap); + range.FirstCell().SetValue(value); return range; } public static IXLCell SetValue(this IXLCell cell, object value) { - cell.Value = value; - cell.Style - .SetAllBorders() - .Alignment.WrapText = true; - - if (value is string valueString && valueString.Length > maxChartsToWrap) + switch (value) { - var row = cell.WorksheetRow(); - var baseHeight = row.Height; - row.Height = 0.82d * baseHeight * Math.Ceiling(1d + valueString.Length / maxChartsToWrap); - } - - if (value is DateTime) - { - cell.DataType = XLDataType.DateTime; - cell.Style.DateFormat.Format = "DD.MM.YYYY HH:MM:SS"; - } - else if (value is IFormattable) - { - cell.DataType = XLDataType.Number; - cell.Style.NumberFormat.Format = "0.00"; + case DateTime dateTime: + cell.SetValue(dateTime); + break; + case IFormattable formattable: + cell.SetValue(formattable); + break; + case string valueString: + cell.SetValue(valueString); + break; + default: + cell.Value = value; + break; } return cell; @@ -64,6 +57,36 @@ namespace AsbCloudInfrastructure.Services.DailyReport return cell; } + public static IXLCell SetValue(this IXLCell cell, DateTime value, string dateFormat = "DD.MM.YYYY HH:MM:SS") + { + cell.Value = value; + cell.Style + .SetAllBorders() + .Alignment.WrapText = true; + + cell.Value = value; + + cell.DataType = XLDataType.DateTime; + cell.Style.DateFormat.Format = "DD.MM.YYYY HH:MM:SS"; + + return cell; + } + + public static IXLCell SetValue(this IXLCell cell, IFormattable value, string format = "0.00") + { + cell.Value = value; + cell.Style + .SetAllBorders() + .Alignment.WrapText = true; + + cell.Value = value; + + cell.DataType = XLDataType.Number; + cell.Style.NumberFormat.Format = "0.00"; + + return cell; + } + public static IXLStyle SetAllBorders(this IXLStyle style, XLBorderStyleValues borderStyle = XLBorderStyleValues.Thin) { style.Border.RightBorder = borderStyle; From 0c488f3b6be881430885ed5c5d7bd5740f10aacd Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 24 Jun 2022 11:03:13 +0500 Subject: [PATCH 06/34] CellAddress implement IXLAddress --- .../Services/DailyReport/CellAddress.cs | 141 +++++++++++++++--- 1 file changed, 122 insertions(+), 19 deletions(-) diff --git a/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs b/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs index 4b2aa03a..eedf46ef 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs @@ -1,25 +1,43 @@ -using System; +using ClosedXML.Excel; +using System; +using System.Diagnostics.CodeAnalysis; +using System.Text; namespace AsbCloudInfrastructure.Services.DailyReport { - internal class CellAddress + internal class CellAddress: IXLAddress { - const int excelLettersCount = 'Z' - 'A'; - public int Row { get; set; } - public int Colunm { get; set; } + const int excelLettersCount = 'Z' - 'A' + 1; + public int RowNumber { get; set; } + public int ColumnNumber { get; set; } + + public string ColumnLetter + { + get { return CalcColumnLetter(); } + } + + public bool FixedColumn { get; set; } + + public bool FixedRow { get; set; } + + public string UniqueId => ToString(XLReferenceStyle.A1, true); + + public IXLWorksheet Worksheet { get; set; } public CellAddress(int row, int colunm) { - Row = row; - Colunm = colunm; + RowNumber = row; + ColumnNumber = colunm; } - + public static CellAddress operator + (CellAddress a, CellAddress b) - => new CellAddress(a.Row + b.Row, a.Colunm + b.Colunm); + => new CellAddress(a.RowNumber + b.RowNumber, a.ColumnNumber + b.ColumnNumber); + public static CellAddress operator +(CellAddress a, (int row, int column) b) + => new CellAddress(a.RowNumber + b.row, a.ColumnNumber + b.column); public static CellAddress operator - (CellAddress a, CellAddress b) - => new CellAddress(a.Row - b.Row, a.Colunm - b.Colunm); + => new CellAddress(a.RowNumber - b.RowNumber, a.ColumnNumber - b.ColumnNumber); public static bool operator == (CellAddress a, CellAddress b) - => a.Row == b.Row && a.Colunm == b.Colunm; + => a.RowNumber == b.RowNumber && a.ColumnNumber == b.ColumnNumber; public static bool operator !=(CellAddress a, CellAddress b) => !(a == b); @@ -54,20 +72,108 @@ namespace AsbCloudInfrastructure.Services.DailyReport return true; } - public string ToStringA1() + private string CalcColumnLetter() { string letter = ""; - while (Colunm > 0) + while (ColumnNumber > 0) { - int modulo = (Colunm - 1) % excelLettersCount; + int modulo = (ColumnNumber - 1) % excelLettersCount; letter = Convert.ToChar('A' + modulo) + letter; - Colunm = (Colunm - modulo) / excelLettersCount; + ColumnNumber = (ColumnNumber - modulo) / excelLettersCount; } - return letter + Row; + return letter; } + public CellAddress Copy() + => new CellAddress(this.RowNumber, this.ColumnNumber); + + public string ToString(XLReferenceStyle referenceStyle) + => ToString(referenceStyle, false); + + public string ToString(XLReferenceStyle referenceStyle, bool includeSheet) + { + if (referenceStyle == XLReferenceStyle.R1C1) + throw new NotImplementedException("R1C1 - style doesn't implemented"); + + var sb = new StringBuilder(); + if (includeSheet && Worksheet is not null) + sb.Append('$') + .Append(Worksheet.Name) + .Append('.'); + + if (FixedColumn) + sb.Append('$'); + + sb.Append(ColumnLetter); + + if (FixedRow) + sb.Append('$'); + + sb.Append(RowNumber); + + return sb.ToString(); + } + + public string ToStringFixed() + => ToStringFixed(XLReferenceStyle.A1); + + public string ToStringFixed(XLReferenceStyle referenceStyle) + => ToStringFixed(referenceStyle, false); + + public string ToStringFixed(XLReferenceStyle referenceStyle, bool includeSheet) + { + if (referenceStyle == XLReferenceStyle.R1C1) + throw new NotImplementedException("R1C1 - style doesn't implemented"); + + var sb = new StringBuilder(); + if (includeSheet && Worksheet is not null) + sb.Append('$') + .Append(Worksheet.Name) + .Append('.'); + + sb.Append('$'); + sb.Append(ColumnLetter); + sb.Append('$'); + sb.Append(RowNumber); + + return sb.ToString(); + } + + public string ToStringRelative() + => ToStringRelative(false); + + public string ToStringRelative(bool includeSheet) + { + var sb = new StringBuilder(); + if (includeSheet && Worksheet is not null) + sb.Append('$') + .Append(Worksheet.Name) + .Append('.'); + + sb.Append(ColumnLetter); + sb.Append(RowNumber); + + return sb.ToString(); + } + + public bool Equals(IXLAddress x, IXLAddress y) + => x.ColumnNumber == y.ColumnNumber && + x.RowNumber == y.RowNumber && + x.FixedColumn == y.FixedColumn && + x.FixedRow == y.FixedRow && + x.Worksheet == y.Worksheet; + + public override int GetHashCode() + => base.GetHashCode(); + + public int GetHashCode([DisallowNull] IXLAddress obj) + => obj.GetHashCode(); + + public bool Equals(IXLAddress other) + => Equals(this, other); + public override bool Equals(object obj) { if (ReferenceEquals(this, obj)) @@ -85,8 +191,5 @@ namespace AsbCloudInfrastructure.Services.DailyReport return false; } - - public override int GetHashCode() - => base.GetHashCode(); } } From 69780e8aafd7a0e4d5ad2f6ab63767bf39106af1 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 24 Jun 2022 11:41:46 +0500 Subject: [PATCH 07/34] Add nullable support to CellAddress; Add example block --- .../Services/DailyReport/BlockAbstract.cs | 98 +++++++++++++++++++ .../Services/DailyReport/CellAddress.cs | 53 +++------- .../DailyReport/DailyReportMakerExcel.cs | 15 ++- .../DailyReport/SheetBlockAbstract.cs | 11 --- .../Services/DailyReport/XLExtentions.cs | 47 ++++++--- ConsoleApp1/Program.cs | 14 +++ ConsoleApp1/Properties/launchSettings.json | 8 -- 7 files changed, 178 insertions(+), 68 deletions(-) create mode 100644 AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs delete mode 100644 AsbCloudInfrastructure/Services/DailyReport/SheetBlockAbstract.cs delete mode 100644 ConsoleApp1/Properties/launchSettings.json diff --git a/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs b/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs new file mode 100644 index 00000000..48e7702b --- /dev/null +++ b/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs @@ -0,0 +1,98 @@ +using AsbCloudApp.Data.DailyReportModel; +using ClosedXML.Excel; +using System.Linq; + +namespace AsbCloudInfrastructure.Services.DailyReport +{ + internal class BlockHeader : BlockAbstract + { + private readonly DailyReportHeadDto blockDto; + + public CellAddress AddressTitle { get; } + public CellAddress AddressCustomer { get; } + public CellAddress AddressDriller { get; } + public CellAddress AddressPeriod { get; } + public CellAddress AddressExampleData1 { get; } + public CellAddress[] AddressesExampleDataArray { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockBegin { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockEnd { get; } + + public BlockHeader(CellAddress addressBlockBegin, DailyReportHeadDto blockDto) + { + AddressBlockBegin = addressBlockBegin.Copy(); + + this.blockDto = blockDto; + AddressTitle = addressBlockBegin + (0, 0); + AddressCustomer = addressBlockBegin + (1,0); + AddressDriller = addressBlockBegin + (2, 0); + AddressPeriod = addressBlockBegin + (3, 0); + AddressExampleData1 = addressBlockBegin + (5, 0); + + AddressesExampleDataArray = new CellAddress[5]; + for (int i = 0; i < 5; i++) + AddressesExampleDataArray[i] = addressBlockBegin + (6 + i, 0); + + AddressBlockEnd = AddressesExampleDataArray.Last(); + } + + public override void Draw(IXLWorksheet sheet) + { + // значение в одну ячейку + sheet.Cell(AddressTitle) + ._SetValue($"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}") + .Style.SetH1(); + + // значение в несколько ячеек с объединением + sheet._Range(AddressCustomer, AddressCustomer + (0,7)) + ._SetValue($"Заказчик: {blockDto.Customer}"); + + sheet.Cell(AddressDriller) + ._SetValue($"Подрядчик: {blockDto.Contractor}"); + + sheet._Range(AddressExampleData1, AddressExampleData1 + (0, 4)) + ._SetValue(blockDto.BottomholeDepth); // для примера с будущей формулой + } + } + + internal class BlockWithFormula : BlockAbstract + { + private readonly BlockHeader blockHeader; + + public override CellAddress AddressBlockBegin { get; } + + public override CellAddress AddressBlockEnd { get; } + + public CellAddress AddressFomulaExample { get; set; } + + public BlockWithFormula(CellAddress addressBlockBegin, BlockHeader blockHeader) + { + AddressFomulaExample = addressBlockBegin + (0, 0); + AddressBlockBegin = addressBlockBegin.Copy(); + AddressBlockEnd = addressBlockBegin + (1, 0); + this.blockHeader = blockHeader; + } + + public override void Draw(IXLWorksheet sheet) + { + var formula = string.Format("{0}/5", blockHeader.AddressExampleData1.ToString()); + + sheet.Cell(AddressFomulaExample) + .SetFormulaA1(formula); + } + } + + internal abstract class BlockAbstract + { + public abstract CellAddress AddressBlockBegin { get; } + public abstract CellAddress AddressBlockEnd { get; } + public abstract void Draw(IXLWorksheet sheet); + } +} diff --git a/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs b/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs index eedf46ef..d6fb6bb9 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs @@ -5,6 +5,7 @@ using System.Text; namespace AsbCloudInfrastructure.Services.DailyReport { +#nullable enable internal class CellAddress: IXLAddress { const int excelLettersCount = 'Z' - 'A' + 1; @@ -22,56 +23,26 @@ namespace AsbCloudInfrastructure.Services.DailyReport public string UniqueId => ToString(XLReferenceStyle.A1, true); - public IXLWorksheet Worksheet { get; set; } + public IXLWorksheet? Worksheet { get; set; } - public CellAddress(int row, int colunm) + public CellAddress(IXLWorksheet? worksheet, int row, int colunm) { + Worksheet = worksheet; RowNumber = row; ColumnNumber = colunm; } public static CellAddress operator + (CellAddress a, CellAddress b) - => new CellAddress(a.RowNumber + b.RowNumber, a.ColumnNumber + b.ColumnNumber); + => new CellAddress(a.Worksheet, a.RowNumber + b.RowNumber, a.ColumnNumber + b.ColumnNumber); public static CellAddress operator +(CellAddress a, (int row, int column) b) - => new CellAddress(a.RowNumber + b.row, a.ColumnNumber + b.column); + => new CellAddress(a.Worksheet, a.RowNumber + b.row, a.ColumnNumber + b.column); public static CellAddress operator - (CellAddress a, CellAddress b) - => new CellAddress(a.RowNumber - b.RowNumber, a.ColumnNumber - b.ColumnNumber); + => new CellAddress(a.Worksheet, a.RowNumber - b.RowNumber, a.ColumnNumber - b.ColumnNumber); public static bool operator == (CellAddress a, CellAddress b) => a.RowNumber == b.RowNumber && a.ColumnNumber == b.ColumnNumber; public static bool operator !=(CellAddress a, CellAddress b) => !(a == b); - public static bool TryParse(string cellAddress, out CellAddress parsedAddress) - { - if (cellAddress.Length < 2) - { - parsedAddress = default; - return false; - } - - int row = 0; - int col = 0; - - for (int i = 0; i < cellAddress.Length; i++) - switch (cellAddress[i]) - { - case >= '0' and <= '9': - row = row * 10 + cellAddress[i] - '0'; - break; - case >= 'A' and <= 'Z': - col = col * excelLettersCount + cellAddress[i] - 'A'; - break; - case >= 'a' and <= 'z': - col = col * excelLettersCount + cellAddress[i] - 'a'; - break; - default: - parsedAddress = default; - return false; - } - parsedAddress = new CellAddress(row, col); - return true; - } - private string CalcColumnLetter() { string letter = ""; @@ -87,7 +58,14 @@ namespace AsbCloudInfrastructure.Services.DailyReport } public CellAddress Copy() - => new CellAddress(this.RowNumber, this.ColumnNumber); + => new CellAddress(Worksheet, RowNumber, ColumnNumber) + { + FixedColumn = this.FixedColumn, + FixedRow = this.FixedRow, + }; + + public override string ToString() + => ToString(XLReferenceStyle.A1); public string ToString(XLReferenceStyle referenceStyle) => ToString(referenceStyle, false); @@ -192,4 +170,5 @@ namespace AsbCloudInfrastructure.Services.DailyReport return false; } } +#nullable disable } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs index dda6edd9..fc0b3da2 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs @@ -16,13 +16,26 @@ namespace AsbCloudInfrastructure.Services.DailyReport public Stream MakeReportFromBlocks(DailyReportHeadDto blockHead, DailyReportBhaDto blockBha, DailyReportDimensionlessDto blockDimensionless, DailyReportSaubDto blockSaub, DailyReportSignDto blockSign) { using var workbook = new XLWorkbook(); - FillSheet6blocks(workbook, blockHead, blockBha, blockDimensionless, blockSaub, blockSign); + FillExampleBlocks(workbook, blockHead); + //FillSheet6blocks(workbook, blockHead, blockBha, blockDimensionless, blockSaub, blockSign); MemoryStream memoryStream = new MemoryStream(); workbook.SaveAs(memoryStream, new SaveOptions { }); memoryStream.Seek(0, SeekOrigin.Begin); return memoryStream; } + private void FillExampleBlocks(XLWorkbook workbook, DailyReportHeadDto blockHeadDto) + { + var sheet = workbook.Worksheets.Add(blockHeadDto.ReportDate.ToString("dd.MM.yyyy")); + var addressStart = new CellAddress(sheet, 1, 1); + var blockHeader = new BlockHeader(addressStart, blockHeadDto); + addressStart = blockHeader.AddressBlockEnd + (1, 0); + var blockWithFormula = new BlockWithFormula(addressStart, blockHeader); + + blockHeader.Draw(sheet); + blockWithFormula.Draw(sheet); + } + private String converteCellCoordinate(int row, bool isCaps, int column) { var c = (Char)((isCaps ? 65 : 97) + (column - 1)); diff --git a/AsbCloudInfrastructure/Services/DailyReport/SheetBlockAbstract.cs b/AsbCloudInfrastructure/Services/DailyReport/SheetBlockAbstract.cs deleted file mode 100644 index e9d67cce..00000000 --- a/AsbCloudInfrastructure/Services/DailyReport/SheetBlockAbstract.cs +++ /dev/null @@ -1,11 +0,0 @@ -using ClosedXML.Excel; - -namespace AsbCloudInfrastructure.Services.DailyReport -{ - - internal abstract class SheetBlockAbstract - { - public abstract CellAddress Draw(IXLWorksheet sheet, CellAddress startPoint); - - } -} diff --git a/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs b/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs index 54cee75f..e114eb26 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs @@ -5,25 +5,26 @@ namespace AsbCloudInfrastructure.Services.DailyReport { internal static class XLExtentions { - public static IXLRange SetValue(this IXLRange range, object value) + public static IXLRange _SetValue(this IXLRange range, object value) { - range.Merge(); - range.FirstCell().SetValue(value); - return range; + var mergedRange = range.Merge(); + mergedRange.FirstCell()._SetValue(value); + mergedRange.Style.SetAllBorders(); + return mergedRange; } - public static IXLCell SetValue(this IXLCell cell, object value) + public static IXLCell _SetValue(this IXLCell cell, object value) { switch (value) { case DateTime dateTime: - cell.SetValue(dateTime); + cell._SetValue(dateTime); break; case IFormattable formattable: - cell.SetValue(formattable); + cell._SetValue(formattable); break; case string valueString: - cell.SetValue(valueString); + cell._SetValue(valueString); break; default: cell.Value = value; @@ -33,7 +34,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport return cell; } - public static IXLCell SetValue(this IXLCell cell, string value, bool adaptRowHeight = false) + public static IXLCell _SetValue(this IXLCell cell, string value, bool adaptRowHeight = false) { cell.Value = value; cell.Style @@ -57,7 +58,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport return cell; } - public static IXLCell SetValue(this IXLCell cell, DateTime value, string dateFormat = "DD.MM.YYYY HH:MM:SS") + public static IXLCell _SetValue(this IXLCell cell, DateTime value, string dateFormat = "DD.MM.YYYY HH:MM:SS") { cell.Value = value; cell.Style @@ -72,7 +73,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport return cell; } - public static IXLCell SetValue(this IXLCell cell, IFormattable value, string format = "0.00") + public static IXLCell _SetValue(this IXLCell cell, IFormattable value, string format = "0.00") { cell.Value = value; cell.Style @@ -97,5 +98,29 @@ namespace AsbCloudInfrastructure.Services.DailyReport style.Border.OutsideBorder = borderStyle; return style; } + + public static IXLStyle SetBaseFont(this IXLStyle style) + { + style.Font.FontName = "Calibri"; + style.Font.FontSize = 10; + return style; + } + + public static IXLStyle SetH1(this IXLStyle style) + { + style.Font.FontName = "Calibri"; + style.Font.FontSize = 14; + return style; + } + + /// + /// Костыль исправляющий проблему в библиотеке IXLRange Range(this IXLWorksheet, IXLAddress, IXLAddress) с кастингом IXLAddress к XLAddress. + /// + /// + /// + /// + /// + public static IXLRange _Range(this IXLWorksheet sheet, CellAddress begin, CellAddress end) + => sheet.Range(begin.RowNumber, begin.ColumnNumber, end.RowNumber, end.ColumnNumber); } } diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs index 61cbf11e..f9b90761 100644 --- a/ConsoleApp1/Program.cs +++ b/ConsoleApp1/Program.cs @@ -1,5 +1,6 @@ using AsbCloudApp.Data.DailyReportModel; using AsbCloudInfrastructure.EfCache; +using AsbCloudInfrastructure.Services.DailyReport; using ClosedXML.Excel; using System; using System.IO; @@ -27,6 +28,19 @@ namespace ConsoleApp1 WellDepthIntervalStartDate= 26.5, BottomholeDepth= 66.6 }; + + //------------- example ----------------- + var service = new DailyReportMakerExcel(); + var stream = service.MakeReportFromBlocks(block, null, null, null, null); + var filename = "____.xlsx"; + if (File.Exists(filename)) + File.Delete(filename); + using var fileStream = File.OpenWrite(filename); + stream.CopyTo(fileStream); + + return; + //------------- end of example ----------------- + var block2 = new DailyReportBhaDto() { BHADescription="sadasdasdasdasdasdjlaskjdaksjdlasdlalskdklj" diff --git a/ConsoleApp1/Properties/launchSettings.json b/ConsoleApp1/Properties/launchSettings.json deleted file mode 100644 index 33504c94..00000000 --- a/ConsoleApp1/Properties/launchSettings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "profiles": { - "WSL": { - "commandName": "WSL2", - "distributionName": "" - } - } -} \ No newline at end of file From c6f089421af5fc95521a5d8f8b2500f3baac14a3 Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Wed, 29 Jun 2022 13:04:30 +0500 Subject: [PATCH 08/34] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=206=20=D0=B1=D0=BB=D0=BE=D0=BA=D0=BE=D0=B2?= =?UTF-8?q?=20=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D1=83=D1=8E=D1=89=D0=B8?= =?UTF-8?q?=D0=B5=206=20=D1=87=D0=B0=D1=81=D1=82=D0=B5=D0=B9=20=D0=BE?= =?UTF-8?q?=D1=82=D1=87=D0=B5=D1=82=D0=B0=20=D0=BD=D0=B0=D1=81=D0=BB=D0=B5?= =?UTF-8?q?=D0=B4=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D1=8B=D0=B5=20=D0=BE=D1=82?= =?UTF-8?q?=20BlockAbstract?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AsbCloudInfrastructure.csproj | 2 + .../Services/DailyReport/BlockAbstract.cs | 17 +- .../DailyReport/DailyReportBlocks/BhaBlock.cs | 146 ++++++++++++ .../DailyReportBlocks/DimensionlessBlock.cs | 60 +++++ .../DailyReportBlocks/HeadBlock.cs | 218 ++++++++++++++++++ .../DailyReportBlocks/SaubBlock.cs | 60 +++++ .../DailyReportBlocks/SignBlock.cs | 56 +++++ .../DailyReportBlocks/TimeBalanceBlock.cs | 216 +++++++++++++++++ .../DailyReport/DailyReportMakerExcel.cs | 20 +- .../DailyReport/DailyReportService.cs | 5 +- ConsoleApp1/Program.cs | 31 +-- 11 files changed, 801 insertions(+), 30 deletions(-) create mode 100644 AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs create mode 100644 AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs create mode 100644 AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs create mode 100644 AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs create mode 100644 AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs create mode 100644 AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs diff --git a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj index fbba1731..36035215 100644 --- a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj +++ b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj @@ -12,6 +12,7 @@ + @@ -44,6 +45,7 @@ + diff --git a/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs b/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs index 48e7702b..2a8440c3 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs @@ -1,4 +1,5 @@ using AsbCloudApp.Data.DailyReportModel; +using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks; using ClosedXML.Excel; using System.Linq; @@ -28,7 +29,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport public BlockHeader(CellAddress addressBlockBegin, DailyReportHeadDto blockDto) { AddressBlockBegin = addressBlockBegin.Copy(); - + this.blockDto = blockDto; AddressTitle = addressBlockBegin + (0, 0); AddressCustomer = addressBlockBegin + (1,0); @@ -64,7 +65,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport internal class BlockWithFormula : BlockAbstract { - private readonly BlockHeader blockHeader; + private readonly HeadBlock blockHeader; public override CellAddress AddressBlockBegin { get; } @@ -72,7 +73,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport public CellAddress AddressFomulaExample { get; set; } - public BlockWithFormula(CellAddress addressBlockBegin, BlockHeader blockHeader) + public BlockWithFormula(CellAddress addressBlockBegin, HeadBlock blockHeader) { AddressFomulaExample = addressBlockBegin + (0, 0); AddressBlockBegin = addressBlockBegin.Copy(); @@ -80,16 +81,16 @@ namespace AsbCloudInfrastructure.Services.DailyReport this.blockHeader = blockHeader; } - public override void Draw(IXLWorksheet sheet) + public override void Draw(IXLWorksheet sheet) { - var formula = string.Format("{0}/5", blockHeader.AddressExampleData1.ToString()); + // var formula = string.Format("{0}/5", blockHeader.AddressExampleData1.ToString()); - sheet.Cell(AddressFomulaExample) - .SetFormulaA1(formula); + // sheet.Cell(AddressFomulaExample) + // .SetFormulaA1(formula); } } - internal abstract class BlockAbstract + abstract class BlockAbstract { public abstract CellAddress AddressBlockBegin { get; } public abstract CellAddress AddressBlockEnd { get; } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs new file mode 100644 index 00000000..36c1c935 --- /dev/null +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs @@ -0,0 +1,146 @@ +using System; +using AsbCloudApp.Data.DailyReportModel; +using ClosedXML.Excel; + +namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks +{ + + class BhaBlock : BlockAbstract + { + private readonly DailyReportBhaDto blockDto; + + public CellAddress AddressBhaDescription { get; } + + public CellAddress AddressOperationTitle { get; } + public CellAddress AddressDurationTitle { get; } + public CellAddress AddressTotalTitle { get; } + + public CellAddress[] AddressOperationData { get; } + public CellAddress[] AddressDurationDataStart { get; } + public CellAddress[] AddressDurationDataFinish { get; } + public CellAddress[] AddressTotaData { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockBegin { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockEnd { get; } + + public BhaBlock(CellAddress addressBlockBegin, DailyReportBhaDto blockDto) + { + this.blockDto = blockDto; + AddressBlockBegin = addressBlockBegin.Copy(); + AddressBlockBegin.ColumnNumber = 0; + AddressBhaDescription = addressBlockBegin + (1,0); + AddressOperationTitle = addressBlockBegin + (3, 0); + AddressDurationTitle = addressBlockBegin + (3, 5); + AddressTotalTitle = addressBlockBegin + (3, 7); + AddressOperationData = new CellAddress[5]; + + AddressOperationData[0] = addressBlockBegin + (4, 0); + AddressOperationData[1] = addressBlockBegin + (5, 0); + AddressOperationData[2] = addressBlockBegin + (6, 0); + AddressOperationData[3] = addressBlockBegin + (7, 0); + AddressOperationData[4] = addressBlockBegin + (8, 0); + + AddressDurationDataStart = new CellAddress[5]; + AddressDurationDataStart[0] = addressBlockBegin + (4, 5); + AddressDurationDataStart[1] = addressBlockBegin + (5, 5); + AddressDurationDataStart[2] = addressBlockBegin + (6, 5); + AddressDurationDataStart[3] = addressBlockBegin + (7, 5); + AddressDurationDataStart[4] = addressBlockBegin + (8, 5); + + AddressDurationDataFinish = new CellAddress[5]; + AddressDurationDataFinish[0] = addressBlockBegin + (4, 6); + AddressDurationDataFinish[1] = addressBlockBegin + (5, 6); + AddressDurationDataFinish[2] = addressBlockBegin + (6, 6); + AddressDurationDataFinish[3] = addressBlockBegin + (7, 6); + AddressDurationDataFinish[4] = addressBlockBegin + (8, 6); + + AddressTotaData = new CellAddress[5]; + AddressTotaData[0] = addressBlockBegin + (4, 7); + AddressTotaData[1] = addressBlockBegin + (5, 7); + AddressTotaData[2] = addressBlockBegin + (6, 7); + AddressTotaData[3] = addressBlockBegin + (7, 7); + AddressTotaData[4] = addressBlockBegin + (8, 7); + + + + AddressBlockEnd = AddressTotaData[4]; + } + + private string FormulaBhaBlock(CellAddress beginTime, CellAddress endTime ) + { + return $"IF({endTime}>0,({endTime}-{beginTime})*24, \"\")"; + } + + public override void Draw(IXLWorksheet sheet) + { + + sheet._Range(AddressBhaDescription, AddressBhaDescription + (0, 7)) + ._SetValue($"{blockDto.BHADescription}"); + + + sheet._Range(AddressOperationTitle, AddressOperationTitle + (0, 4)) + ._SetValue("Выполняемые операции в отчетный период, комментарии:"); + sheet._Range(AddressDurationTitle, AddressDurationTitle + (0, 1)) + ._SetValue("Продолжительность, ч. "); + sheet.Cell(AddressTotalTitle) + ._SetValue("Итого"); + + sheet._Range(AddressOperationData[0], AddressOperationData[0] + (0, 4)) + ._SetValue("Бурение с наращиваниями в инт. 2195-2763м."); + sheet.Cell(AddressDurationDataStart[0]) + ._SetValue($"{blockDto.ExtensionDrillingOneBegin}"); + sheet.Cell(AddressDurationDataFinish[0]) + ._SetValue($"{blockDto.ExtensionDrillingOneFinish}"); + sheet.Cell(AddressTotaData[0]) + .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[0], AddressDurationDataFinish[0])}"); + + sheet._Range(AddressOperationData[1], AddressOperationData[1] + (0, 4)) + ._SetValue("Промывка."); + sheet.Cell(AddressDurationDataStart[1]) + ._SetValue($"{blockDto.SluiceBegin}"); + sheet.Cell(AddressDurationDataFinish[1]) + ._SetValue($"{blockDto.SluiceBegin}"); + sheet.Cell(AddressTotaData[1]) + .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[1], AddressDurationDataFinish[1])}"); + + sheet._Range(AddressOperationData[2], AddressOperationData[2] + (0, 4)) + ._SetValue("Подъем КНБК в инт. 2763-2442м."); + sheet.Cell(AddressDurationDataStart[2]) + ._SetValue($"{blockDto.ClimbBegin}"); + sheet.Cell(AddressDurationDataFinish[2]) + ._SetValue($"{blockDto.ClimbFinish}"); + sheet.Cell(AddressTotaData[2]) + .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[2], AddressDurationDataFinish[2])}"); + + sheet._Range(AddressOperationData[3], AddressOperationData[3] + (0, 4)) + ._SetValue("Спуск КНБК в инт. 2442-2763м."); + sheet.Cell(AddressDurationDataStart[3]) + ._SetValue($"{blockDto.DescentBegin}"); + sheet.Cell(AddressDurationDataFinish[3]) + ._SetValue($"{blockDto.DescentFinish}"); + sheet.Cell(AddressTotaData[3]) + .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[3], AddressDurationDataFinish[3])}"); + + sheet._Range(AddressOperationData[4], AddressOperationData[4] + (0, 4)) + ._SetValue("Бурение с наращиваниями в инт. 2763-2850м."); + sheet.Cell(AddressDurationDataStart[4]) + ._SetValue($"{blockDto.ExtensionDrillingTwoBegin}"); + sheet.Cell(AddressDurationDataFinish[4]) + ._SetValue($"{blockDto.ExtensionDrillingTwoFinish}"); + sheet.Cell(AddressTotaData[4]) + .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[4], AddressDurationDataFinish[4])}"); + + + } + } +} + + + diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs new file mode 100644 index 00000000..d72f977a --- /dev/null +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs @@ -0,0 +1,60 @@ +using System; +using AsbCloudApp.Data.DailyReportModel; +using ClosedXML.Excel; + +namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks +{ + + internal class DimensionlessBlock : BlockAbstract + { + private readonly DailyReportDimensionlessDto blockDto; + + public CellAddress AddressBhaDescription { get; } + + + public CellAddress[] AddressPeriodTableDataArray { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockBegin { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockEnd { get; } + + public DimensionlessBlock(CellAddress addressBlockBegin, DailyReportDimensionlessDto blockDto) + { + AddressBlockBegin = addressBlockBegin.Copy(); + this.blockDto = blockDto; + AddressBhaDescription = addressBlockBegin + (0, 0); + + //AddressExampleData1 = addressBlockBegin + (5, 0); + + + + //AddressBlockEnd = AddressesExampleDataArray.Last(); + } + + public override void Draw(IXLWorksheet sheet) + { + + // sheet.Range(AddressBhaDescription, AddressBhaDescription + (0, 7)) + // ._SetValue($"{blockDto.BHADescription}"); + + + + + + + + + + // sheet._Range(AddressExampleData1, AddressExampleData1 + (0, 4)) + // ._SetValue(blockDto.BottomholeDepth); // для примера с будущей формулой + } + } + +} + diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs new file mode 100644 index 00000000..28c0c688 --- /dev/null +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs @@ -0,0 +1,218 @@ +using AsbCloudApp.Data.DailyReportModel; +using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks; +using ClosedXML.Excel; +using System.Linq; + +namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks +{ + + class HeadBlock : BlockAbstract + { + private readonly DailyReportHeadDto blockDto; + + public CellAddress AddressTitle { get; } + public CellAddress AddressCustomer { get; } + public CellAddress AddressDriller { get; } + public CellAddress AddressPeriod { get; } + public CellAddress AddressSlaughter { get; } + public CellAddress AddressTrajectoryTableTitle { get; } + public CellAddress AddressDrillerOneTitle { get; } + public CellAddress AddressDrillerOne { get; } + public CellAddress AddressDrillerTwoTitle { get; } + public CellAddress AddressDrillerTwo { get; } + + public CellAddress AddressWorkSaubTitle { get; } + public CellAddress AddressWatchTitle { get; } + public CellAddress AddressMetreTitle { get; } + + public CellAddress[] AddressWorkSaubData { get; } + public CellAddress[] AddressWatchData { get; } + public CellAddress[] AddressMetreData { get; } + + + + public CellAddress[] AddressPeriodTableHeadArray { get; } + public CellAddress[] AddressPeriodTableDataArray { get; } + + public CellAddress[] AddressTrajectoryTableHeadArray { get; } + public CellAddress[] AddressTrajectoryTableDataArray { get; } + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockBegin { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockEnd { get; } + public void WriteRowToArray(CellAddress[] cellsArray, CellAddress startCells) + { + + } + public HeadBlock(CellAddress addressBlockBegin, DailyReportHeadDto blockDto) + { + AddressBlockBegin = addressBlockBegin.Copy(); + + this.blockDto = blockDto; + AddressTitle = addressBlockBegin + (0, 0); + AddressCustomer = addressBlockBegin + (1, 0); + AddressDriller = addressBlockBegin + (2, 0); + AddressPeriod = addressBlockBegin + (4, 0); + AddressSlaughter = addressBlockBegin + (4, 4); + AddressPeriodTableHeadArray = new CellAddress[4]; + AddressPeriodTableHeadArray[0]= addressBlockBegin + (5, 0); + AddressPeriodTableHeadArray[1] = addressBlockBegin + (5, 2); + AddressPeriodTableHeadArray[2] = addressBlockBegin + (5, 4); + AddressPeriodTableHeadArray[3] = addressBlockBegin + (5, 6); + AddressPeriodTableDataArray = new CellAddress[4]; + AddressPeriodTableDataArray[0] = addressBlockBegin + (6, 0); + AddressPeriodTableDataArray[1] = addressBlockBegin + (6, 2); + AddressPeriodTableDataArray[2] = addressBlockBegin + (6, 4); + AddressPeriodTableDataArray[3] = addressBlockBegin + (6, 6); + AddressTrajectoryTableTitle = addressBlockBegin + (8,0); + AddressTrajectoryTableHeadArray = new CellAddress[4]; + AddressTrajectoryTableHeadArray[0] = addressBlockBegin + (9, 0); + AddressTrajectoryTableHeadArray[1] = addressBlockBegin + (9, 2); + AddressTrajectoryTableHeadArray[2] = addressBlockBegin + (9, 4); + AddressTrajectoryTableHeadArray[3] = addressBlockBegin + (9, 6); + AddressTrajectoryTableDataArray = new CellAddress[4]; + AddressTrajectoryTableDataArray[0] = addressBlockBegin + (10, 0); + AddressTrajectoryTableDataArray[1] = addressBlockBegin + (10, 2); + AddressTrajectoryTableDataArray[2] = addressBlockBegin + (10, 4); + AddressTrajectoryTableDataArray[3] = addressBlockBegin + (10, 6); + AddressDrillerOneTitle = addressBlockBegin + (12, 0); + AddressDrillerOne = addressBlockBegin + (12, 2); + AddressDrillerTwoTitle = addressBlockBegin + (13, 0); + AddressDrillerTwo = addressBlockBegin + (13, 2); + AddressWorkSaubTitle = addressBlockBegin + (15, 0); + AddressWatchTitle = addressBlockBegin + (15, 3); + AddressMetreTitle = addressBlockBegin + (15, 4); + + AddressWorkSaubData = new CellAddress[4]; + AddressWorkSaubData[0] = addressBlockBegin + (16, 0); + AddressWorkSaubData[1] = addressBlockBegin + (17, 0); + AddressWorkSaubData[2] = addressBlockBegin + (18, 0); + AddressWorkSaubData[3] = addressBlockBegin + (19, 0); + + AddressWatchData = new CellAddress[4]; + AddressWatchData[0] = addressBlockBegin + (16, 3); + AddressWatchData[1] = addressBlockBegin + (17, 3); + AddressWatchData[2] = addressBlockBegin + (18, 3); + AddressWatchData[3] = addressBlockBegin + (19, 3); + + AddressMetreData = new CellAddress[4]; + AddressMetreData[0] = addressBlockBegin + (16, 4); + AddressMetreData[1] = addressBlockBegin + (17, 4); + AddressMetreData[2] = addressBlockBegin + (18, 4); + + AddressBlockEnd = AddressWatchData[3]+(0,1); + + } + + public override void Draw(IXLWorksheet sheet) + { + + sheet._Range(AddressTitle, AddressTitle + (0, 7)) + ._SetValue($"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}") + .Style.SetH1(); + + sheet._Range(AddressCustomer, AddressCustomer + (0, 7)) + ._SetValue($"Заказчик: {blockDto.Customer}") + .Style.SetH1(); + + sheet._Range(AddressDriller, AddressDriller + (0, 7)) + ._SetValue($"Подрядчик: {blockDto.Contractor}") + .Style.SetH1(); + + sheet._Range(AddressPeriod, AddressPeriod + (0, 3)) + ._SetValue("Отчетный период"); + + sheet._Range(AddressSlaughter, AddressSlaughter + (0, 3)) + ._SetValue("Забой за отчетный период, м"); + + sheet._Range(AddressPeriodTableHeadArray[0], AddressPeriodTableHeadArray[0] + (0, 1)) + ._SetValue("От (дата, время)"); + sheet._Range(AddressPeriodTableHeadArray[1], AddressPeriodTableHeadArray[1] + (0, 1)) + ._SetValue("До (дата, время)"); + sheet._Range(AddressPeriodTableHeadArray[2], AddressPeriodTableHeadArray[2] + (0, 1)) + ._SetValue("От"); + sheet._Range(AddressPeriodTableHeadArray[3], AddressPeriodTableHeadArray[3] + (0, 1)) + ._SetValue("До"); + + sheet._Range(AddressPeriodTableDataArray[0], AddressPeriodTableDataArray[0] + (0, 1)) + ._SetValue($"{blockDto.ReportDate}"); + sheet._Range(AddressPeriodTableDataArray[1], AddressPeriodTableDataArray[1] + (0, 1)) + ._SetValue("До (дата, время)"); + sheet._Range(AddressPeriodTableDataArray[2], AddressPeriodTableDataArray[2] + (0, 1)) + ._SetValue($"{blockDto.WellDepthIntervalStartDate}"); + sheet._Range(AddressPeriodTableDataArray[3], AddressPeriodTableDataArray[3] + (0, 1)) + ._SetValue($"{blockDto.WellDepthIntervalFinishDate}"); + + sheet._Range(AddressTrajectoryTableTitle, AddressTrajectoryTableTitle + (0, 7)) + ._SetValue("Данные по траектории скважины на конец суток"); + + sheet._Range(AddressTrajectoryTableHeadArray[0], AddressTrajectoryTableHeadArray[0] + (0, 1)) + ._SetValue("Глубина по стволу"); + sheet._Range(AddressTrajectoryTableHeadArray[1], AddressTrajectoryTableHeadArray[1] + (0, 1)) + ._SetValue("Глубина по вертикали"); + sheet._Range(AddressTrajectoryTableHeadArray[2], AddressTrajectoryTableHeadArray[2] + (0, 1)) + ._SetValue("Зенитный угол"); + sheet._Range(AddressTrajectoryTableHeadArray[3], AddressTrajectoryTableHeadArray[3] + (0, 1)) + ._SetValue("Азимут"); + + sheet._Range(AddressTrajectoryTableDataArray[0], AddressTrajectoryTableDataArray[0] + (0, 1)) + ._SetValue($"{blockDto.BottomholeDepth}"); + sheet._Range(AddressTrajectoryTableDataArray[1], AddressTrajectoryTableDataArray[1] + (0, 1)) + ._SetValue($"{blockDto.VerticalDepth}"); + sheet._Range(AddressTrajectoryTableDataArray[2], AddressTrajectoryTableDataArray[2] + (0, 1)) + ._SetValue($"{blockDto.ZenithAngle}"); + sheet._Range(AddressTrajectoryTableDataArray[3], AddressTrajectoryTableDataArray[3] + (0, 1)) + ._SetValue($"{blockDto.AzimuthAngle}"); + + sheet._Range(AddressDrillerOneTitle, AddressDrillerOneTitle + (0, 1)) + ._SetValue("Бурильщик 1 смена"); + sheet._Range(AddressDrillerOne, AddressDrillerOne + (0, 1)) + ._SetValue($"{blockDto.FirstDriller}"); + sheet._Range(AddressDrillerTwoTitle, AddressDrillerTwoTitle + (0, 1)) + ._SetValue("Бурильщик 2 смена"); + sheet._Range(AddressDrillerTwo, AddressDrillerTwo + (0, 1)) + ._SetValue($"{blockDto.SecondDriller}"); + + sheet._Range(AddressWorkSaubTitle, AddressWorkSaubTitle + (0, 2)) + ._SetValue("Работа модулей САУБ:"); + sheet.Cell(AddressWatchTitle) + ._SetValue("Часов:"); + sheet.Cell(AddressMetreTitle) + ._SetValue("Метров:"); + + sheet._Range(AddressWorkSaubData[0], AddressWorkSaubData[0] + (0, 2)) + ._SetValue("АПД (автоматическая подача долота), ч/м:"); + sheet.Cell(AddressWatchData[0]) + ._SetValue($"{blockDto.WorkTimeSAUB}"); + sheet.Cell(AddressMetreData[0]) + ._SetValue($"{blockDto.PenetrationSAUB}"); + + sheet._Range(AddressWorkSaubData[1], AddressWorkSaubData[1] + (0, 2)) + ._SetValue("Спин Мастер (осцилляция),ч/м:"); + sheet.Cell(AddressWatchData[1]) + ._SetValue($"{blockDto.WorkTimeSpinMaster}"); + sheet.Cell(AddressMetreData[1]) + ._SetValue($"{blockDto.PenetrationTorkMaster}"); + + sheet._Range(AddressWorkSaubData[2], AddressWorkSaubData[2] + (0, 2)) + ._SetValue("Торк Мастер (демпфирование), ч/:"); + sheet.Cell(AddressWatchData[2]) + ._SetValue($"{blockDto.WorkTimeTorkMaster}"); + sheet.Cell(AddressMetreData[2]) + ._SetValue($"{blockDto.PenetrationTorkMaster}"); + + sheet._Range(AddressWorkSaubData[3], AddressWorkSaubData[3] + (0, 2)) + ._SetValue("МСЕ, колличество запусков, раз:"); + sheet._Range(AddressWatchData[3], AddressWatchData[3] + (0, 1)) + ._SetValue($"{blockDto.CountLaunchesMSE}"); + + } + } +} + + diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs new file mode 100644 index 00000000..9e7508fe --- /dev/null +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs @@ -0,0 +1,60 @@ +using System; +using AsbCloudApp.Data.DailyReportModel; +using ClosedXML.Excel; + +namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks +{ + + internal class SaubBlock : BlockAbstract + { + private readonly DailyReportSaubDto blockDto; + + public CellAddress AddressBhaDescription { get; } + + + public CellAddress[] AddressPeriodTableDataArray { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockBegin { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockEnd { get; } + + public SaubBlock(CellAddress addressBlockBegin, DailyReportSaubDto blockDto) + { + AddressBlockBegin = addressBlockBegin.Copy(); + this.blockDto = blockDto; + AddressBhaDescription = addressBlockBegin + (0, 0); + + //AddressExampleData1 = addressBlockBegin + (5, 0); + + + + //AddressBlockEnd = AddressesExampleDataArray.Last(); + } + + public override void Draw(IXLWorksheet sheet) + { + + //sheet.Range(AddressBhaDescription, AddressBhaDescription + (0, 7)) + // ._SetValue($"{blockDto.BHADescription}"); + + + + + + + + + + // sheet._Range(AddressExampleData1, AddressExampleData1 + (0, 4)) + // ._SetValue(blockDto.BottomholeDepth); // для примера с будущей формулой + } + } + +} + diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs new file mode 100644 index 00000000..5fb02b9b --- /dev/null +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs @@ -0,0 +1,56 @@ +using System; +using AsbCloudApp.Data.DailyReportModel; +using ClosedXML.Excel; + +namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks +{ + + internal class SignBlock : BlockAbstract + { + private readonly DailyReportSignDto blockDto; + + public CellAddress AddressDrillMasterHead { get; } + public CellAddress AddressDrillMaster { get; } + public CellAddress AddressSupervisorHead { get; } + public CellAddress AddressSupervisor { get; } + public CellAddress[] AddressPeriodTableDataArray { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockBegin { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockEnd { get; } + + public SignBlock(CellAddress addressBlockBegin, DailyReportSignDto blockDto) + { + AddressBlockBegin = addressBlockBegin.Copy(); + this.blockDto = blockDto; + AddressDrillMasterHead = addressBlockBegin + (3, 0); + AddressDrillMaster = AddressDrillMasterHead + (0, 6); + AddressSupervisorHead = AddressDrillMasterHead + (2, 0); + AddressSupervisor = AddressSupervisorHead + (0, 6); + AddressBlockEnd = AddressSupervisor + (0,1); + } + + public override void Draw(IXLWorksheet sheet) + { + + sheet.Range(AddressDrillMasterHead, AddressDrillMasterHead + (0, 2)) + ._SetValue("Мастер буровой "); + sheet.Range(AddressDrillMaster, AddressDrillMaster + (0, 2)) + ._SetValue($"{blockDto.DrillingMaster}"); + sheet.Range(AddressSupervisorHead, AddressSupervisorHead + (0, 2)) + ._SetValue("Супервайзер "); + sheet.Range(AddressSupervisor, AddressSupervisor + (0, 2)) + ._SetValue($"{blockDto.Supervisor}"); + + } + } + +} + + diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs new file mode 100644 index 00000000..0a3bef43 --- /dev/null +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs @@ -0,0 +1,216 @@ +using System; +using AsbCloudApp.Data.DailyReport; +using ClosedXML.Excel; + +namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks +{ + + class TimeBalanceBlock : BlockAbstract + { + private readonly DailyReportTimeBalanceDto blockDto; + + public CellAddress AddressTitle { get; } + + public CellAddress AddressDrilling { get; set; } + public CellAddress AddressFlushing { get; set; } + public CellAddress AddressBuilding { get; set; } + public CellAddress AddressElaboration { get; set; } + public CellAddress AddressExtension { get; set; } + public CellAddress AddressRepair { get; set; } + + public CellAddress AddressDrillingValue { get; set; } + public CellAddress AddressFlushingValue { get; set; } + public CellAddress AddressBuildingValue { get; set; } + public CellAddress AddressElaborationValue { get; set; } + public CellAddress AddressExtensionValue { get; set; } + public CellAddress AddressRepairValue { get; set; } + + public CellAddress AddressKnbk { get; set; } + public CellAddress AddressSpo { get; set; } + public CellAddress AddressPzr { get; set; } + public CellAddress AddressPvo { get; set; } + public CellAddress AddressPgr { get; set; } + public CellAddress AddressGis { get; set; } + + public CellAddress AddressKnbkValue { get; set; } + public CellAddress AddressSpoValue { get; set; } + public CellAddress AddressPzrValue { get; set; } + public CellAddress AddressPvoValue { get; set; } + public CellAddress AddressPgrValue { get; set; } + public CellAddress AddressGisValue { get; set; } + + + + public CellAddress AddressOzc { get; set; } + public CellAddress AddressEngineeringWorks { get; set; } + public CellAddress AddressTakingMeasure { get; set; } + public CellAddress AddressCementing { get; set; } + public CellAddress AddressSimple { get; set; } + public CellAddress AddressNpv { get; set; } + + public CellAddress AddressOzcValue { get; set; } + public CellAddress AddressEngineeringWorksValue { get; set; } + public CellAddress AddressTakingMeasureValue { get; set; } + public CellAddress AddressCementingValue { get; set; } + public CellAddress AddressSimpleValue { get; set; } + public CellAddress AddressNpvValue { get; set; } + + + public CellAddress[] AddressPeriodTableDataArray { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockBegin { get; } + + /// + /// Значение нижняя правая ячейка блока + /// + public override CellAddress AddressBlockEnd { get; } + + public TimeBalanceBlock(CellAddress addressBlockBegin, DailyReportTimeBalanceDto blockDto) + { + AddressBlockBegin = addressBlockBegin.Copy(); + this.blockDto = blockDto; + AddressTitle = addressBlockBegin + (3, 0); + + AddressDrilling = addressBlockBegin + (4, 1); + AddressFlushing = addressBlockBegin + (5, 1); + AddressBuilding = addressBlockBegin + (6, 1); + AddressElaboration = addressBlockBegin + (7, 1); + AddressExtension = addressBlockBegin + (8, 1); + AddressRepair = addressBlockBegin + (9, 1); + + AddressDrillingValue = addressBlockBegin + (4, 2); + AddressFlushingValue = addressBlockBegin + (5, 2); + AddressBuildingValue = addressBlockBegin + (6, 2); + AddressElaborationValue = addressBlockBegin + (7, 2); + AddressExtensionValue = addressBlockBegin + (8, 2); + AddressRepairValue = addressBlockBegin + (9, 2); + + AddressKnbk = addressBlockBegin + (4, 3); + AddressSpo = addressBlockBegin + (5, 3); + AddressPzr = addressBlockBegin + (6, 3); + AddressPvo = addressBlockBegin + (7, 3); + AddressPgr = addressBlockBegin + (8, 3); + AddressGis = addressBlockBegin + (9, 3); + + AddressKnbkValue = addressBlockBegin + (4, 4); + AddressSpoValue = addressBlockBegin + (5, 4); + AddressPzrValue = addressBlockBegin + (6, 4); + AddressPvoValue = addressBlockBegin + (7, 4); + AddressPgrValue = addressBlockBegin + (8, 4); + AddressGisValue = addressBlockBegin + (9, 4); + + AddressOzc = addressBlockBegin + (4, 5); + AddressEngineeringWorks = addressBlockBegin + (5, 5); + AddressTakingMeasure = addressBlockBegin + (6, 5); + AddressCementing = addressBlockBegin + (7, 5); + AddressSimple = addressBlockBegin + (8, 5); + AddressNpv = addressBlockBegin + (9, 5); + + AddressOzcValue = addressBlockBegin + (4, 6); + AddressEngineeringWorksValue = addressBlockBegin + (5, 6); + AddressTakingMeasureValue = addressBlockBegin + (6, 6); + AddressCementingValue = addressBlockBegin + (7, 6); + AddressSimpleValue = addressBlockBegin + (8, 6); + AddressNpvValue = addressBlockBegin + (9, 6); + + AddressBlockEnd = AddressNpvValue; + } + + public override void Draw(IXLWorksheet sheet) + { + + sheet._Range(AddressTitle, AddressTitle + (0, 1)) + ._SetValue("БАЛАНС ВРЕМЕНИ"); + + sheet.Cell(AddressDrilling) + ._SetValue("Бурение"); + sheet.Cell(AddressFlushing) + ._SetValue("Промывка"); + sheet.Cell(AddressBuilding) + ._SetValue("Наращивание"); + sheet.Cell(AddressElaboration) + ._SetValue("Проработка"); + sheet.Cell(AddressExtension) + ._SetValue("Расширка"); + sheet.Cell(AddressRepair) + ._SetValue("Ремонт"); + sheet.Cell(AddressDrillingValue) + ._SetValue($"{blockDto.Drilling}"); + sheet.Cell(AddressFlushingValue) + ._SetValue($"{blockDto.Flushing}"); + sheet.Cell(AddressBuildingValue) + ._SetValue($"{blockDto.Building}"); + sheet.Cell(AddressElaborationValue) + ._SetValue($"{blockDto.Elaboration}"); + sheet.Cell(AddressExtensionValue) + ._SetValue($"{blockDto.Extension}"); + sheet.Cell(AddressRepairValue) + ._SetValue($"{blockDto.Repair}"); + + sheet.Cell(AddressKnbk) + ._SetValue("КНБК"); + sheet.Cell(AddressSpo) + ._SetValue("СПО"); + sheet.Cell(AddressPzr) + ._SetValue("ПЗР"); + sheet.Cell(AddressPvo) + ._SetValue("ПВО"); + sheet.Cell(AddressPgr) + ._SetValue("ПГР"); + sheet.Cell(AddressGis) + ._SetValue("ГИС"); + sheet.Cell(AddressKnbkValue) + ._SetValue($"{blockDto.Knbk}"); + sheet.Cell(AddressSpoValue) + ._SetValue($"{blockDto.Spo}"); + sheet.Cell(AddressPzrValue) + ._SetValue($"{blockDto.Pzr}"); + sheet.Cell(AddressPvoValue) + ._SetValue($"{blockDto.Pvo}"); + sheet.Cell(AddressPgrValue) + ._SetValue($"{blockDto.Pgr}"); + sheet.Cell(AddressGisValue) + ._SetValue($"{blockDto.Gis}"); + + sheet.Cell(AddressOzc) + ._SetValue("ОЗЦ"); + sheet.Cell(AddressEngineeringWorks) + ._SetValue("Тех. работы"); + sheet.Cell(AddressTakingMeasure) + ._SetValue("Снятие замера"); + sheet.Cell(AddressCementing) + ._SetValue("Цементирование"); + sheet.Cell(AddressSimple) + ._SetValue("Простой"); + sheet.Cell(AddressNpv) + ._SetValue("НПВ"); + sheet.Cell(AddressOzcValue) + ._SetValue($"{blockDto.Ozc}"); + sheet.Cell(AddressEngineeringWorksValue) + ._SetValue($"{blockDto.EngineeringWorks}"); + sheet.Cell(AddressTakingMeasureValue) + ._SetValue($"{blockDto.TakingMeasure}"); + sheet.Cell(AddressCementingValue) + ._SetValue($"{blockDto.Cementing}"); + sheet.Cell(AddressSimpleValue) + ._SetValue($"{blockDto.Simple}"); + sheet.Cell(AddressNpvValue) + ._SetValue($"{blockDto.Npv}"); + + + + + + + + + + + } + } + +} + diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs index fc0b3da2..0fabf266 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs @@ -1,5 +1,7 @@ using AsbCloudApp.Data; +using AsbCloudApp.Data.DailyReport; using AsbCloudApp.Data.DailyReportModel; +using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks; using ClosedXML.Excel; using System; using System.IO; @@ -13,10 +15,10 @@ namespace AsbCloudInfrastructure.Services.DailyReport // черновик реализации отчета "по блокам" - public Stream MakeReportFromBlocks(DailyReportHeadDto blockHead, DailyReportBhaDto blockBha, DailyReportDimensionlessDto blockDimensionless, DailyReportSaubDto blockSaub, DailyReportSignDto blockSign) + public Stream MakeReportFromBlocks(DailyReportHeadDto blockHead, DailyReportBhaDto blockBha, DailyReportTimeBalanceDto blockBalance ,DailyReportDimensionlessDto blockDimensionless, DailyReportSaubDto blockSaub, DailyReportSignDto blockSign) { using var workbook = new XLWorkbook(); - FillExampleBlocks(workbook, blockHead); + FillExampleBlocks(workbook, blockHead, blockBha, blockBalance); //FillSheet6blocks(workbook, blockHead, blockBha, blockDimensionless, blockSaub, blockSign); MemoryStream memoryStream = new MemoryStream(); workbook.SaveAs(memoryStream, new SaveOptions { }); @@ -24,16 +26,20 @@ namespace AsbCloudInfrastructure.Services.DailyReport return memoryStream; } - private void FillExampleBlocks(XLWorkbook workbook, DailyReportHeadDto blockHeadDto) + private void FillExampleBlocks(XLWorkbook workbook, DailyReportHeadDto blockHeadDto, DailyReportBhaDto blockBhaDto, DailyReportTimeBalanceDto timeBalanceDto) { var sheet = workbook.Worksheets.Add(blockHeadDto.ReportDate.ToString("dd.MM.yyyy")); var addressStart = new CellAddress(sheet, 1, 1); - var blockHeader = new BlockHeader(addressStart, blockHeadDto); + var blockHeader = new HeadBlock(addressStart, blockHeadDto); addressStart = blockHeader.AddressBlockEnd + (1, 0); - var blockWithFormula = new BlockWithFormula(addressStart, blockHeader); + var blockBha = new BhaBlock(addressStart, blockBhaDto); + addressStart = blockBha.AddressBlockEnd + (1, 0); + var timeBalance = new TimeBalanceBlock(addressStart, timeBalanceDto); blockHeader.Draw(sheet); - blockWithFormula.Draw(sheet); + blockBha.Draw(sheet); + timeBalance.Draw(sheet); + //blockWithFormula.Draw(sheet); } private String converteCellCoordinate(int row, bool isCaps, int column) @@ -73,7 +79,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport sheet.Style.Font.FontName = "TimesNewRoman"; sheet.Style.Font.FontSize = 10; var tuple = (row: 3, column: 3); - tuple = (AddBlockHead1(sheet, blockHead,(tuple.row,tuple.column)).row , AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).column); + tuple = (AddBlockHead1(sheet, blockHead,(tuple.row,tuple.column))); tuple = AddBlockBha(sheet, blockBha, tuple); tuple = AddBlockTimeBalance(sheet, tuple); tuple = AddBlockDimensionless(sheet, blockDimensionless, tuple); diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs index 1945710d..0af2a8e5 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs @@ -10,6 +10,7 @@ using AsbCloudApp.Services; using AsbCloudDb.Model; using System.Collections.Generic; using AsbCloudApp.Data.DailyReportModel; +using AsbCloudApp.Data.DailyReport; namespace AsbCloudInfrastructure.Services.DailyReport { @@ -188,6 +189,8 @@ namespace AsbCloudInfrastructure.Services.DailyReport { BHADescription = dailyReportDto.BHADescription }; + var block3 = new DailyReportTimeBalanceDto(); + var block4 = new DailyReportDimensionlessDto() { ActualTimeBarrelPreparation = dailyReportDto.ActualTimeBarrelPreparation, @@ -219,7 +222,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport Supervisor = dailyReportDto.Supervisor }; - var memoryStream = dailyReportMaker.MakeReportFromBlocks(block1, block2, block4, block5, block6); + var memoryStream = dailyReportMaker.MakeReportFromBlocks(block1, block2, block3, block4, block5, block6); return memoryStream; } } diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs index f9b90761..549bfc7a 100644 --- a/ConsoleApp1/Program.cs +++ b/ConsoleApp1/Program.cs @@ -1,4 +1,5 @@ -using AsbCloudApp.Data.DailyReportModel; +using AsbCloudApp.Data.DailyReport; +using AsbCloudApp.Data.DailyReportModel; using AsbCloudInfrastructure.EfCache; using AsbCloudInfrastructure.Services.DailyReport; using ClosedXML.Excel; @@ -28,10 +29,15 @@ namespace ConsoleApp1 WellDepthIntervalStartDate= 26.5, BottomholeDepth= 66.6 }; + var block2 = new DailyReportBhaDto() + { + BHADescription = "sadasdasdasdasdasdjlaskjdaksjdlasdlalskdklj" + }; + var block3 = new DailyReportTimeBalanceDto(); //------------- example ----------------- var service = new DailyReportMakerExcel(); - var stream = service.MakeReportFromBlocks(block, null, null, null, null); + var stream = service.MakeReportFromBlocks(block, block2, block3,null, null, null); var filename = "____.xlsx"; if (File.Exists(filename)) File.Delete(filename); @@ -41,20 +47,17 @@ namespace ConsoleApp1 return; //------------- end of example ----------------- - var block2 = new DailyReportBhaDto() - { - BHADescription="sadasdasdasdasdasdjlaskjdaksjdlasdlalskdklj" - }; + - var block3 = new DailyReportSaubDto(); + - var ms = MakeReportFromBlocks(block,block3); - //File.Create("", MakeReportFromBlocks(block)); - using var file = new FileStream("file.xlsx", FileMode.Create, System.IO.FileAccess.Write); - byte[] bytes = new byte[ms.Length]; - ms.Read(bytes, 0, (int)ms.Length); - file.Write(bytes, 0, bytes.Length); - ms.Close(); + //var ms = MakeReportFromBlocks(block,block3); + ////File.Create("", MakeReportFromBlocks(block)); + //using var file = new FileStream("file.xlsx", FileMode.Create, System.IO.FileAccess.Write); + //byte[] bytes = new byte[ms.Length]; + //ms.Read(bytes, 0, (int)ms.Length); + //file.Write(bytes, 0, bytes.Length); + //ms.Close(); } public static Stream MakeReportFromBlocks(DailyReportHeadDto blockHead, DailyReportSaubDto blockD) From e16df1f70561b6582afe0a199009f0e33b282cb4 Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Thu, 30 Jun 2022 16:01:46 +0500 Subject: [PATCH 09/34] =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D0=B5=D0=B9?= =?UTF-8?q?=20Dto=20=D0=B2=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=BE=D0=BA=20=D0=B2=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8?= =?UTF-8?q?=D1=81=20DailyReport=20=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8=D0=B8=20=D0=B8=20=D0=BB?= =?UTF-8?q?=D0=B8=D1=88=D0=BD=D0=B8=D0=B9=20=D0=BA=D0=BE=D0=B4=20:=20-?= =?UTF-8?q?=D0=B8=D0=B7=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=BE=D0=B2=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D1=8E=D1=89=D0=B8=D1=85=20=D0=B1?= =?UTF-8?q?=D0=BB=D0=BE=D0=BA=D0=B8=20=D0=BE=D1=82=D1=87=D0=B5=D1=82=D0=B0?= =?UTF-8?q?=20-=D0=B8=D0=B7=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0=20Maker?= =?UTF-8?q?Excel=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20?= =?UTF-8?q?=D0=B1=D0=BB=D0=BE=D0=BA=20Dimensionless?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Data/DailyReport/DailyReportBhaDto.cs | 2 +- .../DailyReportDimensionlessDto.cs | 2 +- .../Data/DailyReport/DailyReportHeadDto.cs | 2 +- .../Data/DailyReport/DailyReportSaubDto.cs | 2 +- .../Data/DailyReport/DailyReportSignDto.cs | 2 +- AsbCloudApp/Data/DailyReportDto.cs | 213 +--- .../Model/DailyReportDB/DailyReportBha.cs | 2 +- .../Model/DailyReportDB/DailyReportDb.cs | 4 +- .../DailyReportDB/DailyReportDimensionless.cs | 2 +- .../Model/DailyReportDB/DailyReportHead.cs | 2 +- .../Model/DailyReportDB/DailyReportSaub.cs | 2 +- .../Model/DailyReportDB/DailyReportSign.cs | 2 +- .../DailyReportDB/DailyReportTimeBalance.cs | 103 ++ AsbCloudDb/Model/DailyReportInfo.cs | 211 +--- .../Services/DailyReport/BlockAbstract.cs | 90 +- .../DailyReport/DailyReportBlocks/BhaBlock.cs | 28 +- .../DailyReportBlocks/DimensionlessBlock.cs | 120 +- .../DailyReportBlocks/HeadBlock.cs | 51 +- .../DailyReportBlocks/SaubBlock.cs | 6 +- .../DailyReportBlocks/SignBlock.cs | 16 +- .../DailyReportBlocks/TimeBalanceBlock.cs | 37 - .../DailyReport/DailyReportMakerExcel.cs | 1024 +---------------- .../DailyReport/DailyReportService.cs | 90 +- .../ServicesTests/ScheduleServiceTest.cs | 8 +- ConsoleApp1/Program.cs | 505 +------- 25 files changed, 283 insertions(+), 2243 deletions(-) create mode 100644 AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs diff --git a/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs index 1eef09ab..3347e01f 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs @@ -1,5 +1,5 @@ using System; -namespace AsbCloudApp.Data.DailyReportModel +namespace AsbCloudApp.Data.DailyReport { public class DailyReportBhaDto { diff --git a/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs index 27766df6..39fae88d 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs @@ -1,5 +1,5 @@ using System; -namespace AsbCloudApp.Data.DailyReportModel +namespace AsbCloudApp.Data.DailyReport { public class DailyReportDimensionlessDto { diff --git a/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs index 615859ca..db9d9d4d 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs @@ -1,5 +1,5 @@ using System; -namespace AsbCloudApp.Data.DailyReportModel +namespace AsbCloudApp.Data.DailyReport { public class DailyReportHeadDto diff --git a/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs index b9a2a032..c5ea8559 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace AsbCloudApp.Data.DailyReportModel +namespace AsbCloudApp.Data.DailyReport { public class DailyReportSaubDto { diff --git a/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs index 3c1bd223..974e939c 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs @@ -1,5 +1,5 @@ using System; -namespace AsbCloudApp.Data.DailyReportModel +namespace AsbCloudApp.Data.DailyReport { public class DailyReportSignDto { diff --git a/AsbCloudApp/Data/DailyReportDto.cs b/AsbCloudApp/Data/DailyReportDto.cs index 2137e510..f9bf7e36 100644 --- a/AsbCloudApp/Data/DailyReportDto.cs +++ b/AsbCloudApp/Data/DailyReportDto.cs @@ -1,216 +1,23 @@ using System; using System.Collections.Generic; +using AsbCloudApp.Data.DailyReport; + namespace AsbCloudApp.Data { /// - /// Параметры для формирования суточного рапорта + /// Блоки для формирования суточного рапорта /// public class DailyReportDto { - /// - /// название скважины - /// - public string WellName { get; set; } + + public DailyReportHeadDto HeadDto { get; set; } + public DailyReportBhaDto BhaDto { get; set; } + public DailyReportDimensionlessDto DimensionlessDto { get; set; } + public DailyReportTimeBalanceDto TimeBalanceDto { get; set; } + public DailyReportSaubDto SaubDto { get; set; } + public DailyReportSignDto SignDto { get; set; } - /// - /// название куста - /// - public string ClusterName { get; set; } - /// - /// заказчик - /// - public string Customer { get; set; } - - /// - /// подрядчик - /// - public string Contractor { get; set; } - - /// - /// дата рапорта - /// - public DateTime 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; } - - /// - /// ФИО бурильщиков - /// - public string SecondDriller { get; set; } - - /// - /// Время работы АПД - /// - 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; } - - /// - /// КНБК описание - /// - public string BHADescription { get; set; } - - /// - /// Нормативное время на одну операцию по подготовке ствола скважины к наращиванию - /// - public double? StandardTimeBarrelPreparation { get; set; } - - /// - /// Нормативное время на одну операцию по наращиванию - /// - public double? StandardTimeExtension { get; set; } - - /// - /// Фактическое время проработок при подготовке ствола скважины к наращиванию. - /// - public double? ActualTimeBarrelPreparation { get; set; } - - /// - /// Фактическое время наращиваний - /// - public double? ActualTimeExtension { get; set; } - - /// - /// Режимы бурения в роторе - /// - public IEnumerable RotorDrillingModes { get; set; } - - /// - /// режимы бурения в слайде - /// - public IEnumerable SlideDrillingModes { get; set; } - - /// - /// Количество метров пробуренных в роторе за отчетный период - /// - 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; } - - /// - /// ФИО Мастера буровой - /// - public string DrillingMaster { get; set; } - - /// - /// ФИО супервайзера - /// - public string Supervisor { get; set; } } } diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs index 142ed009..8adc9512 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs @@ -1,5 +1,5 @@ using System; -namespace AsbCloudApp.Data.DailyReportModel +namespace AsbCloudDb.Model.DailyReportDB { public class DailyReportBha { diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs index 874fc154..a4e16ec3 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs @@ -1,7 +1,7 @@ using System; using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations.Schema; -using AsbCloudApp.Data.DailyReportModel; + namespace AsbCloudDb.Model.DailyReportDB { #nullable disable @@ -15,7 +15,7 @@ namespace AsbCloudDb.Model.DailyReportDB public DateTimeOffset StartDate { get; set; } [Column("blockHead", TypeName = "jsonb"), Comment("1 блок параметров для отчёта")] - public DailyReportHead BlockHead { get; set; } + public DailyReportInfo BlockHead { get; set; } [Column("blockBha", TypeName = "jsonb"), Comment("2 блок параметров для отчёта")] public DailyReportBha BlockBha { get; set; } diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs index 7ca1697d..42b84e62 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs @@ -1,5 +1,5 @@ using System; -namespace AsbCloudApp.Data.DailyReportModel +namespace AsbCloudDb.Model.DailyReportDB { public class DailyReportDimensionless { diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs index e49a9a0f..3e2120c8 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs @@ -1,5 +1,5 @@ using System; -namespace AsbCloudApp.Data.DailyReportModel +namespace AsbCloudDb.Model.DailyReportDB { public class DailyReportHead { diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs index 1d45aa14..77ea88f0 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace AsbCloudApp.Data.DailyReportModel +namespace AsbCloudDb.Model.DailyReportDB { public class DailyReportSaub { diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs index 31d951b0..99373e2f 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs @@ -1,5 +1,5 @@ using System; -namespace AsbCloudApp.Data.DailyReportModel +namespace AsbCloudDb.Model.DailyReportDB { public class DailyReportSign { diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs new file mode 100644 index 00000000..21b7a7ee --- /dev/null +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs @@ -0,0 +1,103 @@ +using System; +namespace AsbCloudDb.Model.DailyReportDB +{ + public class DailyReportTimeBalance + { + + /// + /// Бурение + /// + public string Drilling { get; set; } + + /// + /// Промывка + /// + public string Flushing { get; set; } + + /// + /// Наращивание + /// + public string Building { get; set; } + + /// + /// Проработка + /// + public string Elaboration { get; set; } + + /// + /// Расширка + /// + public string Extension { get; set; } + + /// + /// Ремонт + /// + public string Repair { get; set; } + + + + /// + /// КНБК + /// + public string Knbk { get; set; } + + /// + /// СПО + /// + public string Spo { get; set; } + + /// + /// ПЗР + /// + public string Pzr { get; set; } + + /// + /// ПВО + /// + public string Pvo { get; set; } + + /// + /// ПГР + /// + public string Pgr { get; set; } + + /// + /// ГИС + /// + public string Gis { get; set; } + + + /// + /// ОЗЦ + /// + public string Ozc { get; set; } + + /// + /// Тех. работы + /// + public string EngineeringWorks { get; set; } + + /// + /// Снятие замера + /// + public string TakingMeasure { get; set; } + + /// + /// Цементирование + /// + public string Cementing { get; set; } + + /// + /// Простой + /// + public string Simple { get; set; } + + /// + /// НПВ + /// + public string Npv { get; set; } + + + } +} + diff --git a/AsbCloudDb/Model/DailyReportInfo.cs b/AsbCloudDb/Model/DailyReportInfo.cs index 5f611f29..40833d8d 100644 --- a/AsbCloudDb/Model/DailyReportInfo.cs +++ b/AsbCloudDb/Model/DailyReportInfo.cs @@ -1,215 +1,18 @@ using System; using System.Collections.Generic; +using AsbCloudDb.Model.DailyReportDB; namespace AsbCloudDb.Model { #nullable disable public class DailyReportInfo { - /// - /// название скважины - /// - public string WellName { get; set; } - - /// - /// название куста - /// - public string ClusterName { get; set; } - - /// - /// заказчик - /// - public string Customer { get; set; } - - /// - /// подрядчик - /// - public string Contractor { get; set; } - - /// - /// дата рапорта - /// - public DateTimeOffset 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; } - - /// - /// ФИО бурильщиков - /// - public string SecondDriller { get; set; } - - /// - /// Время работы АПД - /// - 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; } - - /// - /// КНБК описание - /// - public string BHADescription { get; set; } - - /// - /// Нормативное время на одну операцию по подготовке ствола скважины к наращиванию - /// - public double? StandardTimeBarrelPreparation { get; set; } - - /// - /// Нормативное время на одну операцию по наращиванию - /// - public double? StandardTimeExtension { get; set; } - - /// - /// Фактическое время проработок при подготовке ствола скважины к наращиванию. - /// - public double? ActualTimeBarrelPreparation { get; set; } - - /// - /// Фактическое время наращиваний - /// - public double? ActualTimeExtension { get; set; } - - /// - /// Режимы бурения в роторе - /// - public IEnumerable RotorDrillingModes { get; set; } - - /// - /// режимы бурения в слайде - /// - public IEnumerable SlideDrillingModes { get; set; } - - /// - /// Количество метров пробуренных в роторе за отчетный период - /// - 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; } - - /// - /// ФИО Мастера буровой - /// - public string DrillingMaster { get; set; } - - /// - /// ФИО супервайзера - /// - public string Supervisor { get; set; } + public DailyReportHead HeadInfo { get; set; } + public DailyReportBha BhaDto { get; set; } + public DailyReportDimensionless DimensionlessInfo { get; set; } + public DailyReportTimeBalance TimeBalanceInfo { get; set; } + public DailyReportSaub SaubInfo { get; set; } + public DailyReportSign SignInfo { get; set; } } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs b/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs index 2a8440c3..cebcb11f 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs @@ -1,95 +1,7 @@ -using AsbCloudApp.Data.DailyReportModel; -using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks; -using ClosedXML.Excel; -using System.Linq; +using ClosedXML.Excel; namespace AsbCloudInfrastructure.Services.DailyReport { - internal class BlockHeader : BlockAbstract - { - private readonly DailyReportHeadDto blockDto; - - public CellAddress AddressTitle { get; } - public CellAddress AddressCustomer { get; } - public CellAddress AddressDriller { get; } - public CellAddress AddressPeriod { get; } - public CellAddress AddressExampleData1 { get; } - public CellAddress[] AddressesExampleDataArray { get; } - - /// - /// Значение нижняя правая ячейка блока - /// - public override CellAddress AddressBlockBegin { get; } - - /// - /// Значение нижняя правая ячейка блока - /// - public override CellAddress AddressBlockEnd { get; } - - public BlockHeader(CellAddress addressBlockBegin, DailyReportHeadDto blockDto) - { - AddressBlockBegin = addressBlockBegin.Copy(); - - this.blockDto = blockDto; - AddressTitle = addressBlockBegin + (0, 0); - AddressCustomer = addressBlockBegin + (1,0); - AddressDriller = addressBlockBegin + (2, 0); - AddressPeriod = addressBlockBegin + (3, 0); - AddressExampleData1 = addressBlockBegin + (5, 0); - - AddressesExampleDataArray = new CellAddress[5]; - for (int i = 0; i < 5; i++) - AddressesExampleDataArray[i] = addressBlockBegin + (6 + i, 0); - - AddressBlockEnd = AddressesExampleDataArray.Last(); - } - - public override void Draw(IXLWorksheet sheet) - { - // значение в одну ячейку - sheet.Cell(AddressTitle) - ._SetValue($"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}") - .Style.SetH1(); - - // значение в несколько ячеек с объединением - sheet._Range(AddressCustomer, AddressCustomer + (0,7)) - ._SetValue($"Заказчик: {blockDto.Customer}"); - - sheet.Cell(AddressDriller) - ._SetValue($"Подрядчик: {blockDto.Contractor}"); - - sheet._Range(AddressExampleData1, AddressExampleData1 + (0, 4)) - ._SetValue(blockDto.BottomholeDepth); // для примера с будущей формулой - } - } - - internal class BlockWithFormula : BlockAbstract - { - private readonly HeadBlock blockHeader; - - public override CellAddress AddressBlockBegin { get; } - - public override CellAddress AddressBlockEnd { get; } - - public CellAddress AddressFomulaExample { get; set; } - - public BlockWithFormula(CellAddress addressBlockBegin, HeadBlock blockHeader) - { - AddressFomulaExample = addressBlockBegin + (0, 0); - AddressBlockBegin = addressBlockBegin.Copy(); - AddressBlockEnd = addressBlockBegin + (1, 0); - this.blockHeader = blockHeader; - } - - public override void Draw(IXLWorksheet sheet) - { - // var formula = string.Format("{0}/5", blockHeader.AddressExampleData1.ToString()); - - // sheet.Cell(AddressFomulaExample) - // .SetFormulaA1(formula); - } - } - abstract class BlockAbstract { public abstract CellAddress AddressBlockBegin { get; } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs index 36c1c935..7c536e04 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs @@ -1,5 +1,5 @@ using System; -using AsbCloudApp.Data.DailyReportModel; +using AsbCloudApp.Data.DailyReport; using ClosedXML.Excel; namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks @@ -10,24 +10,14 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks private readonly DailyReportBhaDto blockDto; public CellAddress AddressBhaDescription { get; } - public CellAddress AddressOperationTitle { get; } public CellAddress AddressDurationTitle { get; } public CellAddress AddressTotalTitle { get; } - public CellAddress[] AddressOperationData { get; } public CellAddress[] AddressDurationDataStart { get; } public CellAddress[] AddressDurationDataFinish { get; } public CellAddress[] AddressTotaData { get; } - - /// - /// Значение нижняя правая ячейка блока - /// public override CellAddress AddressBlockBegin { get; } - - /// - /// Значение нижняя правая ячейка блока - /// public override CellAddress AddressBlockEnd { get; } public BhaBlock(CellAddress addressBlockBegin, DailyReportBhaDto blockDto) @@ -40,36 +30,29 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks AddressDurationTitle = addressBlockBegin + (3, 5); AddressTotalTitle = addressBlockBegin + (3, 7); AddressOperationData = new CellAddress[5]; - AddressOperationData[0] = addressBlockBegin + (4, 0); AddressOperationData[1] = addressBlockBegin + (5, 0); AddressOperationData[2] = addressBlockBegin + (6, 0); AddressOperationData[3] = addressBlockBegin + (7, 0); AddressOperationData[4] = addressBlockBegin + (8, 0); - AddressDurationDataStart = new CellAddress[5]; AddressDurationDataStart[0] = addressBlockBegin + (4, 5); AddressDurationDataStart[1] = addressBlockBegin + (5, 5); AddressDurationDataStart[2] = addressBlockBegin + (6, 5); AddressDurationDataStart[3] = addressBlockBegin + (7, 5); AddressDurationDataStart[4] = addressBlockBegin + (8, 5); - AddressDurationDataFinish = new CellAddress[5]; AddressDurationDataFinish[0] = addressBlockBegin + (4, 6); AddressDurationDataFinish[1] = addressBlockBegin + (5, 6); AddressDurationDataFinish[2] = addressBlockBegin + (6, 6); AddressDurationDataFinish[3] = addressBlockBegin + (7, 6); AddressDurationDataFinish[4] = addressBlockBegin + (8, 6); - AddressTotaData = new CellAddress[5]; AddressTotaData[0] = addressBlockBegin + (4, 7); AddressTotaData[1] = addressBlockBegin + (5, 7); AddressTotaData[2] = addressBlockBegin + (6, 7); AddressTotaData[3] = addressBlockBegin + (7, 7); AddressTotaData[4] = addressBlockBegin + (8, 7); - - - AddressBlockEnd = AddressTotaData[4]; } @@ -83,15 +66,12 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet._Range(AddressBhaDescription, AddressBhaDescription + (0, 7)) ._SetValue($"{blockDto.BHADescription}"); - - sheet._Range(AddressOperationTitle, AddressOperationTitle + (0, 4)) ._SetValue("Выполняемые операции в отчетный период, комментарии:"); sheet._Range(AddressDurationTitle, AddressDurationTitle + (0, 1)) ._SetValue("Продолжительность, ч. "); sheet.Cell(AddressTotalTitle) ._SetValue("Итого"); - sheet._Range(AddressOperationData[0], AddressOperationData[0] + (0, 4)) ._SetValue("Бурение с наращиваниями в инт. 2195-2763м."); sheet.Cell(AddressDurationDataStart[0]) @@ -100,7 +80,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.ExtensionDrillingOneFinish}"); sheet.Cell(AddressTotaData[0]) .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[0], AddressDurationDataFinish[0])}"); - sheet._Range(AddressOperationData[1], AddressOperationData[1] + (0, 4)) ._SetValue("Промывка."); sheet.Cell(AddressDurationDataStart[1]) @@ -109,7 +88,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.SluiceBegin}"); sheet.Cell(AddressTotaData[1]) .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[1], AddressDurationDataFinish[1])}"); - sheet._Range(AddressOperationData[2], AddressOperationData[2] + (0, 4)) ._SetValue("Подъем КНБК в инт. 2763-2442м."); sheet.Cell(AddressDurationDataStart[2]) @@ -118,7 +96,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.ClimbFinish}"); sheet.Cell(AddressTotaData[2]) .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[2], AddressDurationDataFinish[2])}"); - sheet._Range(AddressOperationData[3], AddressOperationData[3] + (0, 4)) ._SetValue("Спуск КНБК в инт. 2442-2763м."); sheet.Cell(AddressDurationDataStart[3]) @@ -127,7 +104,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.DescentFinish}"); sheet.Cell(AddressTotaData[3]) .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[3], AddressDurationDataFinish[3])}"); - sheet._Range(AddressOperationData[4], AddressOperationData[4] + (0, 4)) ._SetValue("Бурение с наращиваниями в инт. 2763-2850м."); sheet.Cell(AddressDurationDataStart[4]) @@ -136,8 +112,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.ExtensionDrillingTwoFinish}"); sheet.Cell(AddressTotaData[4]) .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[4], AddressDurationDataFinish[4])}"); - - } } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs index d72f977a..afe7053a 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs @@ -1,5 +1,5 @@ using System; -using AsbCloudApp.Data.DailyReportModel; +using AsbCloudApp.Data.DailyReport; using ClosedXML.Excel; namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks @@ -9,50 +9,106 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { private readonly DailyReportDimensionlessDto blockDto; - public CellAddress AddressBhaDescription { get; } - - - public CellAddress[] AddressPeriodTableDataArray { get; } - - /// - /// Значение нижняя правая ячейка блока - /// + private readonly SaubBlock saubBlock; + public CellAddress AddressDimensionTitle { get; } + public CellAddress AddressPreparationTitle { get; } + public CellAddress AddressExtensionTitle { get; } + public CellAddress AddressPreparationDescription { get; } + public CellAddress AddressExtensionDescription { get; } + public CellAddress[] AddressPreparationHead { get; } + public CellAddress[] AddressPreparationValue { get; } + public CellAddress[] AddressExtensionHead { get; } + public CellAddress[] AddressExtensionValue { get; } + public CellAddress AddressBlockFormula { get; } public override CellAddress AddressBlockBegin { get; } - - /// - /// Значение нижняя правая ячейка блока - /// public override CellAddress AddressBlockEnd { get; } - public DimensionlessBlock(CellAddress addressBlockBegin, DailyReportDimensionlessDto blockDto) { AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; - AddressBhaDescription = addressBlockBegin + (0, 0); + AddressDimensionTitle = addressBlockBegin + (2, 3); + AddressPreparationTitle = addressBlockBegin + (3, 1); + AddressExtensionTitle = addressBlockBegin + (3, 4); + AddressPreparationHead = new CellAddress[4]; + AddressPreparationHead[0] = addressBlockBegin + (4, 1); + AddressPreparationHead[1] = addressBlockBegin + (5, 1); + AddressPreparationHead[2] = addressBlockBegin + (6, 1); + AddressPreparationHead[3] = addressBlockBegin + (7, 1); + AddressPreparationValue = new CellAddress[4]; + AddressPreparationValue[0] = addressBlockBegin + (4, 3); + AddressPreparationValue[1] = addressBlockBegin + (5, 3); + AddressPreparationValue[2] = addressBlockBegin + (6, 3); + AddressPreparationValue[3] = addressBlockBegin + (7, 3); + AddressPreparationDescription = addressBlockBegin + (8, 1); + AddressExtensionHead = new CellAddress[4]; + AddressExtensionHead[0] = addressBlockBegin + (4, 4); + AddressExtensionHead[1] = addressBlockBegin + (5, 4); + AddressExtensionHead[2] = addressBlockBegin + (6, 4); + AddressExtensionHead[3] = addressBlockBegin + (7, 4); + AddressExtensionValue = new CellAddress[4]; + AddressExtensionValue[0] = addressBlockBegin + (4, 6); + AddressExtensionValue[1] = addressBlockBegin + (5, 6); + AddressExtensionValue[2] = addressBlockBegin + (6, 6); + AddressExtensionValue[3] = addressBlockBegin + (7, 6); + AddressExtensionDescription = addressBlockBegin + (8, 4); + AddressBlockEnd = addressBlockBegin + (9,0); + } - //AddressExampleData1 = addressBlockBegin + (5, 0); + private string FormulaBlockPlan(CellAddress cellTarget) + { + return $"={cellTarget}/60*{saubBlock.AddressBhaWithFormula}"; + } - - - //AddressBlockEnd = AddressesExampleDataArray.Last(); + private string FormulaBlockExcess(CellAddress cellFact, CellAddress cellPlan) + { + return $"={cellFact}-{cellPlan}"; } public override void Draw(IXLWorksheet sheet) { - // sheet.Range(AddressBhaDescription, AddressBhaDescription + (0, 7)) - // ._SetValue($"{blockDto.BHADescription}"); - - - - - - - - - - // sheet._Range(AddressExampleData1, AddressExampleData1 + (0, 4)) - // ._SetValue(blockDto.BottomholeDepth); // для примера с будущей формулой + sheet._Range(AddressDimensionTitle, AddressDimensionTitle + (0, 1)) + ._SetValue("БЕЗМЕТРАЖНЫЕ РАБОТЫ"); + sheet._Range(AddressPreparationTitle, AddressPreparationTitle + (0, 2)) + ._SetValue("Подготовка ствола скв. к наращиванию"); + sheet._Range(AddressExtensionTitle, AddressExtensionTitle + (0, 2)) + ._SetValue("Наращивание"); + sheet._Range(AddressPreparationHead[0], AddressPreparationHead[0] + (0, 1)) + ._SetValue("Норматив на одну операцию, (мин):"); + sheet.Cell(AddressPreparationValue[0]) + ._SetValue($"{blockDto.StandardTimeBarrelPreparation}"); + sheet._Range(AddressPreparationHead[1], AddressPreparationHead[1] + (0, 1)) + ._SetValue("Проработка при бур, план (ч):"); + sheet.Cell(AddressPreparationValue[1]) + .SetFormulaA1($"{FormulaBlockPlan(AddressPreparationValue[0])}"); + sheet._Range(AddressPreparationHead[2], AddressPreparationHead[2] + (0, 1)) + ._SetValue("Проработка при бур, факт (ч):"); + sheet.Cell(AddressPreparationValue[2]) + ._SetValue($"{blockDto.StandardTimeExtension}"); + sheet._Range(AddressPreparationHead[3], AddressPreparationHead[3] + (0, 1)) + ._SetValue("Превышение плановых норм, (ч):"); + sheet.Cell(AddressPreparationValue[3]) + .SetFormulaA1($"{FormulaBlockExcess(AddressPreparationValue[2], AddressPreparationValue[1])}"); + sheet._Range(AddressExtensionHead[0], AddressExtensionHead[0] + (0, 1)) + ._SetValue("Норматив на одну операцию, (мин):"); + sheet.Cell(AddressExtensionValue[0]) + ._SetValue($"{blockDto.StandardTimeExtension}"); + sheet._Range(AddressExtensionHead[1], AddressExtensionHead[1] + (0, 1)) + ._SetValue("Наращивание, план (ч):"); + sheet.Cell(AddressExtensionValue[1]) + .SetFormulaA1($"{FormulaBlockPlan(AddressExtensionValue[0])}"); + sheet._Range(AddressExtensionHead[2], AddressExtensionHead[2] + (0, 1)) + ._SetValue("Наращивание, факт (ч):"); + sheet.Cell(AddressExtensionValue[2]) + ._SetValue($"{blockDto.ActualTimeExtension}"); + sheet._Range(AddressExtensionHead[3], AddressExtensionHead[3] + (0, 1)) + ._SetValue("Превышение плановых норм, (ч):"); + sheet.Cell(AddressExtensionValue[3]) + .SetFormulaA1($"{FormulaBlockExcess(AddressExtensionValue[2], AddressExtensionValue[1])}"); + sheet._Range(AddressPreparationDescription, AddressPreparationDescription + (1, 2)) + ._SetValue("Подготовка ствола скв. к наращиванию"); + sheet._Range(AddressExtensionDescription, AddressExtensionDescription + (1, 2)) + ._SetValue("Наращивание"); } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs index 28c0c688..adce76aa 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs @@ -1,7 +1,5 @@ -using AsbCloudApp.Data.DailyReportModel; -using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks; +using AsbCloudApp.Data.DailyReport; using ClosedXML.Excel; -using System.Linq; namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { @@ -20,39 +18,21 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public CellAddress AddressDrillerOne { get; } public CellAddress AddressDrillerTwoTitle { get; } public CellAddress AddressDrillerTwo { get; } - public CellAddress AddressWorkSaubTitle { get; } public CellAddress AddressWatchTitle { get; } public CellAddress AddressMetreTitle { get; } - public CellAddress[] AddressWorkSaubData { get; } public CellAddress[] AddressWatchData { get; } public CellAddress[] AddressMetreData { get; } - - - public CellAddress[] AddressPeriodTableHeadArray { get; } public CellAddress[] AddressPeriodTableDataArray { get; } - public CellAddress[] AddressTrajectoryTableHeadArray { get; } public CellAddress[] AddressTrajectoryTableDataArray { get; } - /// - /// Значение нижняя правая ячейка блока - /// public override CellAddress AddressBlockBegin { get; } - - /// - /// Значение нижняя правая ячейка блока - /// - public override CellAddress AddressBlockEnd { get; } - public void WriteRowToArray(CellAddress[] cellsArray, CellAddress startCells) - { - - } + public override CellAddress AddressBlockEnd { get; } public HeadBlock(CellAddress addressBlockBegin, DailyReportHeadDto blockDto) { AddressBlockBegin = addressBlockBegin.Copy(); - this.blockDto = blockDto; AddressTitle = addressBlockBegin + (0, 0); AddressCustomer = addressBlockBegin + (1, 0); @@ -87,24 +67,20 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks AddressWorkSaubTitle = addressBlockBegin + (15, 0); AddressWatchTitle = addressBlockBegin + (15, 3); AddressMetreTitle = addressBlockBegin + (15, 4); - AddressWorkSaubData = new CellAddress[4]; AddressWorkSaubData[0] = addressBlockBegin + (16, 0); AddressWorkSaubData[1] = addressBlockBegin + (17, 0); AddressWorkSaubData[2] = addressBlockBegin + (18, 0); AddressWorkSaubData[3] = addressBlockBegin + (19, 0); - AddressWatchData = new CellAddress[4]; AddressWatchData[0] = addressBlockBegin + (16, 3); AddressWatchData[1] = addressBlockBegin + (17, 3); AddressWatchData[2] = addressBlockBegin + (18, 3); AddressWatchData[3] = addressBlockBegin + (19, 3); - AddressMetreData = new CellAddress[4]; AddressMetreData[0] = addressBlockBegin + (16, 4); AddressMetreData[1] = addressBlockBegin + (17, 4); AddressMetreData[2] = addressBlockBegin + (18, 4); - AddressBlockEnd = AddressWatchData[3]+(0,1); } @@ -114,22 +90,17 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet._Range(AddressTitle, AddressTitle + (0, 7)) ._SetValue($"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}") - .Style.SetH1(); - + .Style.SetH1(); sheet._Range(AddressCustomer, AddressCustomer + (0, 7)) ._SetValue($"Заказчик: {blockDto.Customer}") .Style.SetH1(); - sheet._Range(AddressDriller, AddressDriller + (0, 7)) ._SetValue($"Подрядчик: {blockDto.Contractor}") .Style.SetH1(); - sheet._Range(AddressPeriod, AddressPeriod + (0, 3)) ._SetValue("Отчетный период"); - sheet._Range(AddressSlaughter, AddressSlaughter + (0, 3)) ._SetValue("Забой за отчетный период, м"); - sheet._Range(AddressPeriodTableHeadArray[0], AddressPeriodTableHeadArray[0] + (0, 1)) ._SetValue("От (дата, время)"); sheet._Range(AddressPeriodTableHeadArray[1], AddressPeriodTableHeadArray[1] + (0, 1)) @@ -138,19 +109,17 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue("От"); sheet._Range(AddressPeriodTableHeadArray[3], AddressPeriodTableHeadArray[3] + (0, 1)) ._SetValue("До"); - sheet._Range(AddressPeriodTableDataArray[0], AddressPeriodTableDataArray[0] + (0, 1)) ._SetValue($"{blockDto.ReportDate}"); - sheet._Range(AddressPeriodTableDataArray[1], AddressPeriodTableDataArray[1] + (0, 1)) - ._SetValue("До (дата, время)"); + sheet._Range(AddressPeriodTableDataArray[1], AddressPeriodTableDataArray[1] + (0, 1)); + sheet.Cell(AddressPeriodTableDataArray[1]) + .SetFormulaA1($"={AddressPeriodTableDataArray[0].ToString()}-1"); sheet._Range(AddressPeriodTableDataArray[2], AddressPeriodTableDataArray[2] + (0, 1)) ._SetValue($"{blockDto.WellDepthIntervalStartDate}"); sheet._Range(AddressPeriodTableDataArray[3], AddressPeriodTableDataArray[3] + (0, 1)) ._SetValue($"{blockDto.WellDepthIntervalFinishDate}"); - sheet._Range(AddressTrajectoryTableTitle, AddressTrajectoryTableTitle + (0, 7)) ._SetValue("Данные по траектории скважины на конец суток"); - sheet._Range(AddressTrajectoryTableHeadArray[0], AddressTrajectoryTableHeadArray[0] + (0, 1)) ._SetValue("Глубина по стволу"); sheet._Range(AddressTrajectoryTableHeadArray[1], AddressTrajectoryTableHeadArray[1] + (0, 1)) @@ -159,7 +128,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue("Зенитный угол"); sheet._Range(AddressTrajectoryTableHeadArray[3], AddressTrajectoryTableHeadArray[3] + (0, 1)) ._SetValue("Азимут"); - sheet._Range(AddressTrajectoryTableDataArray[0], AddressTrajectoryTableDataArray[0] + (0, 1)) ._SetValue($"{blockDto.BottomholeDepth}"); sheet._Range(AddressTrajectoryTableDataArray[1], AddressTrajectoryTableDataArray[1] + (0, 1)) @@ -168,7 +136,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.ZenithAngle}"); sheet._Range(AddressTrajectoryTableDataArray[3], AddressTrajectoryTableDataArray[3] + (0, 1)) ._SetValue($"{blockDto.AzimuthAngle}"); - sheet._Range(AddressDrillerOneTitle, AddressDrillerOneTitle + (0, 1)) ._SetValue("Бурильщик 1 смена"); sheet._Range(AddressDrillerOne, AddressDrillerOne + (0, 1)) @@ -177,40 +144,34 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue("Бурильщик 2 смена"); sheet._Range(AddressDrillerTwo, AddressDrillerTwo + (0, 1)) ._SetValue($"{blockDto.SecondDriller}"); - sheet._Range(AddressWorkSaubTitle, AddressWorkSaubTitle + (0, 2)) ._SetValue("Работа модулей САУБ:"); sheet.Cell(AddressWatchTitle) ._SetValue("Часов:"); sheet.Cell(AddressMetreTitle) ._SetValue("Метров:"); - sheet._Range(AddressWorkSaubData[0], AddressWorkSaubData[0] + (0, 2)) ._SetValue("АПД (автоматическая подача долота), ч/м:"); sheet.Cell(AddressWatchData[0]) ._SetValue($"{blockDto.WorkTimeSAUB}"); sheet.Cell(AddressMetreData[0]) ._SetValue($"{blockDto.PenetrationSAUB}"); - sheet._Range(AddressWorkSaubData[1], AddressWorkSaubData[1] + (0, 2)) ._SetValue("Спин Мастер (осцилляция),ч/м:"); sheet.Cell(AddressWatchData[1]) ._SetValue($"{blockDto.WorkTimeSpinMaster}"); sheet.Cell(AddressMetreData[1]) ._SetValue($"{blockDto.PenetrationTorkMaster}"); - sheet._Range(AddressWorkSaubData[2], AddressWorkSaubData[2] + (0, 2)) ._SetValue("Торк Мастер (демпфирование), ч/:"); sheet.Cell(AddressWatchData[2]) ._SetValue($"{blockDto.WorkTimeTorkMaster}"); sheet.Cell(AddressMetreData[2]) ._SetValue($"{blockDto.PenetrationTorkMaster}"); - sheet._Range(AddressWorkSaubData[3], AddressWorkSaubData[3] + (0, 2)) ._SetValue("МСЕ, колличество запусков, раз:"); sheet._Range(AddressWatchData[3], AddressWatchData[3] + (0, 1)) ._SetValue($"{blockDto.CountLaunchesMSE}"); - } } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs index 9e7508fe..ec3ae8ea 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs @@ -1,5 +1,5 @@ using System; -using AsbCloudApp.Data.DailyReportModel; +using AsbCloudApp.Data.DailyReport; using ClosedXML.Excel; namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks @@ -9,7 +9,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { private readonly DailyReportSaubDto blockDto; - public CellAddress AddressBhaDescription { get; } + public CellAddress AddressBhaWithFormula { get; } public CellAddress[] AddressPeriodTableDataArray { get; } @@ -28,7 +28,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; - AddressBhaDescription = addressBlockBegin + (0, 0); + AddressBhaWithFormula = addressBlockBegin + (0, 0); //AddressExampleData1 = addressBlockBegin + (5, 0); diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs index 5fb02b9b..7ed0347f 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs @@ -1,5 +1,5 @@ using System; -using AsbCloudApp.Data.DailyReportModel; +using AsbCloudApp.Data.DailyReport; using ClosedXML.Excel; namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks @@ -13,16 +13,8 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public CellAddress AddressDrillMaster { get; } public CellAddress AddressSupervisorHead { get; } public CellAddress AddressSupervisor { get; } - public CellAddress[] AddressPeriodTableDataArray { get; } - - /// - /// Значение нижняя правая ячейка блока - /// - public override CellAddress AddressBlockBegin { get; } - - /// - /// Значение нижняя правая ячейка блока - /// + public CellAddress[] AddressPeriodTableDataArray { get; } + public override CellAddress AddressBlockBegin { get; } public override CellAddress AddressBlockEnd { get; } public SignBlock(CellAddress addressBlockBegin, DailyReportSignDto blockDto) @@ -38,7 +30,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public override void Draw(IXLWorksheet sheet) { - sheet.Range(AddressDrillMasterHead, AddressDrillMasterHead + (0, 2)) ._SetValue("Мастер буровой "); sheet.Range(AddressDrillMaster, AddressDrillMaster + (0, 2)) @@ -47,7 +38,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue("Супервайзер "); sheet.Range(AddressSupervisor, AddressSupervisor + (0, 2)) ._SetValue($"{blockDto.Supervisor}"); - } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs index 0a3bef43..788dc3ec 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs @@ -17,55 +17,38 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public CellAddress AddressElaboration { get; set; } public CellAddress AddressExtension { get; set; } public CellAddress AddressRepair { get; set; } - public CellAddress AddressDrillingValue { get; set; } public CellAddress AddressFlushingValue { get; set; } public CellAddress AddressBuildingValue { get; set; } public CellAddress AddressElaborationValue { get; set; } public CellAddress AddressExtensionValue { get; set; } public CellAddress AddressRepairValue { get; set; } - public CellAddress AddressKnbk { get; set; } public CellAddress AddressSpo { get; set; } public CellAddress AddressPzr { get; set; } public CellAddress AddressPvo { get; set; } public CellAddress AddressPgr { get; set; } public CellAddress AddressGis { get; set; } - public CellAddress AddressKnbkValue { get; set; } public CellAddress AddressSpoValue { get; set; } public CellAddress AddressPzrValue { get; set; } public CellAddress AddressPvoValue { get; set; } public CellAddress AddressPgrValue { get; set; } public CellAddress AddressGisValue { get; set; } - - - public CellAddress AddressOzc { get; set; } public CellAddress AddressEngineeringWorks { get; set; } public CellAddress AddressTakingMeasure { get; set; } public CellAddress AddressCementing { get; set; } public CellAddress AddressSimple { get; set; } public CellAddress AddressNpv { get; set; } - public CellAddress AddressOzcValue { get; set; } public CellAddress AddressEngineeringWorksValue { get; set; } public CellAddress AddressTakingMeasureValue { get; set; } public CellAddress AddressCementingValue { get; set; } public CellAddress AddressSimpleValue { get; set; } public CellAddress AddressNpvValue { get; set; } - - public CellAddress[] AddressPeriodTableDataArray { get; } - - /// - /// Значение нижняя правая ячейка блока - /// public override CellAddress AddressBlockBegin { get; } - - /// - /// Значение нижняя правая ячейка блока - /// public override CellAddress AddressBlockEnd { get; } public TimeBalanceBlock(CellAddress addressBlockBegin, DailyReportTimeBalanceDto blockDto) @@ -73,49 +56,42 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; AddressTitle = addressBlockBegin + (3, 0); - AddressDrilling = addressBlockBegin + (4, 1); AddressFlushing = addressBlockBegin + (5, 1); AddressBuilding = addressBlockBegin + (6, 1); AddressElaboration = addressBlockBegin + (7, 1); AddressExtension = addressBlockBegin + (8, 1); AddressRepair = addressBlockBegin + (9, 1); - AddressDrillingValue = addressBlockBegin + (4, 2); AddressFlushingValue = addressBlockBegin + (5, 2); AddressBuildingValue = addressBlockBegin + (6, 2); AddressElaborationValue = addressBlockBegin + (7, 2); AddressExtensionValue = addressBlockBegin + (8, 2); AddressRepairValue = addressBlockBegin + (9, 2); - AddressKnbk = addressBlockBegin + (4, 3); AddressSpo = addressBlockBegin + (5, 3); AddressPzr = addressBlockBegin + (6, 3); AddressPvo = addressBlockBegin + (7, 3); AddressPgr = addressBlockBegin + (8, 3); AddressGis = addressBlockBegin + (9, 3); - AddressKnbkValue = addressBlockBegin + (4, 4); AddressSpoValue = addressBlockBegin + (5, 4); AddressPzrValue = addressBlockBegin + (6, 4); AddressPvoValue = addressBlockBegin + (7, 4); AddressPgrValue = addressBlockBegin + (8, 4); AddressGisValue = addressBlockBegin + (9, 4); - AddressOzc = addressBlockBegin + (4, 5); AddressEngineeringWorks = addressBlockBegin + (5, 5); AddressTakingMeasure = addressBlockBegin + (6, 5); AddressCementing = addressBlockBegin + (7, 5); AddressSimple = addressBlockBegin + (8, 5); AddressNpv = addressBlockBegin + (9, 5); - AddressOzcValue = addressBlockBegin + (4, 6); AddressEngineeringWorksValue = addressBlockBegin + (5, 6); AddressTakingMeasureValue = addressBlockBegin + (6, 6); AddressCementingValue = addressBlockBegin + (7, 6); AddressSimpleValue = addressBlockBegin + (8, 6); AddressNpvValue = addressBlockBegin + (9, 6); - AddressBlockEnd = AddressNpvValue; } @@ -124,7 +100,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet._Range(AddressTitle, AddressTitle + (0, 1)) ._SetValue("БАЛАНС ВРЕМЕНИ"); - sheet.Cell(AddressDrilling) ._SetValue("Бурение"); sheet.Cell(AddressFlushing) @@ -149,7 +124,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.Extension}"); sheet.Cell(AddressRepairValue) ._SetValue($"{blockDto.Repair}"); - sheet.Cell(AddressKnbk) ._SetValue("КНБК"); sheet.Cell(AddressSpo) @@ -174,7 +148,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.Pgr}"); sheet.Cell(AddressGisValue) ._SetValue($"{blockDto.Gis}"); - sheet.Cell(AddressOzc) ._SetValue("ОЗЦ"); sheet.Cell(AddressEngineeringWorks) @@ -199,16 +172,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.Simple}"); sheet.Cell(AddressNpvValue) ._SetValue($"{blockDto.Npv}"); - - - - - - - - - - } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs index 0fabf266..e9276b05 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs @@ -1,6 +1,5 @@ using AsbCloudApp.Data; using AsbCloudApp.Data.DailyReport; -using AsbCloudApp.Data.DailyReportModel; using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks; using ClosedXML.Excel; using System; @@ -11,1029 +10,48 @@ namespace AsbCloudInfrastructure.Services.DailyReport { public class DailyReportMakerExcel { - - - // черновик реализации отчета "по блокам" - - public Stream MakeReportFromBlocks(DailyReportHeadDto blockHead, DailyReportBhaDto blockBha, DailyReportTimeBalanceDto blockBalance ,DailyReportDimensionlessDto blockDimensionless, DailyReportSaubDto blockSaub, DailyReportSignDto blockSign) + public Stream MakeReportFromBlocks(DailyReportDto dto) { using var workbook = new XLWorkbook(); - FillExampleBlocks(workbook, blockHead, blockBha, blockBalance); - //FillSheet6blocks(workbook, blockHead, blockBha, blockDimensionless, blockSaub, blockSign); + FillExampleBlocks(workbook, dto); MemoryStream memoryStream = new MemoryStream(); workbook.SaveAs(memoryStream, new SaveOptions { }); memoryStream.Seek(0, SeekOrigin.Begin); return memoryStream; } - private void FillExampleBlocks(XLWorkbook workbook, DailyReportHeadDto blockHeadDto, DailyReportBhaDto blockBhaDto, DailyReportTimeBalanceDto timeBalanceDto) + private void FillExampleBlocks(XLWorkbook workbook, DailyReportDto dto) { - var sheet = workbook.Worksheets.Add(blockHeadDto.ReportDate.ToString("dd.MM.yyyy")); + var sheet = workbook.Worksheets.Add(dto.HeadDto.ReportDate.ToString("dd.MM.yyyy")); var addressStart = new CellAddress(sheet, 1, 1); - var blockHeader = new HeadBlock(addressStart, blockHeadDto); + var blockHeader = new HeadBlock(addressStart, dto.HeadDto); addressStart = blockHeader.AddressBlockEnd + (1, 0); - var blockBha = new BhaBlock(addressStart, blockBhaDto); + addressStart.ColumnNumber = 0; + var blockBha = new BhaBlock(addressStart, dto.BhaDto); addressStart = blockBha.AddressBlockEnd + (1, 0); - var timeBalance = new TimeBalanceBlock(addressStart, timeBalanceDto); + addressStart.ColumnNumber = 0; + var timeBalance = new TimeBalanceBlock(addressStart, dto.TimeBalanceDto); + addressStart = timeBalance.AddressBlockEnd + (1, 0); + addressStart.ColumnNumber = 0; + var blockDimensionless = new DimensionlessBlock(addressStart, dto.DimensionlessDto); + addressStart = blockDimensionless.AddressBlockEnd + (1, 0); + addressStart.ColumnNumber = 0; + var blockSign = new SignBlock(addressStart, dto.SignDto); + addressStart = blockSign.AddressBlockEnd + (1, 0); + addressStart.ColumnNumber = 0; + blockHeader.Draw(sheet); blockBha.Draw(sheet); timeBalance.Draw(sheet); - //blockWithFormula.Draw(sheet); - } - - private String converteCellCoordinate(int row, bool isCaps, int column) - { - var c = (Char)((isCaps ? 65 : 97) + (column - 1)); - string convertColumn = c.ToString(); - return $"{convertColumn}{row}"; - } - - private string FormulaBhaBlock((int row, int col) tuple) - { - return $"IF({converteCellCoordinate(tuple.row, true, tuple.col - 1)}>0,({converteCellCoordinate(tuple.row, true, tuple.col - 1)}-{converteCellCoordinate(tuple.row, true, tuple.col - 2)})*24, \"\")"; - } - - private string FormulaMechanicalSpeed((int row, int col) tuple) - { - return $"=IF({converteCellCoordinate(tuple.row, true, tuple.col - 2)}>0," + - $"{converteCellCoordinate(tuple.row, true, tuple.col - 4)}/{converteCellCoordinate(tuple.row, true, tuple.col - 2)},0)"; - } - - private string FormulaDrillingWatch((int row, int col) tuple) - { - return $"=IF({converteCellCoordinate(tuple.row - 8, true, tuple.col)}+" + - $"{converteCellCoordinate(tuple.row - 4, true, tuple.col)}"; - } - - private string FormulaSinking((int row, int col) tuple) - { - return $"=IF(({converteCellCoordinate(tuple.row - 4, true, tuple.col)}+{converteCellCoordinate(tuple.row - 8, true, tuple.col)})" + - $"<>({converteCellCoordinate(tuple.row - 54, true, tuple.col + 6)}-{converteCellCoordinate(tuple.row - 54, true, tuple.col + 4)}),\"ОШИБКА\"" + - $",{converteCellCoordinate(tuple.row - 4, true, tuple.col)}+{converteCellCoordinate(tuple.row - 8, true, tuple.col)})"; - } - - public void FillSheet6blocks(XLWorkbook workbook, DailyReportHeadDto blockHead, DailyReportBhaDto blockBha, DailyReportDimensionlessDto blockDimensionless, DailyReportSaubDto blockSaub, DailyReportSignDto blockSign) - { - var sheet = workbook.Worksheets.Add(blockHead.ReportDate.ToString("dd.MM.yyyy")); - sheet.Style.Font.FontName = "TimesNewRoman"; - sheet.Style.Font.FontSize = 10; - var tuple = (row: 3, column: 3); - tuple = (AddBlockHead1(sheet, blockHead,(tuple.row,tuple.column))); - tuple = AddBlockBha(sheet, blockBha, tuple); - tuple = AddBlockTimeBalance(sheet, tuple); - tuple = AddBlockDimensionless(sheet, blockDimensionless, tuple); - tuple = AddBlockSaub(sheet, blockSaub, tuple); - tuple = AddBlockSign(sheet, blockSign, tuple); - } - - private (int row, int column) AddBlockHead1(IXLWorksheet sheet, DailyReportHeadDto blockDto, (int row, int column) tupleStart) - { - var tuple = (row: tupleStart.row, column: tupleStart.column); - sheet.Cell(tuple.row, tuple.column).Value = - $"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); - tuple.row += 1; - sheet.Cell(tuple.row, tuple.column).Value = - $"Заказчик: {blockDto.Customer}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); - tuple.row += 1; - sheet.Cell(tuple.row, tuple.column).Value = - $"Подрядчик: {blockDto.Contractor}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); - tuple.row += 2; - //7,3 - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Отчетный период"); - tuple.column += 4; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - sheet.Cell(tuple.row, tuple.column + 3).Style.Border.RightBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, "Забой за отчетный период, м"); - tuple.column = tupleStart.column; - tuple.row += 1; - //8,3 - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "От (дата, время)"); - tuple.column += 2; //8,5 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "До (дата, время)"); - tuple.column += 2; //8,7 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "От"); - tuple.column += 2; //8,9 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "До"); - sheet.Cell(tuple.row, tuple.column + 1).Style.Border.RightBorder = XLBorderStyleValues.Thin; - tuple.column = tupleStart.column; - tuple.row += 1; //9,3 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.ReportDate}"); - tuple.column += 2; - //согласно формуле в шаблоне - ячейка С9 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"={converteCellCoordinate(tuple.row, true, tuple.column - 2)}-1"; - SetDateTime(sheet.Cell(tuple.row, tuple.column)); - tuple.column += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.WellDepthIntervalStartDate}"); - tuple.column += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.WellDepthIntervalFinishDate}"); - tuple.column = tupleStart.column; - tuple.row += 2; //11,3 - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, "Данные по траектории скважины на конец суток"); - tuple.column = tupleStart.column; - tuple.row += 1;//12 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Глубина по стволу"); - tuple.column += 2; //12,5 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Глубина по вертикали"); - tuple.column += 2; //12,7 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Зенитный угол"); - tuple.column += 2; //12,9 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, "Азимут"); - tuple.column = tupleStart.column; - tuple.row += 1; //13,3 - - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.BottomholeDepth}"); - tuple.column += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.VerticalDepth}"); - tuple.column += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.ZenithAngle}"); - tuple.column += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.AzimuthAngle}"); - tuple.column = tupleStart.column; - tuple.row += 2; //15,3 - sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 1 смена"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - tuple.column += 2; - sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.FirstDriller}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - tuple.row += 1; - tuple.column = tupleStart.column; - sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 2 смена"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - tuple.column += 2; - sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.SecondDriller}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - tuple.row += 2; - tuple.column = tupleStart.column; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Работа модулей САУБ:"); - tuple.column += 3; - SetCell(sheet.Row(tuple.row), tuple.column, "Часов:"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, "Метров:").Style.Border.RightBorder = XLBorderStyleValues.Thin; - tuple.row += 1; - tuple.column = tupleStart.column; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "АПД (автоматическая подача долота), ч/м:"); - tuple.column += 3; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.WorkTimeSAUB}"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.PenetrationSAUB}").Style.Border.RightBorder = XLBorderStyleValues.Thin; - tuple.row += 1; - tuple.column = tupleStart.column; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Спин Мастер (осцилляция),ч/м:"); - tuple.column += 3; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.WorkTimeSpinMaster}"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.PenetrationSpinMaster}").Style.Border.RightBorder = XLBorderStyleValues.Thin; - tuple.row += 1; - tuple.column = tupleStart.column; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Торк Мастер (демпфирование), ч/:"); - tuple.column += 3; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.WorkTimeTorkMaster}"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.PenetrationTorkMaster}").Style.Border.RightBorder = XLBorderStyleValues.Thin; - tuple.row += 1; - tuple.column = tupleStart.column; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "МСЕ, колличество запусков, раз:"); - tuple.column += 3; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.CountLaunchesMSE}"); - tuple.column += 2; - return tuple; - } - - - private (int row, int column) AddBlockBha(IXLWorksheet sheet, DailyReportBhaDto blockDto, (int row, int column) tupleStart) - { - tupleStart.column = 3; - tupleStart.row += 1; - var tuple = (row: tupleStart.row, column: tupleStart.column); + blockDimensionless.Draw(sheet); + blockSign.Draw(sheet); + - - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.BHADescription}"); - tuple.row += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Выполняемые операции в отчетный период, комментарии:"); - tuple.column += 5; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Продолжительность, ч. "); - tuple.column += 2; - SetCell(sheet.Row(tuple.row), tuple.column, "Итого").Style.Border.RightBorder = XLBorderStyleValues.Thin; - tuple.column = tupleStart.column; - tuple.row += 1; - - - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Бурение с наращиваниями в инт. 2195-2763м."); - tuple.column += 5; - - SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00"); - tuple.column += 1; - - SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column) - .FormulaR1C1 = FormulaBhaBlock(tuple); - tuple.column = tupleStart.column; - tuple.row += 1; - - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Промывка."); - tuple.column += 5; - - SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00"); - tuple.column += 1; - - SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column) - .FormulaR1C1 = FormulaBhaBlock(tuple); - tuple.column = tupleStart.column; - tuple.row += 1; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Подъем КНБК в инт. 2763-2442м."); - tuple.column += 5; - - SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00"); - tuple.column += 1; - - SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column) - .FormulaR1C1 = FormulaBhaBlock(tuple); - tuple.column = tupleStart.column; - tuple.row += 1; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Спуск КНБК в инт. 2442-2763м."); - tuple.column += 5; - - SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00"); - tuple.column += 1; - - SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column) - .FormulaR1C1 = FormulaBhaBlock(tuple); - tuple.column = tupleStart.column; - tuple.row += 1; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Бурение с наращиваниями в инт. 2763-2850м."); - tuple.column += 5; - - SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00"); - tuple.column += 1; - - SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column) - .FormulaR1C1 = FormulaBhaBlock(tuple); - - return tuple; } - - private (int row, int column) AddBlockTimeBalance(IXLWorksheet sheet, (int row, int column) tupleStart) - { - tupleStart.column = 4; - tupleStart.row += 2; - var tuple = (row: tupleStart.row, column: tupleStart.column); - - sheet.Cell(tuple.row, tuple.column + 2).Value = - "БАЛАНС ВРЕМЕНИ"; - sheet.Range(tuple.row, tuple.column + 2, tuple.row, tuple.column + 3).Merge(); - tuple.row += 1; - - - SetCell(sheet.Row(tuple.row), tuple.column, "Бурение"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, "КНБК"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, "ОЗЦ"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column = tupleStart.column; - tuple.row += 1; - - SetCell(sheet.Row(tuple.row), tuple.column, "Промывка"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, "СПО"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, "Тех. работы"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column = tupleStart.column; - tuple.row += 1; - - SetCell(sheet.Row(tuple.row), tuple.column, "Наращивание"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, "ПЗР"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, "Снятие замера"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column = tupleStart.column; - tuple.row += 1; - - SetCell(sheet.Row(tuple.row), tuple.column, "Расширка"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, "ПГР"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, "Простой"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column = tupleStart.column; - tuple.row += 1; - - SetCell(sheet.Row(tuple.row), tuple.column, "Ремонт"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, "ГИС"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, "НПВ"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - return tuple; - } - - private (int row, int column) AddBlockDimensionless(IXLWorksheet sheet, DailyReportDimensionlessDto blockDto, (int row, int column) tupleStart) - { - - tupleStart.column = 4; - tupleStart.row += 2; - var tuple = (row: tupleStart.row, column: tupleStart.column); - - sheet.Cell(tuple.row, tuple.column).Value = - "БЕЗМЕТРАЖНЫЕ РАБОТЫ"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 5).Merge(); - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Подготовка ствола скв. к наращиванию"); - tuple.column += 3; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, "Наращивание"); - tuple.row += 1; - tuple.column = tupleStart.column; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Норматив на одну операцию, (мин):"); - tuple.column += 2; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.StandardTimeBarrelPreparation}"); - tuple.column += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Норматив на одну операцию, (мин):"); - tuple.column += 2; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.StandardTimeExtension}"); - tuple.column = tupleStart.column; - tuple.row += 1; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Проработка при бур, план (ч):"); - tuple.column += 2; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"{converteCellCoordinate(tuple.row - 1, true, tuple.column)}/60*{converteCellCoordinate(tuple.row + 28, true, tuple.column + 1)}"; - tuple.column += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Наращивание, план (ч):"); - tuple.column += 2; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"{converteCellCoordinate(tuple.row - 1, true, tuple.column)}/60*{converteCellCoordinate(tuple.row + 28, true, tuple.column - 2)}"; - tuple.column = tupleStart.column; - tuple.row += 1; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Проработка при бур, факт (ч):"); - tuple.column += 2; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.ActualTimeBarrelPreparation}"); - tuple.column += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Наращивание, факт (ч):"); - tuple.column += 2; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.ActualTimeExtension}"); - tuple.column = tupleStart.column; - tuple.row += 1; - - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Превышение плановых норм, (ч):"); - tuple.column += 2; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"{converteCellCoordinate(tuple.row - 1, true, tuple.column)}-{converteCellCoordinate(tuple.row - 2, true, tuple.column)}"; - tuple.column += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Превышение плановых норм, (ч):"); - tuple.column += 2; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"{converteCellCoordinate(tuple.row - 1, true, tuple.column)}-{converteCellCoordinate(tuple.row - 2, true, tuple.column)}"; - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row + 1, tuple.column + 2).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, "Краткие причины: доп проработки при переходе из слайда в ротор, в середине свечи."); - tuple.column += 3; - sheet.Range(tuple.row, tuple.column, tuple.row + 1, tuple.column + 2).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, "Краткие причины: нехватка пальцев на обоих руках у первого помощника бурильщика."); - tuple.column += 2; - return tuple; - } - private (int row, int column) AddBlockSaub(IXLWorksheet sheet, DailyReportSaubDto blockDto, (int row, int column) tupleStart) - { - - tupleStart.row += 2; - tupleStart.column = 3; - var tuple = (row: tupleStart.row, column: tupleStart.column); - - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, $"Бурение в роторе : {blockDto.RotorDrillingModes}"); - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, $"Бурение в слайде : {blockDto.SlideDrillingModes}"); - tuple.row += 2; - - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, "Бурение в роторе (за отчетный период) с использование САУБ-1"); - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Проходка"); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Часы бурения"); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Мех. скорость"); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Среднее диф. Давление") - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.PenetrationInRotor}"); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.NumberDrillingHours}"); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column).FormulaA1 = FormulaMechanicalSpeed(tuple); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.AVGDiffDropRotor}") - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - tuple.column = tupleStart.column; - tuple.row += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, "Бурение в слайде (за отчетный период) с использование САУБ-1"); - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Проходка"); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Часы бурения"); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Мех. скорость"); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, "Среднее диф. Давление"); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.PenetrationInSlide}"); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.DrillingTimeInRotor}"); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column).FormulaA1 = FormulaMechanicalSpeed(tuple); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.AVGDiffPressureSlide}"); - tuple.column = tupleStart.column; - tuple.row += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 5).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Итого за отчетный период, использование САУБ-1"); - tuple.column += 6; - sheet.Range(tuple.row, tuple.column, tuple.row + 1, tuple.column + 1).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, "Плановая мех скорость"); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Проходка"); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Часы бурения"); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Мех. скорость"); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column).FormulaA1 = FormulaSinking(tuple); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, ""); - sheet.Cell(tuple.row, tuple.column).FormulaA1 = FormulaDrillingWatch(tuple); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column += 2; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.SectionROPPlan}"); - tuple.column = tupleStart.column; - tuple.row += 2; - - - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Увеличение мех скорости за секцию %"); - tuple.column += 4; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Увеличение мех скорости за сутки %"); - tuple.column += 4; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Сокращение времени бурения за секцию, ч"); - tuple.column += 4; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Ротор / слайд, %"); - tuple.column += 4; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "МСП за секцию м/ч."); - tuple.column += 4; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, ""); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Время бурения за секцию"); - tuple.column += 4; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.SectionDrillingTimeTotal}"); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Проходка за секцию"); - tuple.column += 4; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.SectionPenetrationTotal}"); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Кол- во наращиваний"); - tuple.column += 4; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.ExtensionsCount}"); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row), tuple.column, "Отклонение от ГГД +/-, сут"); - tuple.column += 4; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.DeviationFromTVD}"); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row), tuple.column, $"Примечание: {blockDto.DeclinesReasonsROP}"); - tuple.column += 7; - return tuple; - - } - - private (int row, int column) AddBlockSign(IXLWorksheet sheet, DailyReportSignDto blockDto, (int row, int column) tupleStart) - { - tupleStart.row += 2; - tupleStart.column = 3; - var tuple = (row: tupleStart.row, column: tupleStart.column); - sheet.Cell(tuple.row,tuple.column).Value = - "Мастер буровой "; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - sheet.Cell(tuple.row, tuple.column+5).Value = - $"{blockDto.DrillingMaster}"; - sheet.Range(tuple.row, tuple.column + 5, tuple.row, tuple.column + 1).Merge(); - tuple.column = tupleStart.column; - tuple.row += 2; - sheet.Cell(tuple.row, tuple.column).Value = - "Супервайзер "; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - sheet.Cell(tuple.row, tuple.column + 5).Value = - $"{blockDto.Supervisor}"; - sheet.Range(tuple.row, tuple.column + 5, tuple.row, tuple.column + 1).Merge(); - - return tuple; - - } - - - - - // реализация "как есть" - - public Stream MakeReport(DailyReportDto dailyReportDto) - { - using var templateStream = System.Reflection.Assembly.GetExecutingAssembly() - .GetManifestResourceStream("AsbCloudInfrastructure.Services.DailyReport.DailyReportTemplate.xlsx"); - using var workbook = new XLWorkbook(templateStream, XLEventTracking.Disabled); - FillSheet(workbook, dailyReportDto); - - MemoryStream memoryStream = new MemoryStream(); - workbook.SaveAs(memoryStream, new SaveOptions { }); - memoryStream.Seek(0, SeekOrigin.Begin); - return memoryStream; - } - - public void FillSheet(XLWorkbook workbook, DailyReportDto reportParams) - { - var sheet = workbook.Worksheets.First();//.Add(reportParams.ReportDate.ToString("dd.MM.yyyy")); - sheet.Name = reportParams.ReportDate.ToString("dd.MM.yyyy"); - - var activeRow = 3; - activeRow = AddBlockHead(sheet, activeRow, reportParams); - activeRow = AddBlockSlaughtersReport(sheet, activeRow, reportParams); - activeRow = AddBlockTrajectoryReport(sheet, activeRow, reportParams); - activeRow = AddBlockDrillers(sheet, activeRow, reportParams); - activeRow = AddBlockSAUB(sheet, activeRow, reportParams); - activeRow = AddBlockBHA(sheet, activeRow, reportParams); - activeRow = AddBlockBHADescription(sheet, activeRow, reportParams); - activeRow = AddBlockOperations(sheet, activeRow, reportParams); - activeRow = AddBlockTimeBalans(sheet, activeRow, reportParams); - activeRow = AddBlockMeterlessWorks(sheet, activeRow, reportParams); - activeRow = AddBlockDrillingModes(sheet, activeRow, reportParams); - activeRow = AddBlockRotorDrilling(sheet, activeRow, reportParams); - activeRow = AddBlockSlideDrilling(sheet, activeRow, reportParams); - activeRow = AddBlockROPPlan(sheet, activeRow, reportParams); - activeRow = AddBlockSummary(sheet, activeRow, reportParams); - activeRow = AddBlockSubscribes(sheet, activeRow, reportParams); - } - - private int AddBlockHead(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow, 3).Value = - $"Суточная сводка бурения скважины №{reportDto.WellName}, куст: {reportDto.ClusterName}"; - sheet.Cell(startRow + 1, 3).Value = - $"Заказчик: {reportDto.Customer}"; - sheet.Cell(startRow + 2, 3).Value = - $"Подрядчик: {reportDto.Contractor}"; - - - return startRow + 2; - } - - private int AddBlockSlaughtersReport(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 4, 3).Value = - $"{reportDto.ReportDate}"; - sheet.Cell(startRow + 4, 5).Value = - $"{reportDto.WellDepthIntervalStartDate}"; - sheet.Cell(startRow + 4, 6).Value = - $"{reportDto.WellDepthIntervalFinishDate}"; - - return startRow + 4; - } - - private int AddBlockTrajectoryReport(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 4, 3).Value = - $"{reportDto.BottomholeDepth}"; - sheet.Cell(startRow + 4, 4).Value = - $"{reportDto.VerticalDepth}"; - sheet.Cell(startRow + 4, 5).Value = - $"{reportDto.ZenithAngle}"; - sheet.Cell(startRow + 4, 6).Value = - $"{reportDto.AzimuthAngle}"; - - return startRow + 4; - } - - private int AddBlockDrillers(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 2, 4).Value = - $"{reportDto.FirstDriller}"; - sheet.Cell(startRow + 3, 4).Value = - $"{reportDto.SecondDriller}"; - - return startRow + 3; - } - - private int AddBlockSAUB(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 3, 6).Value = - $"{reportDto.WorkTimeSAUB}"; - sheet.Cell(startRow + 4, 6).Value = - $"{reportDto.WorkTimeSpinMaster}"; - sheet.Cell(startRow + 5, 6).Value = - $"{reportDto.WorkTimeTorkMaster}"; - sheet.Cell(startRow + 3, 7).Value = - $"{reportDto.PenetrationSAUB}"; - sheet.Cell(startRow + 4, 7).Value = - $"{reportDto.PenetrationSpinMaster}"; - sheet.Cell(startRow + 5, 7).Value = - $"{reportDto.PenetrationTorkMaster}"; - sheet.Cell(startRow + 6, 6).Value = - $"{reportDto.CountLaunchesMSE}"; - - return startRow + 6; - } - - private int AddBlockBHA(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 3, 6).Value = - $"{reportDto.WorkTimeSAUB}"; - sheet.Cell(startRow + 4, 6).Value = - $"{reportDto.WorkTimeSpinMaster}"; - sheet.Cell(startRow + 5, 6).Value = - $"{reportDto.WorkTimeTorkMaster}"; - sheet.Cell(startRow + 3, 7).Value = - $"{reportDto.PenetrationSAUB}"; - sheet.Cell(startRow + 4, 7).Value = - $"{reportDto.PenetrationSpinMaster}"; - sheet.Cell(startRow + 5, 7).Value = - $"{reportDto.PenetrationTorkMaster}"; - sheet.Cell(startRow + 6, 6).Value = - $"{reportDto.CountLaunchesMSE}"; - - return startRow + 6; - } - - private int AddBlockBHADescription(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 2, 3).Value = - $"{reportDto.BHADescription}"; - - return startRow + 6; - } - - private int AddBlockOperations(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - return startRow + 7; - } - - private int AddBlockTimeBalans(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - return startRow + 8; - } - - private int AddBlockMeterlessWorks(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 4, 6).Value = - $"{reportDto.StandardTimeBarrelPreparation}"; - sheet.Cell(startRow + 4, 9).Value = - $"{reportDto.StandardTimeExtension}"; - sheet.Cell(startRow + 6, 6).Value = - $"{reportDto.ActualTimeBarrelPreparation}"; - sheet.Cell(startRow + 6, 9).Value = - $"{reportDto.ActualTimeExtension}"; - - return startRow + 9; - } - - // - private int AddBlockDrillingModes(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 2, 6).Value = - $"{string.Join(", ", reportDto.RotorDrillingModes)}"; - sheet.Cell(startRow + 3, 9).Value = - $"{string.Join(", ", reportDto.SlideDrillingModes)}"; - - return startRow + 3; - } - - private int AddBlockRotorDrilling(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 3, 3).Value = - $"{reportDto.PenetrationInRotor}"; - sheet.Cell(startRow + 3, 5).Value = - $"{reportDto.NumberDrillingHours}"; - sheet.Cell(startRow + 3, 9).Value = - $"{reportDto.AVGDiffDropRotor}"; - - return startRow + 3; - } - - private int AddBlockSlideDrilling(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 3, 3).Value = - $"{reportDto.PenetrationInSlide}"; - sheet.Cell(startRow + 3, 5).Value = - $"{reportDto.DrillingTimeInRotor}"; - sheet.Cell(startRow + 3, 9).Value = - $"{reportDto.AVGDiffPressureSlide}"; - - return startRow + 3; - } - - private int AddBlockROPPlan(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 3, 9).Value = - $"{reportDto.SectionROPPlan}"; - - return startRow + 3; - } - - private int AddBlockSummary(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 7, 7).Value = - $"{reportDto.SectionDrillingTimeTotal}"; - sheet.Cell(startRow + 8, 7).Value = - $"{reportDto.SectionPenetrationTotal}"; - sheet.Cell(startRow + 9, 7).Value = - $"{reportDto.ExtensionsCount}"; - sheet.Cell(startRow + 10, 7).Value = - $"{reportDto.DeviationFromTVD}"; - sheet.Cell(startRow + 11, 3).Value = - $"{reportDto.DeclinesReasonsROP}"; - - return startRow + 13; - } - // - private int AddBlockSubscribes(IXLWorksheet sheet, int startRow, DailyReportDto reportDto) - { - sheet.Cell(startRow + 3, 9).Value = - $"{reportDto.DrillingMaster}"; - sheet.Cell(startRow + 5, 9).Value = - $"{reportDto.Supervisor}"; - - return startRow + 5; - } - - private static string GetColunmLetter(int columnNumber) - { - string letter = ""; - - while (columnNumber > 0) - { - int modulo = (columnNumber - 1) % 26; - letter = Convert.ToChar('A' + modulo) + letter; - columnNumber = (columnNumber - modulo) / 26; - } - - return letter; - } - - private static IXLStyle SetBorder(IXLStyle style) - { - style.Border.RightBorder = XLBorderStyleValues.Thin; - style.Border.LeftBorder = XLBorderStyleValues.Thin; - style.Border.TopBorder = XLBorderStyleValues.Thin; - style.Border.BottomBorder = XLBorderStyleValues.Thin; - style.Border.InsideBorder = XLBorderStyleValues.Thin; - return style; - } - - private static IXLCell SetDateTime(IXLCell cell) - { - cell.DataType = XLDataType.DateTime; - cell.Style.DateFormat.Format = "DD.MM.YYYY HH:MM:SS"; - return cell; - } - - private static IXLCell SetNumber(IXLCell cell) - { - cell.DataType = XLDataType.Number; - cell.Style.NumberFormat.Format = "0.00"; - return cell; - } - - private static IXLCell SetCell(IXLRow row, int colunm, object value, int maxChartsToWrap = 88) - { - var cell = row.Cell(colunm); - cell.Value = value; - - SetBorder(cell.Style); - cell.Style.Alignment.WrapText = true; - - if (value is string valueString && valueString.Length > maxChartsToWrap) - { - var baseHeight = row.Height; - row.Height = 0.82d * baseHeight * Math.Ceiling(1d + valueString.Length / maxChartsToWrap); - } - - if (value is DateTime) - { - SetDateTime(cell); - } - else if (value is IFormattable) - { - SetNumber(cell); - } - - return cell; - } } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs index 0af2a8e5..b0a689f6 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs @@ -9,7 +9,7 @@ using AsbCloudApp.Data; using AsbCloudApp.Services; using AsbCloudDb.Model; using System.Collections.Generic; -using AsbCloudApp.Data.DailyReportModel; + using AsbCloudApp.Data.DailyReport; namespace AsbCloudInfrastructure.Services.DailyReport @@ -62,7 +62,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport public async Task AddAsync(int idWell, DailyReportDto dto, CancellationToken token = default) { var offsetHours = wellService.GetTimezone(idWell).Hours; - var reportDateOffset = dto.ReportDate.ToUtcDateTimeOffset(offsetHours); + var reportDateOffset = dto.HeadDto.ReportDate.ToUtcDateTimeOffset(offsetHours); var info = Convert(dto, offsetHours); var entity = new AsbCloudDb.Model.DailyReport { @@ -101,7 +101,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport if (dailyReportDto is null) return null; - var memoryStream = dailyReportMaker.MakeReport(dailyReportDto); + var memoryStream = dailyReportMaker.MakeReportFromBlocks(dailyReportDto); return memoryStream; } @@ -127,12 +127,16 @@ namespace AsbCloudInfrastructure.Services.DailyReport { var well = await wellService.GetAsync(idWell, token); var offsetHours = wellService.GetTimezone(idWell).Hours; - var dto = new DailyReportDto() + var headDto = new DailyReportHeadDto() { ReportDate = date, WellName = well.Caption, ClusterName = well.Cluster, }; + var dto = new DailyReportDto() + { + HeadDto = headDto + }; DailyReportDto result = dto; return result; } @@ -140,7 +144,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport private static DailyReportDto Convert(AsbCloudDb.Model.DailyReport entity, double offsetHours) { var dto = entity.Info.Adapt(); - dto.ReportDate = entity.StartDate + dto.HeadDto.ReportDate = entity.StartDate .ToRemoteDateTime(offsetHours); return dto; } @@ -148,83 +152,11 @@ namespace AsbCloudInfrastructure.Services.DailyReport private static DailyReportInfo Convert(DailyReportDto dto, double offsetHours) { var entity = dto.Adapt(); - entity.ReportDate = dto.ReportDate + entity.HeadInfo.ReportDate = dto.HeadDto.ReportDate .ToUtcDateTimeOffset(offsetHours) .Date; return entity; - } - - - // черновик реализации "по блокам" - - public async Task MakeReportFromBlocksAsync(int idWell, DateTime date, CancellationToken token = default) - { - var dailyReportDto = await GetAsync(idWell, date, token); - if (dailyReportDto is null) - return null; - var block1 = new DailyReportHeadDto() - { - WellName = dailyReportDto.WellName, - ClusterName = dailyReportDto.ClusterName, - Customer = dailyReportDto.Customer, - Contractor = dailyReportDto.Contractor, - ReportDate = dailyReportDto.ReportDate, - WellDepthIntervalStartDate = dailyReportDto.WellDepthIntervalStartDate, - WellDepthIntervalFinishDate = dailyReportDto.WellDepthIntervalFinishDate, - BottomholeDepth = dailyReportDto.BottomholeDepth, - VerticalDepth = dailyReportDto.VerticalDepth, - ZenithAngle = dailyReportDto.ZenithAngle, - AzimuthAngle = dailyReportDto.AzimuthAngle, - FirstDriller = dailyReportDto.FirstDriller, - SecondDriller = dailyReportDto.SecondDriller, - WorkTimeSAUB = dailyReportDto.WorkTimeSAUB, - WorkTimeSpinMaster = dailyReportDto.WorkTimeSpinMaster, - WorkTimeTorkMaster = dailyReportDto.WorkTimeTorkMaster, - PenetrationSAUB = dailyReportDto.PenetrationSAUB, - PenetrationSpinMaster = dailyReportDto.PenetrationSpinMaster, - PenetrationTorkMaster = dailyReportDto.PenetrationTorkMaster, - CountLaunchesMSE = dailyReportDto.CountLaunchesMSE - }; - var block2 = new DailyReportBhaDto() - { - BHADescription = dailyReportDto.BHADescription - }; - var block3 = new DailyReportTimeBalanceDto(); - - var block4 = new DailyReportDimensionlessDto() - { - ActualTimeBarrelPreparation = dailyReportDto.ActualTimeBarrelPreparation, - ActualTimeExtension = dailyReportDto.ActualTimeExtension, - StandardTimeBarrelPreparation = dailyReportDto.StandardTimeBarrelPreparation, - StandardTimeExtension = dailyReportDto.StandardTimeExtension - }; - var block5 = new DailyReportSaubDto() - { - AVGDiffDropRotor = dailyReportDto.AVGDiffDropRotor, - AVGDiffPressureSlide = dailyReportDto.AVGDiffPressureSlide, - DeclinesReasonsROP = dailyReportDto.DeclinesReasonsROP, - DeviationFromTVD = dailyReportDto.DeviationFromTVD, - DrillingTimeInRotor = dailyReportDto.DrillingTimeInRotor, - NumberDrillingHours = dailyReportDto.NumberDrillingHours, - ExtensionsCount = dailyReportDto.ExtensionsCount, - PenetrationInRotor = dailyReportDto.PenetrationInRotor, - PenetrationInSlide = dailyReportDto.PenetrationInSlide, - RotorDrillingModes = dailyReportDto.RotorDrillingModes, - SectionDrillingTimeTotal = dailyReportDto.SectionDrillingTimeTotal, - SectionPenetrationTotal = dailyReportDto.SectionPenetrationTotal, - SectionROPPlan = dailyReportDto.SectionROPPlan, - SlideDrillingModes = dailyReportDto.SlideDrillingModes - - }; - var block6 = new DailyReportSignDto() - { - DrillingMaster = dailyReportDto.DrillingMaster, - Supervisor = dailyReportDto.Supervisor - }; - - var memoryStream = dailyReportMaker.MakeReportFromBlocks(block1, block2, block3, block4, block5, block6); - return memoryStream; - } + } } #nullable disable } diff --git a/AsbCloudWebApi.Tests/ServicesTests/ScheduleServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/ScheduleServiceTest.cs index 5b9f64ba..9c707ef0 100644 --- a/AsbCloudWebApi.Tests/ServicesTests/ScheduleServiceTest.cs +++ b/AsbCloudWebApi.Tests/ServicesTests/ScheduleServiceTest.cs @@ -115,8 +115,8 @@ namespace AsbCloudWebApi.Tests.ServicesTests public async Task GetDriller_by_workTime_shift1() { var dto = MakeScheduleDto(); - dto.ShiftStart = new TimeOnly(8, 00); - dto.ShiftEnd = new TimeOnly(20, 00); + dto.ShiftStart = new TimeDto(8, 00); + dto.ShiftEnd = new TimeDto(20, 00); var id = await scheduleService.InsertAsync(dto, CancellationToken.None); var drillerWorkTime = new DateTime( dto.DrillStart.Year, @@ -131,8 +131,8 @@ namespace AsbCloudWebApi.Tests.ServicesTests public async Task GetDriller_by_workTime_shift2() { var dto = MakeScheduleDto(); - dto.ShiftStart = new TimeOnly(20, 00); - dto.ShiftEnd = new TimeOnly(8, 00); + dto.ShiftStart = new TimeDto(20, 00); + dto.ShiftEnd = new TimeDto(8, 00); var id = await scheduleService.InsertAsync(dto, CancellationToken.None); var drillerWorkTime = new DateTime( dto.DrillStart.Year, diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs index 549bfc7a..076a509d 100644 --- a/ConsoleApp1/Program.cs +++ b/ConsoleApp1/Program.cs @@ -1,13 +1,8 @@ using AsbCloudApp.Data.DailyReport; -using AsbCloudApp.Data.DailyReportModel; -using AsbCloudInfrastructure.EfCache; -using AsbCloudInfrastructure.Services.DailyReport; using ClosedXML.Excel; using System; using System.IO; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; + namespace ConsoleApp1 { @@ -19,15 +14,15 @@ namespace ConsoleApp1 { var block = new DailyReportHeadDto() { - AzimuthAngle=12, - WellName= "WellName", - ClusterName= "clusterName", - Customer="customer", - Contractor="Contractor", + AzimuthAngle = 12, + WellName = "WellName", + ClusterName = "clusterName", + Customer = "customer", + Contractor = "Contractor", ReportDate = DateTime.Now, - WellDepthIntervalFinishDate= 27.5, - WellDepthIntervalStartDate= 26.5, - BottomholeDepth= 66.6 + WellDepthIntervalFinishDate = 27.5, + WellDepthIntervalStartDate = 26.5, + BottomholeDepth = 66.6 }; var block2 = new DailyReportBhaDto() { @@ -35,7 +30,7 @@ namespace ConsoleApp1 }; var block3 = new DailyReportTimeBalanceDto(); - //------------- example ----------------- + /* var service = new DailyReportMakerExcel(); var stream = service.MakeReportFromBlocks(block, block2, block3,null, null, null); var filename = "____.xlsx"; @@ -45,11 +40,11 @@ namespace ConsoleApp1 stream.CopyTo(fileStream); return; - //------------- end of example ----------------- + */ + + - - //var ms = MakeReportFromBlocks(block,block3); ////File.Create("", MakeReportFromBlocks(block)); @@ -60,482 +55,8 @@ namespace ConsoleApp1 //ms.Close(); } - public static Stream MakeReportFromBlocks(DailyReportHeadDto blockHead, DailyReportSaubDto blockD) - { - using var workbook = new XLWorkbook(); - FillSheet6blocks(workbook, blockHead, blockD); - MemoryStream memoryStream = new MemoryStream(); - workbook.SaveAs(memoryStream, new SaveOptions { }); - memoryStream.Seek(0, SeekOrigin.Begin); - return memoryStream; - } - - private static String converteCellCoordinate(int row, bool isCaps, int column) - { - var c = (Char)((isCaps ? 65 : 97) + (column - 1)); - string convertColumn = c.ToString(); - return $"{convertColumn}{row}"; - } - - private static string FormulaMechanicalSpeed((int row, int col) tuple) - { - return $"=IF({converteCellCoordinate(tuple.row,true,tuple.col-2)}>0," + - $"{converteCellCoordinate(tuple.row,true,tuple.col-4)}/{converteCellCoordinate(tuple.row,true,tuple.col-2)},0)"; - } - - private static string FormulaDrillingWatch((int row, int col) tuple) - { - return $"=IF({converteCellCoordinate(tuple.row - 8,true,tuple.col)}+" + - $"{converteCellCoordinate(tuple.row - 4,true,tuple.col)}"; - } - - private static string FormulaSinking((int row, int col) tuple) - { - return $"=IF(({converteCellCoordinate(tuple.row - 4,true,tuple.col)}+{converteCellCoordinate(tuple.row - 8,true,tuple.col)})" + - $"<>({converteCellCoordinate(tuple.row - 54,true,tuple.col + 6)}-{converteCellCoordinate(tuple.row - 54,true,tuple.col + 4)}),\"ОШИБКА\"" + - $",{converteCellCoordinate(tuple.row - 4,true,tuple.col)}+{converteCellCoordinate(tuple.row - 8,true,tuple.col)})"; - - //return $"=IF({converteCellCoordinate(tuple.row - 8,true,tuple.col)}+" + - // $"{converteCellCoordinate(tuple.row - 4,true,tuple.col)}"; - } - - public static void FillSheet6blocks(XLWorkbook workbook, DailyReportHeadDto blockHead, DailyReportSaubDto blockD) - { - var sheet = workbook.Worksheets.Add(blockHead.ReportDate.ToString("dd.MM.yyyy")); - //sheet.Name = blockHead.ReportDate.ToString("dd.MM.yyyy"); - - var tuple = (row: 3, column: 3); - sheet.Style.Font.FontName = "TimesNewRoman"; - sheet.Style.Font.FontSize = 10; - - tuple = (AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).row, AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).column); - AddBlockBha(sheet, blockD, tuple); - //sheet.Columns().AdjustToContents(8,9); - //sheet.Rows().AdjustToContents(3,21); - - - } - // - - private static IXLStyle SetBorder(IXLStyle style) - { - style.Border.RightBorder = XLBorderStyleValues.Thin; - style.Border.LeftBorder = XLBorderStyleValues.Thin; - style.Border.TopBorder = XLBorderStyleValues.Thin; - style.Border.BottomBorder = XLBorderStyleValues.Thin; - style.Border.InsideBorder = XLBorderStyleValues.Thin; - return style; - } - - private static IXLCell SetDateTime(IXLCell cell) - { - cell.DataType = XLDataType.DateTime; - cell.Style.DateFormat.Format = "DD.MM.YYYY HH:MM:SS"; - return cell; - } - - private static IXLCell SetNumber(IXLCell cell) - { - cell.DataType = XLDataType.Number; - cell.Style.NumberFormat.Format = "0.00"; - return cell; - } - - private static IXLCell SetCell(IXLRow row, int colunm, object value, int maxChartsToWrap = 88) - { - var cell = row.Cell(colunm); - cell.Value = value; - - SetBorder(cell.Style); - cell.Style.Alignment.WrapText = true; - - - if (value is string valueString && valueString.Length > maxChartsToWrap) - { - var baseHeight = row.Height; - row.Height = 0.82d * baseHeight * Math.Ceiling(1d + valueString.Length / maxChartsToWrap); - } - - if (value is DateTime) - { - SetDateTime(cell); - } - else if (value is IFormattable) - { - SetNumber(cell); - } - - return cell; - } - - private static (int row, int column) AddBlockHead1(IXLWorksheet sheet, DailyReportHeadDto blockDto, (int row, int column) tupleStart) - { - - var tuple = (row: tupleStart.row, column: tupleStart.column); - sheet.Cell(tuple.row, tuple.column).Value = - $"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); - tuple.row += 1; - sheet.Cell(tuple.row, tuple.column).Value = - $"Заказчик: {blockDto.Customer}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); - tuple.row += 1; - sheet.Cell(tuple.row, tuple.column).Value = - $"Подрядчик: {blockDto.Contractor}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge(); - tuple.row += 2; - //7,3 - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Отчетный период"); - tuple.column += 4; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge(); - sheet.Cell(tuple.row, tuple.column+3).Style.Border.RightBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, "Забой за отчетный период, м"); - tuple.column = tupleStart.column; - tuple.row += 1; - //8,3 - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "От (дата, время)"); - tuple.column += 2; //8,5 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "До (дата, время)"); - tuple.column += 2; //8,7 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "От"); - tuple.column += 2; //8,9 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "До"); - sheet.Cell(tuple.row, tuple.column+1).Style.Border.RightBorder = XLBorderStyleValues.Thin; - tuple.column = tupleStart.column; - tuple.row += 1; //9,3 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.ReportDate}"); - tuple.column += 2; - - //согласно формуле в шаблоне - ячейка С9 - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, ""); - sheet.Cell(tuple.row,tuple.column).FormulaA1 = $"={converteCellCoordinate(tuple.row, true, tuple.column - 2)}-1"; - SetDateTime(sheet.Cell(tuple.row,tuple.column)); - tuple.column += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.WellDepthIntervalStartDate}"); - tuple.column += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.WellDepthIntervalFinishDate}"); - tuple.column = tupleStart.column; - tuple.row += 2; //11,3 - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, "Данные по траектории скважины на конец суток"); - tuple.column = tupleStart.column; - tuple.row += 1;//12 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Глубина по стволу"); - tuple.column += 2; //12,5 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Глубина по вертикали"); - tuple.column += 2; //12,7 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Зенитный угол"); - tuple.column += 2; //12,9 - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, "Азимут"); - tuple.column = tupleStart.column; - tuple.row += 1; //13,3 - - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.BottomholeDepth}"); - tuple.column += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.VerticalDepth}"); - tuple.column += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.ZenithAngle}"); - tuple.column += 2; - - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.AzimuthAngle}"); - tuple.column = tupleStart.column; - tuple.row += 2; //15,3 - sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 1 смена"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - tuple.column += 2; - sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.FirstDriller}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - tuple.row += 1; - tuple.column = tupleStart.column; - sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 2 смена"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - tuple.column += 2; - sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.SecondDriller}"; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge(); - tuple.row += 2; - tuple.column = tupleStart.column; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column,"Работа модулей САУБ:"); - tuple.column += 3; - SetCell(sheet.Row(tuple.row),tuple.column,"Часов:"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row),tuple.column, "Метров:").Style.Border.RightBorder = XLBorderStyleValues.Thin; - tuple.row += 1; - tuple.column = tupleStart.column; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column,"АПД (автоматическая подача долота), ч/м:"); - tuple.column += 3; - SetCell(sheet.Row(tuple.row),tuple.column,$"{blockDto.WorkTimeSAUB}"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationSAUB}").Style.Border.RightBorder = XLBorderStyleValues.Thin; - tuple.row += 1; - tuple.column = tupleStart.column; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column,"Спин Мастер (осцилляция),ч/м:"); - tuple.column += 3; - SetCell(sheet.Row(tuple.row),tuple.column,$"{blockDto.WorkTimeSpinMaster}"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationSpinMaster}").Style.Border.RightBorder = XLBorderStyleValues.Thin; - tuple.row += 1; - tuple.column = tupleStart.column; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column,"Торк Мастер (демпфирование), ч/:"); - tuple.column += 3; - SetCell(sheet.Row(tuple.row),tuple.column,$"{blockDto.WorkTimeTorkMaster}"); - tuple.column += 1; - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationTorkMaster}").Style.Border.RightBorder = XLBorderStyleValues.Thin; - tuple.row += 1; - tuple.column = tupleStart.column; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column,"МСЕ, колличество запусков, раз:"); - tuple.column += 3; - sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.CountLaunchesMSE}"); - tuple.column+=2; - return tuple; - } - - private static (int row, int column) AddBlockBha(IXLWorksheet sheet, DailyReportSaubDto blockDto, (int row, int column) tupleStart) - { - tupleStart.row += 2; - tupleStart.column = 3; - var tuple = (row: tupleStart.row, column: tupleStart.column); - - - sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, $"Бурение в роторе : {blockDto.RotorDrillingModes}"); - tuple.row+=1; - sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, $"Бурение в слайде : {blockDto.SlideDrillingModes}"); - tuple.row+=2; - - - sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, "Бурение в роторе (за отчетный период) с использование САУБ-1"); - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Проходка"); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Часы бурения"); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Мех. скорость"); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Среднее диф. Давление") - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - tuple.column=tupleStart.column; - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationInRotor}"); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.NumberDrillingHours}"); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, ""); - sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaMechanicalSpeed(tuple); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.AVGDiffDropRotor}") - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - tuple.column=tupleStart.column; - tuple.row+=2; - - sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, "Бурение в слайде (за отчетный период) с использование САУБ-1"); - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Проходка"); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Часы бурения"); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Мех. скорость"); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, "Среднее диф. Давление"); - tuple.column=tupleStart.column; - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationInSlide}"); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.DrillingTimeInRotor}"); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, ""); - sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaMechanicalSpeed(tuple); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.AVGDiffPressureSlide}"); - tuple.column=tupleStart.column; - tuple.row+=2; - - sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 5).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Итого за отчетный период, использование САУБ-1"); - tuple.column+=6; - sheet.Range(tuple.row,tuple.column, tuple.row + 1,tuple.column + 1).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, "Плановая мех скорость"); - tuple.column = tupleStart.column; - tuple.row += 1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Проходка"); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Часы бурения"); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Мех. скорость"); - tuple.column=tupleStart.column; - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, ""); - sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaSinking(tuple); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, ""); - sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaDrillingWatch(tuple); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, ""); - tuple.column+=2; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.SectionROPPlan}"); - tuple.column=tupleStart.column; - tuple.row+=2; - - - - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Увеличение мех скорости за секцию %"); - tuple.column+=4; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, ""); - tuple.column=tupleStart.column; - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Увеличение мех скорости за сутки %"); - tuple.column+=4; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, ""); - tuple.column=tupleStart.column; - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Сокращение времени бурения за секцию, ч"); - tuple.column+=4; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, ""); - tuple.column=tupleStart.column; - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Ротор / слайд, %"); - tuple.column+=4; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, ""); - tuple.column=tupleStart.column; - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "МСП за секцию м/ч."); - tuple.column+=4; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, ""); - tuple.column=tupleStart.column; - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Время бурения за секцию"); - tuple.column+=4; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.SectionDrillingTimeTotal}"); - tuple.column=tupleStart.column; - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Проходка за секцию"); - tuple.column+=4; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.SectionPenetrationTotal}"); - tuple.column=tupleStart.column; - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Кол- во наращиваний"); - tuple.column+=4; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.ExtensionsCount}"); - tuple.column=tupleStart.column; - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge(); - SetCell(sheet.Row(tuple.row),tuple.column, "Отклонение от ГГД +/-, сут"); - tuple.column+=4; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.DeviationFromTVD}"); - tuple.column=tupleStart.column; - tuple.row+=1; - sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 7).Merge() - .Style.Border.OutsideBorder = XLBorderStyleValues.Thin; - SetCell(sheet.Row(tuple.row),tuple.column, $"Примечание: {blockDto.DeclinesReasonsROP}"); - tuple.column += 7; - return tuple; - } - } - struct CellAddress - { - public int Col { get; set; } - public int Row { get; set; } - //public string GetExcelAddress() - //{ - - //} } } From 0f27809489c6162912fa36998796b0031d9256d4 Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Mon, 4 Jul 2022 05:29:16 +0500 Subject: [PATCH 10/34] =?UTF-8?q?-=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=87=D0=B0=D1=81=D1=82=D1=8C=20"=D0=A1?= =?UTF-8?q?=D0=90=D0=A3=D0=91"=20-=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20=D0=B1=D0=B8=D0=B1=D0=BB?= =?UTF-8?q?=D0=B8=D0=BE=D1=82=D0=B5=D0=BA=D0=B8=20=D0=B8=D0=B7=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=D0=BE=D0=B2=20=D1=80=D0=B5=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D1=83=D1=8E=D1=89=D0=B8=D0=B5=20=D0=B1=D0=BB=D0=BE?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DailyReport/DailyReportBlocks/BhaBlock.cs | 15 +- .../DailyReportBlocks/DimensionlessBlock.cs | 7 +- .../DailyReportBlocks/HeadBlock.cs | 8 +- .../DailyReportBlocks/SaubBlock.cs | 237 +++++++++++++++--- .../DailyReportBlocks/SignBlock.cs | 5 +- .../DailyReportBlocks/TimeBalanceBlock.cs | 8 +- .../DailyReport/DailyReportMakerExcel.cs | 27 +- ConsoleApp1/Program.cs | 20 +- 8 files changed, 242 insertions(+), 85 deletions(-) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs index 7c536e04..b52bcdab 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs @@ -1,10 +1,8 @@ -using System; -using AsbCloudApp.Data.DailyReport; +using AsbCloudApp.Data.DailyReport; using ClosedXML.Excel; namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { - class BhaBlock : BlockAbstract { private readonly DailyReportBhaDto blockDto; @@ -23,8 +21,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public BhaBlock(CellAddress addressBlockBegin, DailyReportBhaDto blockDto) { this.blockDto = blockDto; - AddressBlockBegin = addressBlockBegin.Copy(); - AddressBlockBegin.ColumnNumber = 0; + AddressBlockBegin = addressBlockBegin.Copy(); AddressBhaDescription = addressBlockBegin + (1,0); AddressOperationTitle = addressBlockBegin + (3, 0); AddressDurationTitle = addressBlockBegin + (3, 5); @@ -56,11 +53,13 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks AddressBlockEnd = AddressTotaData[4]; } - private string FormulaBhaBlock(CellAddress beginTime, CellAddress endTime ) - { - return $"IF({endTime}>0,({endTime}-{beginTime})*24, \"\")"; + private string FormulaBhaBlock(CellAddress beginTime, CellAddress endTime) + { + return string.Format("IF({0}>0,({1}-{2})*24, \"\")", endTime.ToString(), endTime.ToString(), beginTime.ToString()); } + + public override void Draw(IXLWorksheet sheet) { diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs index afe7053a..a53a7dbb 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs @@ -1,5 +1,4 @@ -using System; -using AsbCloudApp.Data.DailyReport; +using AsbCloudApp.Data.DailyReport; using ClosedXML.Excel; namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks @@ -56,12 +55,12 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks private string FormulaBlockPlan(CellAddress cellTarget) { - return $"={cellTarget}/60*{saubBlock.AddressBhaWithFormula}"; + return $"={cellTarget}/60*{saubBlock.ExtensionsCount}"; } private string FormulaBlockExcess(CellAddress cellFact, CellAddress cellPlan) { - return $"={cellFact}-{cellPlan}"; + return string.Format("={0}-{1}", cellFact.ToString(), cellPlan.ToString()); } public override void Draw(IXLWorksheet sheet) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs index adce76aa..32ae732c 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs @@ -82,12 +82,10 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks AddressMetreData[1] = addressBlockBegin + (17, 4); AddressMetreData[2] = addressBlockBegin + (18, 4); AddressBlockEnd = AddressWatchData[3]+(0,1); - } public override void Draw(IXLWorksheet sheet) - { - + { sheet._Range(AddressTitle, AddressTitle + (0, 7)) ._SetValue($"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}") .Style.SetH1(); @@ -111,9 +109,9 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue("До"); sheet._Range(AddressPeriodTableDataArray[0], AddressPeriodTableDataArray[0] + (0, 1)) ._SetValue($"{blockDto.ReportDate}"); - sheet._Range(AddressPeriodTableDataArray[1], AddressPeriodTableDataArray[1] + (0, 1)); + sheet._Range(AddressPeriodTableDataArray[1], AddressPeriodTableDataArray[1] + (0, 1)); sheet.Cell(AddressPeriodTableDataArray[1]) - .SetFormulaA1($"={AddressPeriodTableDataArray[0].ToString()}-1"); + .SetFormulaA1(string.Format("{0}-1", AddressPeriodTableDataArray[0].ToString())); sheet._Range(AddressPeriodTableDataArray[2], AddressPeriodTableDataArray[2] + (0, 1)) ._SetValue($"{blockDto.WellDepthIntervalStartDate}"); sheet._Range(AddressPeriodTableDataArray[3], AddressPeriodTableDataArray[3] + (0, 1)) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs index ec3ae8ea..0f6d45db 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs @@ -1,60 +1,225 @@ -using System; -using AsbCloudApp.Data.DailyReport; +using AsbCloudApp.Data.DailyReport; using ClosedXML.Excel; namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { - internal class SaubBlock : BlockAbstract { private readonly DailyReportSaubDto blockDto; - - public CellAddress AddressBhaWithFormula { get; } - - - public CellAddress[] AddressPeriodTableDataArray { get; } - - /// - /// Значение нижняя правая ячейка блока - /// - public override CellAddress AddressBlockBegin { get; } - - /// - /// Значение нижняя правая ячейка блока - /// + private readonly HeadBlock headBlock; + public CellAddress AddressRotorDrilling { get; } + public CellAddress AddressSlideDrilling { get; } + public CellAddress AddressDrillingTableTitle { get; } + public CellAddress[] AddressDrillingTableHead { get; } + public CellAddress[] AddressDrillingTableData { get; } + public CellAddress AddressSlideTableTitle { get; } + public CellAddress[] AddressSlideTableHead { get; } + public CellAddress[] AddressSlideTableData { get; } + public CellAddress AddressTotalTableMechanicalSpeed { get; } + public CellAddress AddressTotalTableTitle { get; } + public CellAddress[] AddressTotalTableHead { get; } + public CellAddress[] AddressTotalTableData { get; } + public CellAddress IncreaseSpeedSection { get; } + public CellAddress IncreaseSpeedDay { get; } + public CellAddress ReductionTimeDrilling { get; } + public CellAddress RotorSlidePercent { get; } + public CellAddress MspSection { get; } + public CellAddress SectionDrillingTimeTotal { get; } + public CellAddress SectionPenetrationTotal { get; } + public CellAddress ExtensionsCount { get; } + public CellAddress DeviationFromTVD { get; } + public CellAddress DeclinesReasonsROP { get; } + public CellAddress IncreaseSpeedSectionValue { get; } + public CellAddress IncreaseSpeedDayValue { get; } + public CellAddress ReductionTimeDrillingValue { get; } + public CellAddress RotorSlidePercentValue { get; } + public CellAddress MspSectionValue { get; } + public CellAddress SectionDrillingTimeTotalValue { get; } + public CellAddress SectionPenetrationTotalValue { get; } + public CellAddress ExtensionsCountValue { get; } + public CellAddress DeviationFromTVDValue { get; } + public override CellAddress AddressBlockBegin { get; } public override CellAddress AddressBlockEnd { get; } public SaubBlock(CellAddress addressBlockBegin, DailyReportSaubDto blockDto) { AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; - AddressBhaWithFormula = addressBlockBegin + (0, 0); + AddressRotorDrilling = addressBlockBegin + (1, 0); + AddressSlideDrilling = addressBlockBegin + (2, 0); + AddressDrillingTableTitle = addressBlockBegin + (4, 0); + AddressDrillingTableHead = new CellAddress[4]; + AddressDrillingTableHead[0] = addressBlockBegin + (5, 0); + AddressDrillingTableHead[1] = addressBlockBegin + (5, 2); + AddressDrillingTableHead[2] = addressBlockBegin + (5, 4); + AddressDrillingTableHead[3] = addressBlockBegin + (5, 6); + AddressDrillingTableData = new CellAddress[4]; + AddressDrillingTableData[0] = addressBlockBegin + (6, 0); + AddressDrillingTableData[1] = addressBlockBegin + (6, 2); + AddressDrillingTableData[2] = addressBlockBegin + (6, 4); + AddressDrillingTableData[3] = addressBlockBegin + (6, 6); + AddressSlideTableTitle = addressBlockBegin + (8, 0); + AddressSlideTableHead = new CellAddress[4]; + AddressSlideTableHead[0] = addressBlockBegin + (9, 0); + AddressSlideTableHead[1] = addressBlockBegin + (9, 2); + AddressSlideTableHead[2] = addressBlockBegin + (9, 4); + AddressSlideTableHead[3] = addressBlockBegin + (9, 6); + AddressSlideTableData = new CellAddress[4]; + AddressSlideTableData[0] = addressBlockBegin + (10, 0); + AddressSlideTableData[1] = addressBlockBegin + (10, 2); + AddressSlideTableData[2] = addressBlockBegin + (10, 4); + AddressSlideTableData[3] = addressBlockBegin + (10, 6); + AddressTotalTableTitle = addressBlockBegin + (12, 0); + AddressTotalTableMechanicalSpeed = addressBlockBegin + (12, 6); + AddressTotalTableHead = new CellAddress[4]; + AddressTotalTableHead[0] = addressBlockBegin + (13, 0); + AddressTotalTableHead[1] = addressBlockBegin + (13, 2); + AddressTotalTableHead[2] = addressBlockBegin + (13, 4); + AddressTotalTableData = new CellAddress[4]; + AddressTotalTableData[0] = addressBlockBegin + (14, 0); + AddressTotalTableData[1] = addressBlockBegin + (14, 2); + AddressTotalTableData[2] = addressBlockBegin + (14, 4); + AddressTotalTableData[3] = addressBlockBegin + (14, 6); + IncreaseSpeedSection = addressBlockBegin + (16, 0); + IncreaseSpeedSectionValue = addressBlockBegin + (16, 4); + IncreaseSpeedDay = addressBlockBegin + (17, 0); + IncreaseSpeedDayValue = addressBlockBegin + (17, 4); + ReductionTimeDrilling = addressBlockBegin + (18, 0); + ReductionTimeDrillingValue = addressBlockBegin + (18, 4); + RotorSlidePercent = addressBlockBegin + (19, 0); + RotorSlidePercentValue = addressBlockBegin + (19, 4); + MspSection = addressBlockBegin + (20, 0); + MspSectionValue = addressBlockBegin + (20, 4); + SectionDrillingTimeTotal = addressBlockBegin + (21, 0); + SectionDrillingTimeTotalValue = addressBlockBegin + (21, 4); + SectionPenetrationTotal = addressBlockBegin + (22, 0); + SectionPenetrationTotalValue = addressBlockBegin + (22, 4); + ExtensionsCount = addressBlockBegin + (23, 0); + ExtensionsCountValue = addressBlockBegin + (23, 4); + DeviationFromTVD = addressBlockBegin + (24, 0); + DeviationFromTVDValue = addressBlockBegin + (24, 4); + DeclinesReasonsROP = addressBlockBegin + (25, 0); + AddressBlockEnd = DeclinesReasonsROP + (1,7) ; + } - //AddressExampleData1 = addressBlockBegin + (5, 0); + private string FormulaMechanicalSpeed(CellAddress cellSinking, CellAddress cellWatch ) + { + return string.Format("=IF({0}>0,{1}/{2},0)", cellWatch.ToString(), cellSinking.ToString(), cellWatch.ToString()); + } - - - //AddressBlockEnd = AddressesExampleDataArray.Last(); + private string FormulaSinking(CellAddress sinkingDrilling, CellAddress sinkingSlide, CellAddress slaughterEnd, CellAddress slaughterBegin) + { + return string.Format($"=IF(({{0}}+{{1}})<>({{2}}-{{3}});\"ОШИБКА\";({{4}}+{{5}}))", sinkingSlide.ToString(), sinkingDrilling.ToString() + , slaughterEnd.ToString(), slaughterBegin.ToString(), + sinkingSlide.ToString(), sinkingDrilling.ToString()); } public override void Draw(IXLWorksheet sheet) { + sheet._Range(AddressRotorDrilling, AddressRotorDrilling + (0, 7)) + ._SetValue($"Бурение в роторе : {blockDto.RotorDrillingModes}"); + sheet._Range(AddressSlideDrilling, AddressSlideDrilling + (0, 7)) + ._SetValue($"Бурение в слайде : {blockDto.SlideDrillingModes}"); + sheet._Range(AddressDrillingTableTitle, AddressDrillingTableTitle + (0, 7)) + ._SetValue("Бурение в роторе(за отчетный период) с использование САУБ - 1"); + sheet._Range(AddressDrillingTableHead[0], AddressDrillingTableHead[0] + (0, 1)) + ._SetValue("Проходка"); + sheet._Range(AddressDrillingTableHead[1], AddressDrillingTableHead[1] + (0, 1)) + ._SetValue("Часы бурения"); + sheet._Range(AddressDrillingTableHead[2], AddressDrillingTableHead[2] + (0, 1)) + ._SetValue("Мех. скорость"); + sheet._Range(AddressDrillingTableHead[3], AddressDrillingTableHead[3] + (0, 1)) + ._SetValue("Среднее диф. Давление"); + sheet._Range(AddressDrillingTableData[0], AddressDrillingTableData[0] + (0, 1)) + ._SetValue($"{blockDto.PenetrationInRotor}"); + sheet._Range(AddressDrillingTableData[1], AddressDrillingTableData[1] + (0, 1)) + ._SetValue($"{blockDto.NumberDrillingHours}"); + sheet._Range(AddressDrillingTableData[2], AddressDrillingTableData[2] + (0, 1)); + sheet.Cell(AddressDrillingTableData[2]) + .SetFormulaA1(FormulaMechanicalSpeed(AddressDrillingTableData[0], AddressDrillingTableData[1])); + sheet._Range(AddressDrillingTableData[3], AddressDrillingTableData[3] + (0, 1)) + ._SetValue($"{blockDto.AVGDiffDropRotor}"); + sheet._Range(AddressSlideTableTitle, AddressSlideTableTitle + (0, 7)) + ._SetValue("Бурение в слайде (за отчетный период) с использование САУБ-1"); + sheet._Range(AddressSlideTableHead[0], AddressSlideTableHead[0] + (0, 1)) + ._SetValue("Проходка"); + sheet._Range(AddressSlideTableHead[1], AddressSlideTableHead[1] + (0, 1)) + ._SetValue("Часы бурения"); + sheet._Range(AddressSlideTableHead[2], AddressSlideTableHead[2] + (0, 1)) + ._SetValue("Мех. скорость"); + sheet._Range(AddressSlideTableHead[3], AddressSlideTableHead[3] + (0, 1)) + ._SetValue("Среднее диф. Давление"); + sheet._Range(AddressSlideTableData[0], AddressSlideTableData[0] + (0, 1)) + ._SetValue($"{blockDto.PenetrationInSlide}"); + sheet._Range(AddressSlideTableData[1], AddressSlideTableData[1] + (0, 1)) + ._SetValue($"{blockDto.DrillingTimeInRotor}"); + sheet._Range(AddressSlideTableData[2], AddressSlideTableData[2] + (0, 1)); + sheet.Cell(AddressSlideTableData[2]) + .SetFormulaA1(FormulaMechanicalSpeed(AddressSlideTableData[0], AddressSlideTableData[1])); + sheet._Range(AddressSlideTableData[3], AddressSlideTableData[3] + (0, 1)) + ._SetValue($"{blockDto.AVGDiffPressureSlide}"); + sheet._Range(AddressTotalTableTitle, AddressTotalTableTitle + (0, 5)) + ._SetValue("Итого за отчетный период, использование САУБ-1"); + sheet._Range(AddressTotalTableMechanicalSpeed, AddressTotalTableMechanicalSpeed + (1, 1)) + ._SetValue("Плановая мех скорость"); + sheet._Range(AddressTotalTableHead[0], AddressTotalTableHead[0] + (0, 1)) + ._SetValue("Проходка"); + sheet._Range(AddressTotalTableHead[1], AddressTotalTableHead[1] + (0, 1)) + ._SetValue("Часы бурения"); + sheet._Range(AddressTotalTableHead[2], AddressTotalTableHead[2] + (0, 1)) + ._SetValue("Мех. скорость"); + var formulaWatch = string.Format("={0}+{1}", + AddressDrillingTableData[1].ToString(), AddressSlideTableData[1].ToString()); + sheet._Range(AddressTotalTableData[0], AddressTotalTableData[0] + (0, 1)); + sheet.Cell(AddressTotalTableData[0]) + .SetFormulaA1(formulaWatch); + sheet._Range(AddressTotalTableData[1], AddressTotalTableData[1] + (0, 1)); + sheet.Cell(AddressTotalTableData[1]) + .SetFormulaA1(formulaWatch); + sheet._Range(AddressTotalTableData[2], AddressTotalTableData[2] + (0, 1)) + ._SetValue(""); + sheet._Range(AddressTotalTableData[3], AddressTotalTableData[3] + (0, 1)) + ._SetValue($"{blockDto.SectionROPPlan}"); + sheet._Range(IncreaseSpeedSection, IncreaseSpeedSection + (0, 3)) + ._SetValue("Увеличение мех скорости за секцию %"); + sheet._Range(IncreaseSpeedSectionValue, IncreaseSpeedSectionValue + (0, 3)) + ._SetValue($"{blockDto.IncreaseSpeedSection}"); + sheet._Range(IncreaseSpeedDay, IncreaseSpeedDay + (0, 3)) + ._SetValue("Увеличение мех скорости за сутки %"); + sheet._Range(IncreaseSpeedDayValue, IncreaseSpeedDayValue + (0, 3)) + ._SetValue($"{blockDto.IncreaseSpeedDay}"); + sheet._Range(ReductionTimeDrilling, ReductionTimeDrilling + (0, 3)) + ._SetValue("Сокращение времени бурения за секцию, ч"); + sheet._Range(ReductionTimeDrillingValue, ReductionTimeDrillingValue + (0, 3)) + ._SetValue($"{blockDto.ReductionTimeDrilling}"); + sheet._Range(RotorSlidePercent, RotorSlidePercent + (0, 3)) + ._SetValue("Ротор / слайд, %"); + sheet._Range(RotorSlidePercentValue, RotorSlidePercentValue + (0, 3)) + ._SetValue($"{blockDto.RotorSlidePercent}"); + sheet._Range(MspSection, MspSection + (0, 3)) + ._SetValue("МСП за секцию м/ч."); + sheet._Range(MspSectionValue, MspSectionValue + (0, 3)) + ._SetValue($"{blockDto.MspSection}"); + sheet._Range(SectionDrillingTimeTotal, SectionDrillingTimeTotal + (0, 3)) + ._SetValue("Время бурения за секцию"); + sheet._Range(SectionDrillingTimeTotalValue, SectionDrillingTimeTotalValue + (0, 3)) + ._SetValue($"{blockDto.SectionDrillingTimeTotal}"); + sheet._Range(SectionPenetrationTotal, SectionPenetrationTotal + (0, 3)) + ._SetValue("Проходка за секцию"); + sheet._Range(SectionPenetrationTotalValue, SectionPenetrationTotalValue + (0, 3)) + ._SetValue($"{blockDto.SectionPenetrationTotal}"); + sheet._Range(ExtensionsCount, ExtensionsCount + (0, 3)) + ._SetValue("Кол- во наращиваний"); + sheet._Range(ExtensionsCountValue, ExtensionsCountValue + (0, 3)) + ._SetValue($"{blockDto.ExtensionsCount}"); + sheet._Range(DeviationFromTVD, DeviationFromTVD + (0, 3)) + ._SetValue("Отклонение от ГГД +/-, сут"); + sheet._Range(DeviationFromTVDValue, DeviationFromTVDValue + (0, 3)) + ._SetValue($"{blockDto.DeviationFromTVD}"); + sheet._Range(DeclinesReasonsROP, DeclinesReasonsROP + (1, 7)) + ._SetValue($"Примечание: {blockDto.DeclinesReasonsROP}"); - //sheet.Range(AddressBhaDescription, AddressBhaDescription + (0, 7)) - // ._SetValue($"{blockDto.BHADescription}"); - - - - - - - - - - // sheet._Range(AddressExampleData1, AddressExampleData1 + (0, 4)) - // ._SetValue(blockDto.BottomholeDepth); // для примера с будущей формулой } } - } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs index 7ed0347f..729a3e08 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs @@ -1,14 +1,11 @@ -using System; -using AsbCloudApp.Data.DailyReport; +using AsbCloudApp.Data.DailyReport; using ClosedXML.Excel; namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { - internal class SignBlock : BlockAbstract { private readonly DailyReportSignDto blockDto; - public CellAddress AddressDrillMasterHead { get; } public CellAddress AddressDrillMaster { get; } public CellAddress AddressSupervisorHead { get; } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs index 788dc3ec..af81792b 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs @@ -1,16 +1,12 @@ -using System; -using AsbCloudApp.Data.DailyReport; +using AsbCloudApp.Data.DailyReport; using ClosedXML.Excel; namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { - class TimeBalanceBlock : BlockAbstract { private readonly DailyReportTimeBalanceDto blockDto; - - public CellAddress AddressTitle { get; } - + public CellAddress AddressTitle { get; } public CellAddress AddressDrilling { get; set; } public CellAddress AddressFlushing { get; set; } public CellAddress AddressBuilding { get; set; } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs index e9276b05..0655dfc4 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs @@ -1,11 +1,7 @@ using AsbCloudApp.Data; -using AsbCloudApp.Data.DailyReport; using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks; using ClosedXML.Excel; -using System; using System.IO; -using System.Linq; - namespace AsbCloudInfrastructure.Services.DailyReport { public class DailyReportMakerExcel @@ -26,32 +22,29 @@ namespace AsbCloudInfrastructure.Services.DailyReport var addressStart = new CellAddress(sheet, 1, 1); var blockHeader = new HeadBlock(addressStart, dto.HeadDto); addressStart = blockHeader.AddressBlockEnd + (1, 0); - addressStart.ColumnNumber = 0; + addressStart.ColumnNumber = 1; var blockBha = new BhaBlock(addressStart, dto.BhaDto); addressStart = blockBha.AddressBlockEnd + (1, 0); - addressStart.ColumnNumber = 0; + addressStart.ColumnNumber = 1; var timeBalance = new TimeBalanceBlock(addressStart, dto.TimeBalanceDto); addressStart = timeBalance.AddressBlockEnd + (1, 0); - addressStart.ColumnNumber = 0; + addressStart.ColumnNumber = 1; var blockDimensionless = new DimensionlessBlock(addressStart, dto.DimensionlessDto); addressStart = blockDimensionless.AddressBlockEnd + (1, 0); - addressStart.ColumnNumber = 0; + addressStart.ColumnNumber = 1; + var blockSaub = new SaubBlock(addressStart, dto.SaubDto); + addressStart = blockSaub.AddressBlockEnd + (1, 0); + addressStart.ColumnNumber = 1; var blockSign = new SignBlock(addressStart, dto.SignDto); addressStart = blockSign.AddressBlockEnd + (1, 0); - addressStart.ColumnNumber = 0; - - + addressStart.ColumnNumber = 1; blockHeader.Draw(sheet); blockBha.Draw(sheet); timeBalance.Draw(sheet); blockDimensionless.Draw(sheet); + blockSaub.Draw(sheet); blockSign.Draw(sheet); - - - - } - - + } } } diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs index 076a509d..14b28e95 100644 --- a/ConsoleApp1/Program.cs +++ b/ConsoleApp1/Program.cs @@ -1,4 +1,6 @@ -using AsbCloudApp.Data.DailyReport; +using AsbCloudApp.Data; +using AsbCloudApp.Data.DailyReport; +using AsbCloudInfrastructure.Services.DailyReport; using ClosedXML.Excel; using System; using System.IO; @@ -12,6 +14,8 @@ namespace ConsoleApp1 // use ServiceFactory to make services static void Main(/*string[] args*/) { + + var block = new DailyReportHeadDto() { AzimuthAngle = 12, @@ -28,11 +32,17 @@ namespace ConsoleApp1 { BHADescription = "sadasdasdasdasdasdjlaskjdaksjdlasdlalskdklj" }; - var block3 = new DailyReportTimeBalanceDto(); + var block3 = new DailyReportSaubDto(); + var bloks = new DailyReportDto() + { + HeadDto = block, + SaubDto = block3 + }; + + - /* var service = new DailyReportMakerExcel(); - var stream = service.MakeReportFromBlocks(block, block2, block3,null, null, null); + var stream = service.MakeReportFromBlocks(bloks); var filename = "____.xlsx"; if (File.Exists(filename)) File.Delete(filename); @@ -40,7 +50,7 @@ namespace ConsoleApp1 stream.CopyTo(fileStream); return; - */ + From 61e2056eeab7fc8492f22d46fa3a88b223f2b4eb Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Mon, 4 Jul 2022 13:15:26 +0500 Subject: [PATCH 11/34] =?UTF-8?q?=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=81=D0=B5=D1=80?= =?UTF-8?q?=D0=B2=D0=B8=D1=81=D0=B0=20(=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D0=B5?= =?UTF-8?q?=D0=B9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudDb/Model/AsbCloudDbContext.cs | 3 +- .../{DailyReportDb.cs => DailyReport.cs} | 11 +++++--- .../Model/DailyReportDB/DailyReportInfo.cs | 18 ++++++++++++ AsbCloudDb/Model/IAsbCloudDbContext.cs | 3 +- .../DailyReport/DailyReportService.cs | 28 +++++++++++++++---- 5 files changed, 51 insertions(+), 12 deletions(-) rename AsbCloudDb/Model/DailyReportDB/{DailyReportDb.cs => DailyReport.cs} (79%) create mode 100644 AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index e1f1d6b8..a1f421f9 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore; +using AsbCloudDb.Model.DailyReportDB; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs b/AsbCloudDb/Model/DailyReportDB/DailyReport.cs similarity index 79% rename from AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs rename to AsbCloudDb/Model/DailyReportDB/DailyReport.cs index a4e16ec3..0d43f1a9 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReport.cs @@ -5,8 +5,8 @@ using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model.DailyReportDB { #nullable disable - [Table("t_daily_report"), Comment("Ежедневные отчёты")] - public class DailyReportDb + [Table("t_daily_report_mod"), Comment("Ежедневные отчёты")] + public class DailyReport { [Column("id_well"), Comment("ID скважины")] public int IdWell { get; set; } @@ -15,11 +15,14 @@ namespace AsbCloudDb.Model.DailyReportDB public DateTimeOffset StartDate { get; set; } [Column("blockHead", TypeName = "jsonb"), Comment("1 блок параметров для отчёта")] - public DailyReportInfo BlockHead { get; set; } + public DailyReportHead BlockHead { get; set; } [Column("blockBha", TypeName = "jsonb"), Comment("2 блок параметров для отчёта")] public DailyReportBha BlockBha { get; set; } + [Column("blockTimeBalance", TypeName = "jsonb"), Comment("2 блок параметров для отчёта")] + public DailyReportTimeBalance BlockTimeBalance { get; set; } + [Column("blockDimensionless", TypeName = "jsonb"), Comment("4 блок параметров для отчёта")] public DailyReportDimensionless BlockDimensionless { get; set; } @@ -37,7 +40,7 @@ namespace AsbCloudDb.Model.DailyReportDB - + diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs new file mode 100644 index 00000000..40833d8d --- /dev/null +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using AsbCloudDb.Model.DailyReportDB; + +namespace AsbCloudDb.Model +{ +#nullable disable + public class DailyReportInfo + { + public DailyReportHead HeadInfo { get; set; } + public DailyReportBha BhaDto { get; set; } + public DailyReportDimensionless DimensionlessInfo { get; set; } + public DailyReportTimeBalance TimeBalanceInfo { get; set; } + public DailyReportSaub SaubInfo { get; set; } + public DailyReportSign SignInfo { get; set; } + } + +} diff --git a/AsbCloudDb/Model/IAsbCloudDbContext.cs b/AsbCloudDb/Model/IAsbCloudDbContext.cs index 84f4a824..8fbd7de5 100644 --- a/AsbCloudDb/Model/IAsbCloudDbContext.cs +++ b/AsbCloudDb/Model/IAsbCloudDbContext.cs @@ -1,4 +1,5 @@ -using AsbCloudDb.Model.WITS; +using AsbCloudDb.Model.DailyReportDB; +using AsbCloudDb.Model.WITS; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using System; diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs index b0a689f6..0dbb4636 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs @@ -9,7 +9,7 @@ using AsbCloudApp.Data; using AsbCloudApp.Services; using AsbCloudDb.Model; using System.Collections.Generic; - +using AsbCloudDb.Model.DailyReportDB; using AsbCloudApp.Data.DailyReport; namespace AsbCloudInfrastructure.Services.DailyReport @@ -64,11 +64,17 @@ namespace AsbCloudInfrastructure.Services.DailyReport var offsetHours = wellService.GetTimezone(idWell).Hours; var reportDateOffset = dto.HeadDto.ReportDate.ToUtcDateTimeOffset(offsetHours); var info = Convert(dto, offsetHours); - var entity = new AsbCloudDb.Model.DailyReport + var entity = new AsbCloudDb.Model.DailyReportDB.DailyReport { IdWell = idWell, StartDate = reportDateOffset, - Info = info, + BlockHead = info.HeadInfo, + BlockBha = info.BhaDto, + BlockDimensionless = info.DimensionlessInfo, + BlockTimeBalance = info.TimeBalanceInfo, + BlockSaub = info.SaubInfo, + BlockSign = info.SignInfo + }; db.DailyReports.Add(entity); var result = await db.SaveChangesAsync(token); @@ -88,7 +94,8 @@ namespace AsbCloudInfrastructure.Services.DailyReport if (entity is null) return 0; - entity.Info = Convert(dto, offsetHours); + var convertEntity = Convert(dto, offsetHours); + entity.BlockHead = convertEntity.HeadInfo; db.DailyReports.Update(entity); var result = await db.SaveChangesAsync(token); @@ -141,9 +148,18 @@ namespace AsbCloudInfrastructure.Services.DailyReport return result; } - private static DailyReportDto Convert(AsbCloudDb.Model.DailyReport entity, double offsetHours) + private static DailyReportDto Convert(AsbCloudDb.Model.DailyReportDB.DailyReport entity, double offsetHours) { - var dto = entity.Info.Adapt(); + var dto = new DailyReportDto() + { + BhaDto = entity.BlockBha.Adapt(), + HeadDto = entity.BlockHead.Adapt(), + TimeBalanceDto = entity.BlockTimeBalance.Adapt(), + DimensionlessDto = entity.BlockDimensionless.Adapt(), + SaubDto = entity.BlockSaub.Adapt(), + SignDto = entity.BlockSign.Adapt() + }; + dto.HeadDto.ReportDate = entity.StartDate .ToRemoteDateTime(offsetHours); return dto; From 71ace34ec92a9bd0a82b204bd8472c509552a9c9 Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Mon, 4 Jul 2022 14:13:33 +0500 Subject: [PATCH 12/34] =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=81=D1=82=D0=B0=D1=80=D1=8B=D1=85=20=D0=BC?= =?UTF-8?q?=D0=BE=D0=B4=D0=B5=D0=BB=D0=B5=D0=B9=20=D0=91=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudDb/Model/DailyReport.cs | 25 ------------------------- AsbCloudDb/Model/DailyReportInfo.cs | 18 ------------------ 2 files changed, 43 deletions(-) delete mode 100644 AsbCloudDb/Model/DailyReport.cs delete mode 100644 AsbCloudDb/Model/DailyReportInfo.cs diff --git a/AsbCloudDb/Model/DailyReport.cs b/AsbCloudDb/Model/DailyReport.cs deleted file mode 100644 index fc3c0185..00000000 --- a/AsbCloudDb/Model/DailyReport.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using System; -using System.ComponentModel.DataAnnotations.Schema; - - -namespace AsbCloudDb.Model -{ -#nullable disable - [Table("t_daily_report"), Comment("Ежедневные отчёты")] - public class DailyReport - { - [Column("id_well"), Comment("ID скважины")] - public int IdWell { get; set; } - - [Column("start_date", TypeName = "timestamp with time zone"), Comment("Дата отчёта")] - public DateTimeOffset StartDate { get; set; } - - [Column("info", TypeName = "jsonb"), Comment("Список параметров для отчёта")] - public DailyReportInfo Info { get; set; } - - [ForeignKey(nameof(IdWell))] - public virtual Well Well { get; set; } - } - -} diff --git a/AsbCloudDb/Model/DailyReportInfo.cs b/AsbCloudDb/Model/DailyReportInfo.cs deleted file mode 100644 index 40833d8d..00000000 --- a/AsbCloudDb/Model/DailyReportInfo.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using AsbCloudDb.Model.DailyReportDB; - -namespace AsbCloudDb.Model -{ -#nullable disable - public class DailyReportInfo - { - public DailyReportHead HeadInfo { get; set; } - public DailyReportBha BhaDto { get; set; } - public DailyReportDimensionless DimensionlessInfo { get; set; } - public DailyReportTimeBalance TimeBalanceInfo { get; set; } - public DailyReportSaub SaubInfo { get; set; } - public DailyReportSign SignInfo { get; set; } - } - -} From 7d9a969ca6523dcc49fd3bc1e52ba01d70e6307d Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Tue, 5 Jul 2022 11:30:25 +0500 Subject: [PATCH 13/34] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=D0=B5=D1=80=D0=B2?= =?UTF-8?q?=D0=B8=D1=81=D0=B0=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA?= =?UTF-8?q?=20=D1=84=D0=BE=D1=80=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudApp/Data/DailyReportDto.cs | 12 ++--- AsbCloudDb/Model/DailyReportDB/DailyReport.cs | 21 ++------ .../Model/DailyReportDB/DailyReportInfo.cs | 12 ++--- .../DailyReport/DailyReportBlocks/BhaBlock.cs | 7 +-- .../DailyReportBlocks/DimensionlessBlock.cs | 6 ++- .../DailyReportBlocks/SaubBlock.cs | 23 +++++---- .../DailyReportBlocks/SignBlock.cs | 8 +-- .../DailyReportBlocks/TimeBalanceBlock.cs | 2 +- .../DailyReport/DailyReportMakerExcel.cs | 15 +++--- .../DailyReport/DailyReportService.cs | 50 ++++++++----------- ConsoleApp1/Program.cs | 4 +- 11 files changed, 69 insertions(+), 91 deletions(-) diff --git a/AsbCloudApp/Data/DailyReportDto.cs b/AsbCloudApp/Data/DailyReportDto.cs index f9bf7e36..63b22dd2 100644 --- a/AsbCloudApp/Data/DailyReportDto.cs +++ b/AsbCloudApp/Data/DailyReportDto.cs @@ -11,12 +11,12 @@ namespace AsbCloudApp.Data public class DailyReportDto { - public DailyReportHeadDto HeadDto { get; set; } - public DailyReportBhaDto BhaDto { get; set; } - public DailyReportDimensionlessDto DimensionlessDto { get; set; } - public DailyReportTimeBalanceDto TimeBalanceDto { get; set; } - public DailyReportSaubDto SaubDto { get; set; } - public DailyReportSignDto SignDto { get; set; } + public DailyReportHeadDto Head { get; set; } + public DailyReportBhaDto Bha { get; set; } + public DailyReportDimensionlessDto Dimensionless { get; set; } + public DailyReportTimeBalanceDto TimeBalance { get; set; } + public DailyReportSaubDto Saub { get; set; } + public DailyReportSignDto Sign { get; set; } } diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReport.cs b/AsbCloudDb/Model/DailyReportDB/DailyReport.cs index 0d43f1a9..7d985a03 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReport.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReport.cs @@ -5,7 +5,7 @@ using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model.DailyReportDB { #nullable disable - [Table("t_daily_report_mod"), Comment("Ежедневные отчёты")] + [Table("t_daily_report"), Comment("Ежедневные отчёты")] public class DailyReport { [Column("id_well"), Comment("ID скважины")] @@ -14,23 +14,8 @@ namespace AsbCloudDb.Model.DailyReportDB [Column("start_date", TypeName = "timestamp with time zone"), Comment("Дата отчёта")] public DateTimeOffset StartDate { get; set; } - [Column("blockHead", TypeName = "jsonb"), Comment("1 блок параметров для отчёта")] - public DailyReportHead BlockHead { get; set; } - - [Column("blockBha", TypeName = "jsonb"), Comment("2 блок параметров для отчёта")] - public DailyReportBha BlockBha { get; set; } - - [Column("blockTimeBalance", TypeName = "jsonb"), Comment("2 блок параметров для отчёта")] - public DailyReportTimeBalance BlockTimeBalance { get; set; } - - [Column("blockDimensionless", TypeName = "jsonb"), Comment("4 блок параметров для отчёта")] - public DailyReportDimensionless BlockDimensionless { get; set; } - - [Column("blockSaub", TypeName = "jsonb"), Comment("5 блок параметров для отчёта")] - public DailyReportSaub BlockSaub { get; set; } - - [Column("blockSign", TypeName = "jsonb"), Comment("6 блок параметров для отчёта")] - public DailyReportSign BlockSign { get; set; } + [Column("info", TypeName = "jsonb"), Comment("Список параметров для отчёта")] + public DailyReportInfo Info { get; set; } [ForeignKey(nameof(IdWell))] public virtual Well Well { get; set; } diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs index 40833d8d..7d288da9 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs @@ -7,12 +7,12 @@ namespace AsbCloudDb.Model #nullable disable public class DailyReportInfo { - public DailyReportHead HeadInfo { get; set; } - public DailyReportBha BhaDto { get; set; } - public DailyReportDimensionless DimensionlessInfo { get; set; } - public DailyReportTimeBalance TimeBalanceInfo { get; set; } - public DailyReportSaub SaubInfo { get; set; } - public DailyReportSign SignInfo { get; set; } + public DailyReportHead Head { get; set; } + public DailyReportBha Bha { get; set; } + public DailyReportDimensionless Dimensionless { get; set; } + public DailyReportTimeBalance TimeBalance { get; set; } + public DailyReportSaub Saub { get; set; } + public DailyReportSign Sign { get; set; } } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs index b52bcdab..65ef2307 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs @@ -55,14 +55,11 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks private string FormulaBhaBlock(CellAddress beginTime, CellAddress endTime) { - return string.Format("IF({0}>0,({1}-{2})*24, \"\")", endTime.ToString(), endTime.ToString(), beginTime.ToString()); - } - - + return string.Format("IF({0}>0,({0}-{1})*24, \"\")", endTime.ToString(), beginTime.ToString()); + } public override void Draw(IXLWorksheet sheet) { - sheet._Range(AddressBhaDescription, AddressBhaDescription + (0, 7)) ._SetValue($"{blockDto.BHADescription}"); sheet._Range(AddressOperationTitle, AddressOperationTitle + (0, 4)) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs index a53a7dbb..4c3b4cfc 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs @@ -8,7 +8,8 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { private readonly DailyReportDimensionlessDto blockDto; - private readonly SaubBlock saubBlock; + public SaubBlock SaubBlock { get; set; } + public CellAddress AddressDimensionTitle { get; } public CellAddress AddressPreparationTitle { get; } public CellAddress AddressExtensionTitle { get; } @@ -25,6 +26,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; + AddressDimensionTitle = addressBlockBegin + (2, 3); AddressPreparationTitle = addressBlockBegin + (3, 1); AddressExtensionTitle = addressBlockBegin + (3, 4); @@ -55,7 +57,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks private string FormulaBlockPlan(CellAddress cellTarget) { - return $"={cellTarget}/60*{saubBlock.ExtensionsCount}"; + return $"={cellTarget}/60*{SaubBlock.ExtensionsCountValue}"; } private string FormulaBlockExcess(CellAddress cellFact, CellAddress cellPlan) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs index 0f6d45db..7494db18 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs @@ -208,16 +208,19 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue("Проходка за секцию"); sheet._Range(SectionPenetrationTotalValue, SectionPenetrationTotalValue + (0, 3)) ._SetValue($"{blockDto.SectionPenetrationTotal}"); - sheet._Range(ExtensionsCount, ExtensionsCount + (0, 3)) - ._SetValue("Кол- во наращиваний"); - sheet._Range(ExtensionsCountValue, ExtensionsCountValue + (0, 3)) - ._SetValue($"{blockDto.ExtensionsCount}"); - sheet._Range(DeviationFromTVD, DeviationFromTVD + (0, 3)) - ._SetValue("Отклонение от ГГД +/-, сут"); - sheet._Range(DeviationFromTVDValue, DeviationFromTVDValue + (0, 3)) - ._SetValue($"{blockDto.DeviationFromTVD}"); - sheet._Range(DeclinesReasonsROP, DeclinesReasonsROP + (1, 7)) - ._SetValue($"Примечание: {blockDto.DeclinesReasonsROP}"); + + //var test = ExtensionsCount + (0, 3); + + //sheet._Range(ExtensionsCount, test) + // ._SetValue("Кол- во наращиваний"); + //sheet._Range(ExtensionsCountValue, ExtensionsCountValue + (0, 3)) + // ._SetValue($"{blockDto.ExtensionsCount}"); + //sheet._Range(DeviationFromTVD, DeviationFromTVD + (0, 3)) + // ._SetValue("Отклонение от ГГД +/-, сут"); + //sheet._Range(DeviationFromTVDValue, DeviationFromTVDValue + (0, 3)) + // ._SetValue($"{blockDto.DeviationFromTVD}"); + //sheet._Range(DeclinesReasonsROP, DeclinesReasonsROP + (1, 7)) + // ._SetValue($"Примечание: {blockDto.DeclinesReasonsROP}"); } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs index 729a3e08..b110abaa 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs @@ -27,13 +27,13 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public override void Draw(IXLWorksheet sheet) { - sheet.Range(AddressDrillMasterHead, AddressDrillMasterHead + (0, 2)) + sheet._Range(AddressDrillMasterHead, AddressDrillMasterHead + (0, 2)) ._SetValue("Мастер буровой "); - sheet.Range(AddressDrillMaster, AddressDrillMaster + (0, 2)) + sheet._Range(AddressDrillMaster, AddressDrillMaster + (0, 2)) ._SetValue($"{blockDto.DrillingMaster}"); - sheet.Range(AddressSupervisorHead, AddressSupervisorHead + (0, 2)) + sheet._Range(AddressSupervisorHead, AddressSupervisorHead + (0, 2)) ._SetValue("Супервайзер "); - sheet.Range(AddressSupervisor, AddressSupervisor + (0, 2)) + sheet._Range(AddressSupervisor, AddressSupervisor + (0, 2)) ._SetValue($"{blockDto.Supervisor}"); } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs index af81792b..76498934 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs @@ -51,7 +51,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; - AddressTitle = addressBlockBegin + (3, 0); + AddressTitle = addressBlockBegin + (1, 3); AddressDrilling = addressBlockBegin + (4, 1); AddressFlushing = addressBlockBegin + (5, 1); AddressBuilding = addressBlockBegin + (6, 1); diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs index 0655dfc4..8085b11b 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs @@ -18,24 +18,25 @@ namespace AsbCloudInfrastructure.Services.DailyReport private void FillExampleBlocks(XLWorkbook workbook, DailyReportDto dto) { - var sheet = workbook.Worksheets.Add(dto.HeadDto.ReportDate.ToString("dd.MM.yyyy")); + var sheet = workbook.Worksheets.Add(dto.Head.ReportDate.ToString("dd.MM.yyyy")); var addressStart = new CellAddress(sheet, 1, 1); - var blockHeader = new HeadBlock(addressStart, dto.HeadDto); + var blockHeader = new HeadBlock(addressStart, dto.Head); addressStart = blockHeader.AddressBlockEnd + (1, 0); addressStart.ColumnNumber = 1; - var blockBha = new BhaBlock(addressStart, dto.BhaDto); + var blockBha = new BhaBlock(addressStart, dto.Bha); addressStart = blockBha.AddressBlockEnd + (1, 0); addressStart.ColumnNumber = 1; - var timeBalance = new TimeBalanceBlock(addressStart, dto.TimeBalanceDto); + var timeBalance = new TimeBalanceBlock(addressStart, dto.TimeBalance); addressStart = timeBalance.AddressBlockEnd + (1, 0); addressStart.ColumnNumber = 1; - var blockDimensionless = new DimensionlessBlock(addressStart, dto.DimensionlessDto); + var blockDimensionless = new DimensionlessBlock(addressStart, dto.Dimensionless); addressStart = blockDimensionless.AddressBlockEnd + (1, 0); addressStart.ColumnNumber = 1; - var blockSaub = new SaubBlock(addressStart, dto.SaubDto); + var blockSaub = new SaubBlock(addressStart, dto.Saub); addressStart = blockSaub.AddressBlockEnd + (1, 0); + blockDimensionless.SaubBlock = blockSaub; addressStart.ColumnNumber = 1; - var blockSign = new SignBlock(addressStart, dto.SignDto); + var blockSign = new SignBlock(addressStart, dto.Sign); addressStart = blockSign.AddressBlockEnd + (1, 0); addressStart.ColumnNumber = 1; blockHeader.Draw(sheet); diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs index 0dbb4636..c61c22b9 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs @@ -9,7 +9,6 @@ using AsbCloudApp.Data; using AsbCloudApp.Services; using AsbCloudDb.Model; using System.Collections.Generic; -using AsbCloudDb.Model.DailyReportDB; using AsbCloudApp.Data.DailyReport; namespace AsbCloudInfrastructure.Services.DailyReport @@ -62,19 +61,13 @@ namespace AsbCloudInfrastructure.Services.DailyReport public async Task AddAsync(int idWell, DailyReportDto dto, CancellationToken token = default) { var offsetHours = wellService.GetTimezone(idWell).Hours; - var reportDateOffset = dto.HeadDto.ReportDate.ToUtcDateTimeOffset(offsetHours); + var reportDateOffset = dto.Head.ReportDate.ToUtcDateTimeOffset(offsetHours); var info = Convert(dto, offsetHours); var entity = new AsbCloudDb.Model.DailyReportDB.DailyReport { IdWell = idWell, StartDate = reportDateOffset, - BlockHead = info.HeadInfo, - BlockBha = info.BhaDto, - BlockDimensionless = info.DimensionlessInfo, - BlockTimeBalance = info.TimeBalanceInfo, - BlockSaub = info.SaubInfo, - BlockSign = info.SignInfo - + Info = info }; db.DailyReports.Add(entity); var result = await db.SaveChangesAsync(token); @@ -94,10 +87,8 @@ namespace AsbCloudInfrastructure.Services.DailyReport if (entity is null) return 0; - var convertEntity = Convert(dto, offsetHours); - entity.BlockHead = convertEntity.HeadInfo; + entity.Info = Convert(dto, offsetHours); db.DailyReports.Update(entity); - var result = await db.SaveChangesAsync(token); return result; } @@ -134,33 +125,32 @@ namespace AsbCloudInfrastructure.Services.DailyReport { var well = await wellService.GetAsync(idWell, token); var offsetHours = wellService.GetTimezone(idWell).Hours; - var headDto = new DailyReportHeadDto() - { - ReportDate = date, - WellName = well.Caption, - ClusterName = well.Cluster, - }; var dto = new DailyReportDto() { - HeadDto = headDto + Head=new DailyReportHeadDto() + { + ReportDate = DateTimeOffset.UtcNow.ToRemoteDateTime(offsetHours), + WellName = well.Caption, + ClusterName = well.Cluster + } }; - DailyReportDto result = dto; - return result; + + return dto; } private static DailyReportDto Convert(AsbCloudDb.Model.DailyReportDB.DailyReport entity, double offsetHours) { var dto = new DailyReportDto() - { - BhaDto = entity.BlockBha.Adapt(), - HeadDto = entity.BlockHead.Adapt(), - TimeBalanceDto = entity.BlockTimeBalance.Adapt(), - DimensionlessDto = entity.BlockDimensionless.Adapt(), - SaubDto = entity.BlockSaub.Adapt(), - SignDto = entity.BlockSign.Adapt() + { + Bha = entity.Info.Bha.Adapt(), + Head = entity.Info.Head.Adapt(), + TimeBalance = entity.Info.TimeBalance.Adapt(), + Dimensionless = entity.Info.Dimensionless.Adapt(), + Saub = entity.Info.Saub.Adapt(), + Sign = entity.Info.Sign.Adapt() }; - dto.HeadDto.ReportDate = entity.StartDate + dto.Head.ReportDate = entity.StartDate .ToRemoteDateTime(offsetHours); return dto; } @@ -168,7 +158,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport private static DailyReportInfo Convert(DailyReportDto dto, double offsetHours) { var entity = dto.Adapt(); - entity.HeadInfo.ReportDate = dto.HeadDto.ReportDate + entity.Head.ReportDate = dto.Head.ReportDate .ToUtcDateTimeOffset(offsetHours) .Date; return entity; diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs index 14b28e95..e70f4f76 100644 --- a/ConsoleApp1/Program.cs +++ b/ConsoleApp1/Program.cs @@ -35,8 +35,8 @@ namespace ConsoleApp1 var block3 = new DailyReportSaubDto(); var bloks = new DailyReportDto() { - HeadDto = block, - SaubDto = block3 + Head = block, + Saub = block3 }; From 3518ad76ffc66cf18cf0fde95811fd74c0617236 Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Tue, 5 Jul 2022 11:49:01 +0500 Subject: [PATCH 14/34] =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B5=D0=B9=20=D0=B1=D0=BB=D0=BE=D0=BA=D0=BE?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Model/DailyReportDB/DailyReportBha.cs | 54 ++++++++++++++++++- .../DailyReportDB/DailyReportDimensionless.cs | 3 +- .../Model/DailyReportDB/DailyReportInfo.cs | 4 +- .../Model/DailyReportDB/DailyReportSaub.cs | 28 +++++++++- .../Model/DailyReportDB/DailyReportSign.cs | 3 +- .../DailyReportDB/DailyReportTimeBalance.cs | 3 +- 6 files changed, 82 insertions(+), 13 deletions(-) diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs index 8adc9512..14c53798 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs @@ -1,5 +1,4 @@ -using System; -namespace AsbCloudDb.Model.DailyReportDB +namespace AsbCloudDb.Model.DailyReportDB { public class DailyReportBha { @@ -7,6 +6,57 @@ namespace AsbCloudDb.Model.DailyReportDB /// КНБК описание /// public string BHADescription { get; set; } + + /// + /// Бурение с наращиваниями в инт. 2195-2763м. Время начала + /// + public string ExtensionDrillingOneBegin { get; set; } + + /// + /// Бурение с наращиваниями в инт. 2195-2763м. Время окончания + /// + public string ExtensionDrillingOneFinish { get; set; } + + /// + /// Промывка. Время начала + /// + public string SluiceBegin { get; set; } + + /// + /// Промывка. Время окончания + /// + public string SluiceFinish { get; set; } + + /// + /// Подьем КНБК. Время начала + /// + public string ClimbBegin { get; set; } + + /// + /// Подьем КНБК. Время окончания + /// + public string ClimbFinish { get; set; } + + /// + /// Спуск КНБК. Время начала + /// + public string DescentBegin { get; set; } + + /// + /// Спуск КНБК. Время окончания + /// + public string DescentFinish { get; set; } + + /// + /// Бурение с наращиваниями в инт. 2763-2850м. Время начала + /// + public string ExtensionDrillingTwoBegin { get; set; } + + /// + /// Бурение с наращиваниями в инт. 2763-2850м. Время окончания + /// + public string ExtensionDrillingTwoFinish { get; set; } + } } diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs index 42b84e62..79cc5ffd 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs @@ -1,5 +1,4 @@ -using System; -namespace AsbCloudDb.Model.DailyReportDB +namespace AsbCloudDb.Model.DailyReportDB { public class DailyReportDimensionless { diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs index 7d288da9..c0ae5b22 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using AsbCloudDb.Model.DailyReportDB; +using AsbCloudDb.Model.DailyReportDB; namespace AsbCloudDb.Model { diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs index 77ea88f0..b0c13528 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; namespace AsbCloudDb.Model.DailyReportDB { @@ -75,6 +74,31 @@ namespace AsbCloudDb.Model.DailyReportDB /// public string DeclinesReasonsROP { get; set; } + /// + /// Увеличение мех скорости за секцию % + /// + public string IncreaseSpeedSection { get; set; } + + /// + /// Увеличение мех скорости за сутки % + /// + public string IncreaseSpeedDay { get; set; } + + /// + /// Сокращение времени бурения за секцию, ч + /// + public string ReductionTimeDrilling { get; set; } + + /// + /// Ротор/Слайд % + /// + public string RotorSlidePercent { get; set; } + + /// + /// МСП + /// + public string MspSection { get; set; } + } } diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs index 99373e2f..96427e1f 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs @@ -1,5 +1,4 @@ -using System; -namespace AsbCloudDb.Model.DailyReportDB +namespace AsbCloudDb.Model.DailyReportDB { public class DailyReportSign { diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs index 21b7a7ee..f80b7d91 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs @@ -1,5 +1,4 @@ -using System; -namespace AsbCloudDb.Model.DailyReportDB +namespace AsbCloudDb.Model.DailyReportDB { public class DailyReportTimeBalance { From eca35ee4915d80646adacbf828274b2b4a9e80ae Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Tue, 5 Jul 2022 12:05:04 +0500 Subject: [PATCH 15/34] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=81=D1=82=D0=B8=D0=BB=D0=B8=20=D1=8F?= =?UTF-8?q?=D1=87=D0=B5=D0=B5=D0=BA=20=D1=81=20=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D1=83=D0=BB=D0=BE=D0=B9=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B0=D0=B8=D0=BC=D0=B5=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=8F=D1=87=D0=B5=D0=B9=D0=BA?= =?UTF-8?q?=D0=B8=20ExtensionsCount=20=D0=B2=20=D0=B1=D0=BB=D0=BE=D0=BA?= =?UTF-8?q?=D0=B5=20SAUB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DailyReport/DailyReportBlocks/BhaBlock.cs | 10 +++++----- .../DailyReportBlocks/DimensionlessBlock.cs | 10 +++++----- .../DailyReport/DailyReportBlocks/SaubBlock.cs | 16 ++++++++-------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs index 65ef2307..66d5b018 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs @@ -75,7 +75,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet.Cell(AddressDurationDataFinish[0]) ._SetValue($"{blockDto.ExtensionDrillingOneFinish}"); sheet.Cell(AddressTotaData[0]) - .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[0], AddressDurationDataFinish[0])}"); + .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[0], AddressDurationDataFinish[0])}").Style.SetAllBorders(); sheet._Range(AddressOperationData[1], AddressOperationData[1] + (0, 4)) ._SetValue("Промывка."); sheet.Cell(AddressDurationDataStart[1]) @@ -83,7 +83,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet.Cell(AddressDurationDataFinish[1]) ._SetValue($"{blockDto.SluiceBegin}"); sheet.Cell(AddressTotaData[1]) - .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[1], AddressDurationDataFinish[1])}"); + .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[1], AddressDurationDataFinish[1])}").Style.SetAllBorders(); sheet._Range(AddressOperationData[2], AddressOperationData[2] + (0, 4)) ._SetValue("Подъем КНБК в инт. 2763-2442м."); sheet.Cell(AddressDurationDataStart[2]) @@ -91,7 +91,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet.Cell(AddressDurationDataFinish[2]) ._SetValue($"{blockDto.ClimbFinish}"); sheet.Cell(AddressTotaData[2]) - .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[2], AddressDurationDataFinish[2])}"); + .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[2], AddressDurationDataFinish[2])}").Style.SetAllBorders(); sheet._Range(AddressOperationData[3], AddressOperationData[3] + (0, 4)) ._SetValue("Спуск КНБК в инт. 2442-2763м."); sheet.Cell(AddressDurationDataStart[3]) @@ -99,7 +99,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet.Cell(AddressDurationDataFinish[3]) ._SetValue($"{blockDto.DescentFinish}"); sheet.Cell(AddressTotaData[3]) - .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[3], AddressDurationDataFinish[3])}"); + .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[3], AddressDurationDataFinish[3])}").Style.SetAllBorders(); sheet._Range(AddressOperationData[4], AddressOperationData[4] + (0, 4)) ._SetValue("Бурение с наращиваниями в инт. 2763-2850м."); sheet.Cell(AddressDurationDataStart[4]) @@ -107,7 +107,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet.Cell(AddressDurationDataFinish[4]) ._SetValue($"{blockDto.ExtensionDrillingTwoFinish}"); sheet.Cell(AddressTotaData[4]) - .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[4], AddressDurationDataFinish[4])}"); + .SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[4], AddressDurationDataFinish[4])}").Style.SetAllBorders(); } } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs index 4c3b4cfc..e1c5a7bb 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs @@ -57,7 +57,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks private string FormulaBlockPlan(CellAddress cellTarget) { - return $"={cellTarget}/60*{SaubBlock.ExtensionsCountValue}"; + return $"={cellTarget}/60*{SaubBlock.AddressExtensionsCountValue}"; } private string FormulaBlockExcess(CellAddress cellFact, CellAddress cellPlan) @@ -81,7 +81,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet._Range(AddressPreparationHead[1], AddressPreparationHead[1] + (0, 1)) ._SetValue("Проработка при бур, план (ч):"); sheet.Cell(AddressPreparationValue[1]) - .SetFormulaA1($"{FormulaBlockPlan(AddressPreparationValue[0])}"); + .SetFormulaA1($"{FormulaBlockPlan(AddressPreparationValue[0])}").Style.SetAllBorders(); sheet._Range(AddressPreparationHead[2], AddressPreparationHead[2] + (0, 1)) ._SetValue("Проработка при бур, факт (ч):"); sheet.Cell(AddressPreparationValue[2]) @@ -89,7 +89,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet._Range(AddressPreparationHead[3], AddressPreparationHead[3] + (0, 1)) ._SetValue("Превышение плановых норм, (ч):"); sheet.Cell(AddressPreparationValue[3]) - .SetFormulaA1($"{FormulaBlockExcess(AddressPreparationValue[2], AddressPreparationValue[1])}"); + .SetFormulaA1($"{FormulaBlockExcess(AddressPreparationValue[2], AddressPreparationValue[1])}").Style.SetAllBorders(); sheet._Range(AddressExtensionHead[0], AddressExtensionHead[0] + (0, 1)) ._SetValue("Норматив на одну операцию, (мин):"); sheet.Cell(AddressExtensionValue[0]) @@ -97,7 +97,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet._Range(AddressExtensionHead[1], AddressExtensionHead[1] + (0, 1)) ._SetValue("Наращивание, план (ч):"); sheet.Cell(AddressExtensionValue[1]) - .SetFormulaA1($"{FormulaBlockPlan(AddressExtensionValue[0])}"); + .SetFormulaA1($"{FormulaBlockPlan(AddressExtensionValue[0])}").Style.SetAllBorders(); sheet._Range(AddressExtensionHead[2], AddressExtensionHead[2] + (0, 1)) ._SetValue("Наращивание, факт (ч):"); sheet.Cell(AddressExtensionValue[2]) @@ -105,7 +105,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet._Range(AddressExtensionHead[3], AddressExtensionHead[3] + (0, 1)) ._SetValue("Превышение плановых норм, (ч):"); sheet.Cell(AddressExtensionValue[3]) - .SetFormulaA1($"{FormulaBlockExcess(AddressExtensionValue[2], AddressExtensionValue[1])}"); + .SetFormulaA1($"{FormulaBlockExcess(AddressExtensionValue[2], AddressExtensionValue[1])}").Style.SetAllBorders(); sheet._Range(AddressPreparationDescription, AddressPreparationDescription + (1, 2)) ._SetValue("Подготовка ствола скв. к наращиванию"); sheet._Range(AddressExtensionDescription, AddressExtensionDescription + (1, 2)) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs index 7494db18..f32f9435 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs @@ -26,7 +26,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public CellAddress MspSection { get; } public CellAddress SectionDrillingTimeTotal { get; } public CellAddress SectionPenetrationTotal { get; } - public CellAddress ExtensionsCount { get; } + public CellAddress AddressExtensionsCount { get; } public CellAddress DeviationFromTVD { get; } public CellAddress DeclinesReasonsROP { get; } public CellAddress IncreaseSpeedSectionValue { get; } @@ -36,7 +36,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public CellAddress MspSectionValue { get; } public CellAddress SectionDrillingTimeTotalValue { get; } public CellAddress SectionPenetrationTotalValue { get; } - public CellAddress ExtensionsCountValue { get; } + public CellAddress AddressExtensionsCountValue { get; } public CellAddress DeviationFromTVDValue { get; } public override CellAddress AddressBlockBegin { get; } public override CellAddress AddressBlockEnd { get; } @@ -94,8 +94,8 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks SectionDrillingTimeTotalValue = addressBlockBegin + (21, 4); SectionPenetrationTotal = addressBlockBegin + (22, 0); SectionPenetrationTotalValue = addressBlockBegin + (22, 4); - ExtensionsCount = addressBlockBegin + (23, 0); - ExtensionsCountValue = addressBlockBegin + (23, 4); + AddressExtensionsCount = addressBlockBegin + (23, 0); + AddressExtensionsCountValue = addressBlockBegin + (23, 4); DeviationFromTVD = addressBlockBegin + (24, 0); DeviationFromTVDValue = addressBlockBegin + (24, 4); DeclinesReasonsROP = addressBlockBegin + (25, 0); @@ -136,7 +136,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.NumberDrillingHours}"); sheet._Range(AddressDrillingTableData[2], AddressDrillingTableData[2] + (0, 1)); sheet.Cell(AddressDrillingTableData[2]) - .SetFormulaA1(FormulaMechanicalSpeed(AddressDrillingTableData[0], AddressDrillingTableData[1])); + .SetFormulaA1(FormulaMechanicalSpeed(AddressDrillingTableData[0], AddressDrillingTableData[1])).Style.SetAllBorders(); sheet._Range(AddressDrillingTableData[3], AddressDrillingTableData[3] + (0, 1)) ._SetValue($"{blockDto.AVGDiffDropRotor}"); sheet._Range(AddressSlideTableTitle, AddressSlideTableTitle + (0, 7)) @@ -155,7 +155,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.DrillingTimeInRotor}"); sheet._Range(AddressSlideTableData[2], AddressSlideTableData[2] + (0, 1)); sheet.Cell(AddressSlideTableData[2]) - .SetFormulaA1(FormulaMechanicalSpeed(AddressSlideTableData[0], AddressSlideTableData[1])); + .SetFormulaA1(FormulaMechanicalSpeed(AddressSlideTableData[0], AddressSlideTableData[1])).Style.SetAllBorders(); sheet._Range(AddressSlideTableData[3], AddressSlideTableData[3] + (0, 1)) ._SetValue($"{blockDto.AVGDiffPressureSlide}"); sheet._Range(AddressTotalTableTitle, AddressTotalTableTitle + (0, 5)) @@ -172,10 +172,10 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks AddressDrillingTableData[1].ToString(), AddressSlideTableData[1].ToString()); sheet._Range(AddressTotalTableData[0], AddressTotalTableData[0] + (0, 1)); sheet.Cell(AddressTotalTableData[0]) - .SetFormulaA1(formulaWatch); + .SetFormulaA1(formulaWatch).Style.SetAllBorders(); sheet._Range(AddressTotalTableData[1], AddressTotalTableData[1] + (0, 1)); sheet.Cell(AddressTotalTableData[1]) - .SetFormulaA1(formulaWatch); + .SetFormulaA1(formulaWatch).Style.SetAllBorders(); sheet._Range(AddressTotalTableData[2], AddressTotalTableData[2] + (0, 1)) ._SetValue(""); sheet._Range(AddressTotalTableData[3], AddressTotalTableData[3] + (0, 1)) From 4bf4a93b6b8e51cf760f1af02ae45f6aef8c7566 Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Tue, 5 Jul 2022 13:57:09 +0500 Subject: [PATCH 16/34] =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B5=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B0=D0=B4=D1=80=D0=B5=D1=81=D0=B0?= =?UTF-8?q?=20=D1=8F=D1=87=D0=B5=D0=B9=D0=BA=D0=B8=20=D0=B8=D0=B7=20=D1=87?= =?UTF-8?q?=D0=B8=D1=81=D0=BB=D0=BE/=D1=87=D0=B8=D1=81=D0=BB=D0=BE=20?= =?UTF-8?q?=D0=B2=20=D0=B1=D1=83=D0=BA=D0=B2=D0=B0/=D1=87=D0=B8=D1=81?= =?UTF-8?q?=D0=BB=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/DailyReport/CellAddress.cs | 8 +++---- .../DailyReportBlocks/SaubBlock.cs | 22 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs b/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs index d6fb6bb9..cff2f920 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs @@ -46,12 +46,12 @@ namespace AsbCloudInfrastructure.Services.DailyReport private string CalcColumnLetter() { string letter = ""; - - while (ColumnNumber > 0) + var columnNumber = ColumnNumber; + while (columnNumber > 0) { - int modulo = (ColumnNumber - 1) % excelLettersCount; + int modulo = (columnNumber - 1) % excelLettersCount; letter = Convert.ToChar('A' + modulo) + letter; - ColumnNumber = (ColumnNumber - modulo) / excelLettersCount; + columnNumber = (columnNumber - modulo) / excelLettersCount; } return letter; diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs index f32f9435..db0b892e 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs @@ -209,18 +209,18 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet._Range(SectionPenetrationTotalValue, SectionPenetrationTotalValue + (0, 3)) ._SetValue($"{blockDto.SectionPenetrationTotal}"); - //var test = ExtensionsCount + (0, 3); + CellAddress test = AddressExtensionsCount + (0, 3); - //sheet._Range(ExtensionsCount, test) - // ._SetValue("Кол- во наращиваний"); - //sheet._Range(ExtensionsCountValue, ExtensionsCountValue + (0, 3)) - // ._SetValue($"{blockDto.ExtensionsCount}"); - //sheet._Range(DeviationFromTVD, DeviationFromTVD + (0, 3)) - // ._SetValue("Отклонение от ГГД +/-, сут"); - //sheet._Range(DeviationFromTVDValue, DeviationFromTVDValue + (0, 3)) - // ._SetValue($"{blockDto.DeviationFromTVD}"); - //sheet._Range(DeclinesReasonsROP, DeclinesReasonsROP + (1, 7)) - // ._SetValue($"Примечание: {blockDto.DeclinesReasonsROP}"); + sheet._Range(AddressExtensionsCount, test) + ._SetValue("Кол- во наращиваний"); + sheet._Range(AddressExtensionsCountValue, AddressExtensionsCountValue + (0, 3)) + ._SetValue($"{blockDto.ExtensionsCount}"); + sheet._Range(DeviationFromTVD, DeviationFromTVD + (0, 3)) + ._SetValue("Отклонение от ГГД +/-, сут"); + sheet._Range(DeviationFromTVDValue, DeviationFromTVDValue + (0, 3)) + ._SetValue($"{blockDto.DeviationFromTVD}"); + sheet._Range(DeclinesReasonsROP, DeclinesReasonsROP + (1, 7)) + ._SetValue($"Примечание: {blockDto.DeclinesReasonsROP}"); } } From 73f804d3d65ec345e92e308fbcdca94d1b423088 Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Tue, 5 Jul 2022 14:27:23 +0500 Subject: [PATCH 17/34] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B8=D0=B3=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20-=20=D0=BE=D1=87=D0=B8=D1=81=D1=82=D0=BA=D0=B0?= =?UTF-8?q?=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=8B=20t=5Fdaily=5Frep?= =?UTF-8?q?ort?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5090646_Remove_DailyReportData.Designer.cs | 6072 +++++++++++++++++ .../20220705090646_Remove_DailyReportData.cs | 19 + .../AsbCloudDbContextModelSnapshot.cs | 4 +- 3 files changed, 6093 insertions(+), 2 deletions(-) create mode 100644 AsbCloudDb/Migrations/20220705090646_Remove_DailyReportData.Designer.cs create mode 100644 AsbCloudDb/Migrations/20220705090646_Remove_DailyReportData.cs diff --git a/AsbCloudDb/Migrations/20220705090646_Remove_DailyReportData.Designer.cs b/AsbCloudDb/Migrations/20220705090646_Remove_DailyReportData.Designer.cs new file mode 100644 index 00000000..6b8c5f01 --- /dev/null +++ b/AsbCloudDb/Migrations/20220705090646_Remove_DailyReportData.Designer.cs @@ -0,0 +1,6072 @@ +// +using System; +using System.Collections.Generic; +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("20220705090646_Remove_DailyReportData")] + partial class Remove_DailyReportData + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "6.0.1") + .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") + .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") + .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") + .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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недрапользователь" + }, + new + { + Id = 2, + Caption = "Буровой подрядчик" + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReportDB.DailyReport", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date") + .HasComment("Дата отчёта"); + + b.Property("Info") + .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") + .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") + .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("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.DrillFlowChart", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellOperationCategory") + .HasColumnType("integer") + .HasColumnName("id_operation_category") + .HasComment("Id типа операции"); + + b.Property("LastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_update") + .HasComment("Дата последнего изменения"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellOperationCategory"); + + b.ToTable("t_drill_flow_chart"); + + 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.DrillParams", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadAvg") + .HasColumnType("double precision") + .HasColumnName("axial_load_avg") + .HasComment("Средняя нагрузка"); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowAvg") + .HasColumnType("double precision") + .HasColumnName("flow_avg") + .HasComment("Средний расход"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Id с типом секции скважины"); + + b.Property("PressureAvg") + .HasColumnType("double precision") + .HasColumnName("pressure_avg") + .HasComment("Среднее давление"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_avg") + .HasComment("Средние обороты на ВСП"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_avg") + .HasComment("Средний момент на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_drill_params"); + + b.HasComment("Режим бурения в секции (диапазоны параметров бурения)"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .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 = "Программы цементирования обсадных колонн" + }); + }); + + 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") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("PublishInfo") + .HasColumnType("jsonb") + .HasColumnName("publish_info") + .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.Measure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .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") + .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.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") + .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 = 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" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("IdCompany", "IdWell"); + + b.HasIndex("IdWell"); + + b.ToTable("t_relation_company_well"); + + b.HasComment("отношение скважин и компаний"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part"); + + b.HasComment("Отношение пользователей и частей ПБ"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission"); + + b.HasComment("Отношение ролей пользователей и разрешений доступа"); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role"); + + b.HasComment("Отношение ролей к ролям"); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role"); + + b.HasComment("Отношение пользователей и ролей"); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property"); + + b.HasComment("Отчеты с данными по буровым"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule"); + + b.HasComment("График работы бурильщика"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property>("Setpoints") + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest"); + + b.HasComment("Запросы на изменение уставок панели оператора"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry"); + + b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub"); + + b.HasComment("набор основных данных по SAUB"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToView("mw_telemetry_datas_saub_stat"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("BreakAngleK") + .HasColumnType("real") + .HasColumnName("break_angle_k") + .HasComment("Коэффициент для расчёта за какой угол нужно тормозить"); + + b.Property("BreakAngleLeft") + .HasColumnType("real") + .HasColumnName("break_angle_left") + .HasComment("Угол торможения влево при работе по моменту"); + + b.Property("EncoderResolution") + .HasColumnType("real") + .HasColumnName("encoder_resolution") + .HasComment("Разрешение энкодера"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PidMuxTorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("pid_mux_torque_left_limit") + .HasComment(" Момент при котором определяется ехать назад по моменту или по скорости"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("Ratio") + .HasColumnType("real") + .HasColumnName("ratio") + .HasComment(" Коэффициент редукции редуктора"); + + b.Property("ReverseKTorque") + .HasColumnType("real") + .HasColumnName("reverse_k_torque") + .HasComment("Коэффициент на который умножается момент, для того чтобы система поняла что мы движемся в обратную сторону"); + + b.Property("ReverseSpeedSpZeroTime") + .HasColumnType("smallint") + .HasColumnName("reverse_speed_sp_zero_time") + .HasComment("Время выдачи сигнала нулевой скорости на при смене направления"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("RotorTorqueAvg") + .HasColumnType("real") + .HasColumnName("rotor_torque_avg") + .HasComment("Момент в роторе средний"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.Property("TopDriveSpeed") + .HasColumnType("real") + .HasColumnName("top_drive_speed") + .HasComment("Скорость СВП"); + + b.Property("TopDriveSpeedErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_err"); + + b.Property("TopDriveSpeedMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_max") + .HasComment("верхний предел"); + + b.Property("TopDriveSpeedMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_min") + .HasComment("нижний предел"); + + b.Property("TopDriveSpeedOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_offset") + .HasComment("смещение"); + + b.Property("TopDriveSpeedSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from") + .HasComment("Заданная скорость c СВП"); + + b.Property("TopDriveSpeedSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_from_err"); + + b.Property("TopDriveSpeedSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_max"); + + b.Property("TopDriveSpeedSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_min"); + + b.Property("TopDriveSpeedSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_offset"); + + b.Property("TopDriveSpeedSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to") + .HasComment("Задание скорости на СВП"); + + b.Property("TopDriveSpeedSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_to_err"); + + b.Property("TopDriveSpeedSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_max"); + + b.Property("TopDriveSpeedSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_min"); + + b.Property("TopDriveSpeedSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_offset"); + + b.Property("TopDriveTorque") + .HasColumnType("real") + .HasColumnName("top_drive_torque") + .HasComment("Момент СВП"); + + b.Property("TopDriveTorqueErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_err"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_max"); + + b.Property("TopDriveTorqueMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_min"); + + b.Property("TopDriveTorqueOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_offset"); + + b.Property("TopDriveTorqueSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from") + .HasComment("Заданный момент c СВП"); + + b.Property("TopDriveTorqueSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_from_err"); + + b.Property("TopDriveTorqueSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_max"); + + b.Property("TopDriveTorqueSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_min"); + + b.Property("TopDriveTorqueSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_offset"); + + b.Property("TopDriveTorqueSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to") + .HasComment("Задание момента на СВП"); + + b.Property("TopDriveTorqueSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_to_err"); + + b.Property("TopDriveTorqueSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_max"); + + b.Property("TopDriveTorqueSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_min"); + + b.Property("TopDriveTorqueSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_offset"); + + b.Property("TorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("torque_left_limit") + .HasComment("Ограничение крутящего момента влево"); + + b.Property("TorqueRampTime") + .HasColumnType("real") + .HasColumnName("torque_ramp_time") + .HasComment("Время нарастания момента"); + + b.Property("TorqueRightLimit") + .HasColumnType("real") + .HasColumnName("torque_right_limit") + .HasComment("Ограничение крутящего момента вправо"); + + b.Property("TorqueStarting") + .HasColumnType("real") + .HasColumnName("torque_starting") + .HasComment("Страгивающий момент"); + + b.Property("TurnLeftOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_angle") + .HasComment("Доворот по градусам единожды влево"); + + b.Property("TurnLeftOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_revols") + .HasComment("Доворот по оборотам единожды влево"); + + b.Property("TurnLeftOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_torque") + .HasComment("Доворот по моменту единожды влево"); + + b.Property("TurnRightOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_angle") + .HasComment("Доворот по градусам единожды вправо"); + + b.Property("TurnRightOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_revols") + .HasComment("Доворот по оборотам единожды вправо"); + + b.Property("TurnRightOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_torque") + .HasComment("Доворот по моменту единожды вправо"); + + b.Property("UnlockBySectorOut") + .HasColumnType("real") + .HasColumnName("unlock_by_sector_out") + .HasComment(" Градус отклонения от сектора для автоматического сброса блокировки"); + + b.Property("Ver") + .HasColumnType("real") + .HasColumnName("ver") + .HasComment("Версия ПО ПЛК"); + + b.Property("W2800") + .HasColumnType("smallint") + .HasColumnName("w2800") + .HasComment("Установка нуля энкодера"); + + b.Property("W2808") + .HasColumnType("smallint") + .HasColumnName("w2808") + .HasComment("Неисправность энкодера"); + + b.Property("W2810") + .HasColumnType("smallint") + .HasColumnName("w2810") + .HasComment(" автоматический сброс блокировки"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin"); + + b.HasComment("набор основных данных по SpinMaster"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event"); + + b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message"); + + b.HasComment("Сообщения на буровых"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user"); + + b.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n100 - удален"); + + b.Property("Login") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user"); + + b.HasComment("Пользователи облака"); + + b.HasData( + new + { + Id = 1, + IdCompany = 1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role"); + + b.HasComment("Роли пользователей в системе"); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well"); + + b.HasComment("скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite"); + + b.HasComment("Композитная скважина"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation"); + + b.HasComment("Данные по операциям на скважине"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("integer") + .HasColumnName("code") + .HasComment("Код операции"); + + b.Property("Name") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.ToTable("t_well_operation_category"); + + b.HasComment("Справочник операций на скважине"); + + b.HasData( + new + { + Id = 1, + Code = 0, + Name = "Невозможно определить операцию" + }, + new + { + Id = 2, + Code = 0, + Name = "Роторное бурение" + }, + new + { + Id = 3, + Code = 0, + Name = "Слайдирование" + }, + new + { + Id = 4, + Code = 0, + Name = "Подъем с проработкой" + }, + new + { + Id = 5, + Code = 0, + Name = "Спуск с проработкой" + }, + new + { + Id = 6, + Code = 0, + Name = "Подъем с промывкой" + }, + new + { + Id = 7, + Code = 0, + Name = "Спуск с промывкой" + }, + new + { + Id = 8, + Code = 0, + Name = "Спуск в скважину" + }, + new + { + Id = 9, + Code = 0, + Name = "Спуск с вращением" + }, + new + { + Id = 10, + Code = 0, + Name = "Подъем из скважины" + }, + new + { + Id = 11, + Code = 0, + Name = "Подъем с вращением" + }, + new + { + Id = 12, + Code = 0, + Name = "Промывка в покое" + }, + new + { + Id = 13, + Code = 0, + Name = "Промывка с вращением" + }, + new + { + Id = 14, + Code = 0, + Name = "Удержание в клиньях" + }, + new + { + Id = 15, + Code = 0, + Name = "Неподвижное состояние" + }, + new + { + Id = 16, + Code = 0, + Name = "Вращение без циркуляции" + }, + new + { + Id = 17, + Code = 0, + Name = "На поверхности" + }, + new + { + Id = 1001, + Code = 0, + Name = "Бурение" + }, + new + { + Id = 1002, + Code = 0, + Name = "ГИС" + }, + new + { + Id = 1003, + Code = 0, + Name = "ГФР" + }, + new + { + Id = 1004, + Code = 0, + Name = "Монтаж ПВО" + }, + new + { + Id = 1005, + Code = 0, + Name = "Демонтаж ПВО" + }, + new + { + Id = 1006, + Code = 0, + Name = "Установка ФА" + }, + new + { + Id = 1007, + Code = 0, + Name = "Оборудование устья" + }, + new + { + Id = 1008, + Code = 0, + Name = "ОЗЦ" + }, + new + { + Id = 1011, + Code = 0, + Name = "Начало цикла строительства скважины" + }, + new + { + Id = 1012, + Code = 0, + Name = "Окончание цикла строительства скважины" + }, + new + { + Id = 1013, + Code = 0, + Name = "Опрессовка ПВО" + }, + new + { + Id = 1014, + Code = 0, + Name = "Опрессовка Ц.К." + }, + new + { + Id = 1015, + Code = 0, + Name = "Опрессовка ВЗД" + }, + new + { + Id = 1016, + Code = 0, + Name = "Перевод скв на другой тип промывочной жидкости" + }, + new + { + Id = 1017, + Code = 0, + Name = "Перезапись каротажа" + }, + new + { + Id = 1018, + Code = 0, + Name = "Перетяжка талевого каната" + }, + new + { + Id = 1019, + Code = 0, + Name = "Наращивание, промывка" + }, + new + { + Id = 1020, + Code = 0, + Name = "Подъем инструмента" + }, + new + { + Id = 1021, + Code = 0, + Name = "Подъем инструмента с промывкой" + }, + new + { + Id = 1022, + Code = 0, + Name = "Обратная проработка" + }, + new + { + Id = 1023, + Code = 0, + Name = "Сборка инструмента с мостков" + }, + new + { + Id = 1024, + Code = 0, + Name = "Подготовительные работы" + }, + new + { + Id = 1025, + Code = 0, + Name = "Сборка КНБК" + }, + new + { + Id = 1026, + Code = 0, + Name = "Разборка КНБК" + }, + new + { + Id = 1027, + Code = 0, + Name = "Промывка" + }, + new + { + Id = 1028, + Code = 0, + Name = "Промежуточная промывка" + }, + new + { + Id = 1029, + Code = 0, + Name = "Прокачка пачек" + }, + new + { + Id = 1030, + Code = 0, + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 1031, + Code = 0, + Name = "Ремонт" + }, + new + { + Id = 1032, + Code = 0, + Name = "Спуск инструмента" + }, + new + { + Id = 1033, + Code = 0, + Name = "Спуск инструмента с промывкой" + }, + new + { + Id = 1034, + Code = 0, + Name = "Прямая проработка" + }, + new + { + Id = 1035, + Code = 0, + Name = "Принудительная проработка" + }, + new + { + Id = 1037, + Code = 0, + Name = "Тех СПО-подъем" + }, + new + { + Id = 1038, + Code = 0, + Name = "Тех СПО-спуск" + }, + new + { + Id = 1039, + Code = 0, + Name = "Техническое обслуживание" + }, + new + { + Id = 1040, + Code = 0, + Name = "Цементаж" + }, + new + { + Id = 1041, + Code = 0, + Name = "Шаблонировка ствола" + }, + new + { + Id = 1042, + Code = 0, + Name = "Геологическое осложнение" + }, + new + { + Id = 1043, + Code = 0, + Name = "НПВ" + }, + new + { + Id = 1044, + Code = 0, + Name = "ВМР" + }, + new + { + Id = 1045, + Code = 0, + Name = "Прочее" + }, + new + { + Id = 1046, + Code = 0, + Name = "Спуск КНБК" + }, + new + { + Id = 1047, + Code = 0, + Name = "Подъем КНБК" + }, + new + { + Id = 1048, + Code = 0, + Name = "Спуск ОК" + }, + new + { + Id = 1050, + Code = 0, + Name = "Промывка при спуске ОК" + }, + new + { + Id = 1051, + Code = 0, + Name = "Замер ТС" + }, + new + { + Id = 1052, + Code = 0, + Name = "Тех. отстой" + }, + new + { + Id = 1053, + Code = 0, + Name = "Циркуляция и Обработка БР" + }, + new + { + Id = 1054, + Code = 0, + Name = "Срезка ствола" + }, + new + { + Id = 1055, + Code = 0, + Name = "Вспомогательные работы" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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.HasKey("Id"); + + b.ToTable("t_well_section_type"); + + b.HasComment("конструкция секции скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол" + }, + new + { + Id = 2, + Caption = "Направление" + }, + new + { + Id = 3, + Caption = "Кондуктор" + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна" + }, + new + { + Id = 5, + Caption = "Транспортный ствол" + }, + new + { + Id = 6, + Caption = "Хвостовик" + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2" + }, + new + { + Id = 8, + Caption = "Направление 2" + }, + new + { + Id = 9, + Caption = "Кондуктор 2" + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2" + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2" + }, + new + { + Id = 12, + Caption = "Хвостовик 2" + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3" + }, + new + { + Id = 14, + Caption = "Направление 3" + }, + new + { + Id = 15, + Caption = "Кондуктор 3" + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3" + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3" + }, + new + { + Id = 18, + Caption = "Хвостовик 3" + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4" + }, + new + { + Id = 20, + Caption = "Направление 4" + }, + new + { + Id = 21, + Caption = "Кондуктор 4" + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4" + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4" + }, + new + { + Id = 24, + Caption = "Хвостовик 4" + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5" + }, + new + { + Id = 26, + Caption = "Направление 5" + }, + new + { + Id = 27, + Caption = "Кондуктор 5" + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5" + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5" + }, + new + { + Id = 30, + Caption = "Хвостовик 5" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type"); + + b.HasComment("конструкция скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("RecordBase"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReportDB.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillParams", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("DrillParamsCollection") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_drill_params_t_well_section_type_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType"); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("DrillParamsCollection"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20220705090646_Remove_DailyReportData.cs b/AsbCloudDb/Migrations/20220705090646_Remove_DailyReportData.cs new file mode 100644 index 00000000..955b3589 --- /dev/null +++ b/AsbCloudDb/Migrations/20220705090646_Remove_DailyReportData.cs @@ -0,0 +1,19 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + public partial class Remove_DailyReportData : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.Sql("DELETE FROM [t_daily_report]", true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index 1f2071f9..7cf792d3 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -137,7 +137,7 @@ namespace AsbCloudDb.Migrations }); }); - modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + modelBuilder.Entity("AsbCloudDb.Model.DailyReportDB.DailyReport", b => { b.Property("IdWell") .HasColumnType("integer") @@ -5397,7 +5397,7 @@ namespace AsbCloudDb.Migrations b.Navigation("CompanyType"); }); - modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + modelBuilder.Entity("AsbCloudDb.Model.DailyReportDB.DailyReport", b => { b.HasOne("AsbCloudDb.Model.Well", "Well") .WithMany() From c5785fbb5f37a8edeba9dc267d55e9bff39e98c2 Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Wed, 6 Jul 2022 09:21:35 +0500 Subject: [PATCH 18/34] =?UTF-8?q?=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=81=D0=BA=D1=80?= =?UTF-8?q?=D0=B8=D0=BF=D1=82=D0=B0=20=D0=BC=D0=B8=D0=B3=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=81=D1=82=D0=B8=D0=BB=D0=B5?= =?UTF-8?q?=D0=B9=20=D0=B8=20=D0=B1=D0=BB=D0=BE=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Data/DailyReport/DailyReportBhaDto.cs | 3 +- .../DailyReportDimensionlessDto.cs | 3 +- .../Data/DailyReport/DailyReportSaubDto.cs | 3 +- .../Data/DailyReport/DailyReportSignDto.cs | 3 +- .../DailyReport/DailyReportTimeBalanceDto.cs | 3 +- .../20220705090646_Remove_DailyReportData.cs | 2 +- .../Model/DailyReportDB/DailyReportSaub.cs | 4 +- .../DailyReportBlocks/DimensionlessBlock.cs | 6 +- .../DailyReportBlocks/HeadBlock.cs | 13 ++-- .../DailyReportBlocks/SaubBlock.cs | 34 ++++---- .../DailyReportBlocks/SignBlock.cs | 28 ++++--- .../DailyReportBlocks/TimeBalanceBlock.cs | 78 +++++++++---------- .../DailyReport/DailyReportMakerExcel.cs | 18 ++--- .../Services/DailyReport/XLExtentions.cs | 19 +++-- 14 files changed, 116 insertions(+), 101 deletions(-) diff --git a/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs index 3347e01f..bc55e29f 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs @@ -1,5 +1,4 @@ -using System; -namespace AsbCloudApp.Data.DailyReport +namespace AsbCloudApp.Data.DailyReport { public class DailyReportBhaDto { diff --git a/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs index 39fae88d..2f8235ba 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs @@ -1,5 +1,4 @@ -using System; -namespace AsbCloudApp.Data.DailyReport +namespace AsbCloudApp.Data.DailyReport { public class DailyReportDimensionlessDto { diff --git a/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs index c5ea8559..b4d3481b 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; namespace AsbCloudApp.Data.DailyReport { diff --git a/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs index 974e939c..49963fe9 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs @@ -1,5 +1,4 @@ -using System; -namespace AsbCloudApp.Data.DailyReport +namespace AsbCloudApp.Data.DailyReport { public class DailyReportSignDto { diff --git a/AsbCloudApp/Data/DailyReport/DailyReportTimeBalanceDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportTimeBalanceDto.cs index f4c597f1..94695a9e 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportTimeBalanceDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportTimeBalanceDto.cs @@ -1,5 +1,4 @@ -using System; -namespace AsbCloudApp.Data.DailyReport +namespace AsbCloudApp.Data.DailyReport { public class DailyReportTimeBalanceDto { diff --git a/AsbCloudDb/Migrations/20220705090646_Remove_DailyReportData.cs b/AsbCloudDb/Migrations/20220705090646_Remove_DailyReportData.cs index 955b3589..7be421cd 100644 --- a/AsbCloudDb/Migrations/20220705090646_Remove_DailyReportData.cs +++ b/AsbCloudDb/Migrations/20220705090646_Remove_DailyReportData.cs @@ -8,7 +8,7 @@ namespace AsbCloudDb.Migrations { protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.Sql("DELETE FROM [t_daily_report]", true); + migrationBuilder.Sql("DELETE FROM t_daily_report", true); } protected override void Down(MigrationBuilder migrationBuilder) diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs index b0c13528..a45fd7a8 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs @@ -7,12 +7,12 @@ namespace AsbCloudDb.Model.DailyReportDB /// /// Режимы бурения в роторе /// - public IEnumerable RotorDrillingModes { get; set; } + public IEnumerable? RotorDrillingModes { get; set; } /// /// режимы бурения в слайде /// - public IEnumerable SlideDrillingModes { get; set; } + public IEnumerable? SlideDrillingModes { get; set; } /// /// Количество метров пробуренных в роторе за отчетный период diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs index e1c5a7bb..35e1b6b4 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs @@ -68,8 +68,10 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public override void Draw(IXLWorksheet sheet) { - sheet._Range(AddressDimensionTitle, AddressDimensionTitle + (0, 1)) - ._SetValue("БЕЗМЕТРАЖНЫЕ РАБОТЫ"); + sheet.Range(AddressDimensionTitle.RowNumber, AddressDimensionTitle.ColumnNumber, + AddressDimensionTitle.RowNumber, AddressDimensionTitle.ColumnNumber + 1) + .Merge() + .SetValue("БЕЗМЕТРАЖНЫЕ РАБОТЫ"); sheet._Range(AddressPreparationTitle, AddressPreparationTitle + (0, 2)) ._SetValue("Подготовка ствола скв. к наращиванию"); sheet._Range(AddressExtensionTitle, AddressExtensionTitle + (0, 2)) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs index 32ae732c..324b70bb 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs @@ -85,10 +85,12 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks } public override void Draw(IXLWorksheet sheet) - { + { sheet._Range(AddressTitle, AddressTitle + (0, 7)) ._SetValue($"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}") - .Style.SetH1(); + + .Style.SetH1(); + sheet._Range(AddressCustomer, AddressCustomer + (0, 7)) ._SetValue($"Заказчик: {blockDto.Customer}") .Style.SetH1(); @@ -108,10 +110,11 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks sheet._Range(AddressPeriodTableHeadArray[3], AddressPeriodTableHeadArray[3] + (0, 1)) ._SetValue("До"); sheet._Range(AddressPeriodTableDataArray[0], AddressPeriodTableDataArray[0] + (0, 1)) - ._SetValue($"{blockDto.ReportDate}"); - sheet._Range(AddressPeriodTableDataArray[1], AddressPeriodTableDataArray[1] + (0, 1)); + ._SetValue($"{blockDto.ReportDate}"); + sheet._Range(AddressPeriodTableDataArray[1], AddressPeriodTableDataArray[1] + (0, 1))._SetValue(""); sheet.Cell(AddressPeriodTableDataArray[1]) - .SetFormulaA1(string.Format("{0}-1", AddressPeriodTableDataArray[0].ToString())); + .SetFormulaA1(string.Format("{0}-1", AddressPeriodTableDataArray[0].ToString())) + .Style.DateFormat.Format= "DD.MM.YYYY HH:MM:SS"; sheet._Range(AddressPeriodTableDataArray[2], AddressPeriodTableDataArray[2] + (0, 1)) ._SetValue($"{blockDto.WellDepthIntervalStartDate}"); sheet._Range(AddressPeriodTableDataArray[3], AddressPeriodTableDataArray[3] + (0, 1)) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs index db0b892e..b91351d3 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs @@ -41,8 +41,9 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public override CellAddress AddressBlockBegin { get; } public override CellAddress AddressBlockEnd { get; } - public SaubBlock(CellAddress addressBlockBegin, DailyReportSaubDto blockDto) + public SaubBlock(CellAddress addressBlockBegin, DailyReportSaubDto blockDto, HeadBlock headBlock) { + this.headBlock = headBlock; AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; AddressRotorDrilling = addressBlockBegin + (1, 0); @@ -109,9 +110,13 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks private string FormulaSinking(CellAddress sinkingDrilling, CellAddress sinkingSlide, CellAddress slaughterEnd, CellAddress slaughterBegin) { - return string.Format($"=IF(({{0}}+{{1}})<>({{2}}-{{3}});\"ОШИБКА\";({{4}}+{{5}}))", sinkingSlide.ToString(), sinkingDrilling.ToString() - , slaughterEnd.ToString(), slaughterBegin.ToString(), - sinkingSlide.ToString(), sinkingDrilling.ToString()); + return string.Format($"=IF(({{0}}+{{1}})<>({{2}}-{{3}}),\"ОШИБКА\",({{0}}+{{1}}))", sinkingSlide.ToString(), sinkingDrilling.ToString(), + slaughterEnd.ToString(), slaughterBegin.ToString()); + } + private string FormulaWatch(CellAddress cellSinkingDrill, CellAddress cellSinkingSlide) + { + return string.Format("={0}+{1}", + cellSinkingDrill.ToString(), cellSinkingSlide.ToString()); } public override void Draw(IXLWorksheet sheet) @@ -134,7 +139,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.PenetrationInRotor}"); sheet._Range(AddressDrillingTableData[1], AddressDrillingTableData[1] + (0, 1)) ._SetValue($"{blockDto.NumberDrillingHours}"); - sheet._Range(AddressDrillingTableData[2], AddressDrillingTableData[2] + (0, 1)); + sheet._Range(AddressDrillingTableData[2], AddressDrillingTableData[2] + (0, 1))._SetValue(""); sheet.Cell(AddressDrillingTableData[2]) .SetFormulaA1(FormulaMechanicalSpeed(AddressDrillingTableData[0], AddressDrillingTableData[1])).Style.SetAllBorders(); sheet._Range(AddressDrillingTableData[3], AddressDrillingTableData[3] + (0, 1)) @@ -153,7 +158,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.PenetrationInSlide}"); sheet._Range(AddressSlideTableData[1], AddressSlideTableData[1] + (0, 1)) ._SetValue($"{blockDto.DrillingTimeInRotor}"); - sheet._Range(AddressSlideTableData[2], AddressSlideTableData[2] + (0, 1)); + sheet._Range(AddressSlideTableData[2], AddressSlideTableData[2] + (0, 1))._SetValue(""); sheet.Cell(AddressSlideTableData[2]) .SetFormulaA1(FormulaMechanicalSpeed(AddressSlideTableData[0], AddressSlideTableData[1])).Style.SetAllBorders(); sheet._Range(AddressSlideTableData[3], AddressSlideTableData[3] + (0, 1)) @@ -168,14 +173,13 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue("Часы бурения"); sheet._Range(AddressTotalTableHead[2], AddressTotalTableHead[2] + (0, 1)) ._SetValue("Мех. скорость"); - var formulaWatch = string.Format("={0}+{1}", - AddressDrillingTableData[1].ToString(), AddressSlideTableData[1].ToString()); - sheet._Range(AddressTotalTableData[0], AddressTotalTableData[0] + (0, 1)); + + sheet._Range(AddressTotalTableData[0], AddressTotalTableData[0] + (0, 1))._SetValue(""); sheet.Cell(AddressTotalTableData[0]) - .SetFormulaA1(formulaWatch).Style.SetAllBorders(); - sheet._Range(AddressTotalTableData[1], AddressTotalTableData[1] + (0, 1)); + .SetFormulaA1(FormulaSinking(AddressDrillingTableData[0], AddressSlideTableData[0], headBlock.AddressPeriodTableDataArray[3], headBlock.AddressPeriodTableDataArray[2])); + sheet._Range(AddressTotalTableData[1], AddressTotalTableData[1] + (0, 1))._SetValue(""); sheet.Cell(AddressTotalTableData[1]) - .SetFormulaA1(formulaWatch).Style.SetAllBorders(); + .SetFormulaA1(FormulaWatch(AddressDrillingTableData[1], AddressSlideTableData[1])); sheet._Range(AddressTotalTableData[2], AddressTotalTableData[2] + (0, 1)) ._SetValue(""); sheet._Range(AddressTotalTableData[3], AddressTotalTableData[3] + (0, 1)) @@ -208,10 +212,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue("Проходка за секцию"); sheet._Range(SectionPenetrationTotalValue, SectionPenetrationTotalValue + (0, 3)) ._SetValue($"{blockDto.SectionPenetrationTotal}"); - - CellAddress test = AddressExtensionsCount + (0, 3); - - sheet._Range(AddressExtensionsCount, test) + sheet._Range(AddressExtensionsCount, AddressExtensionsCount + (0, 3)) ._SetValue("Кол- во наращиваний"); sheet._Range(AddressExtensionsCountValue, AddressExtensionsCountValue + (0, 3)) ._SetValue($"{blockDto.ExtensionsCount}"); @@ -221,7 +222,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks ._SetValue($"{blockDto.DeviationFromTVD}"); sheet._Range(DeclinesReasonsROP, DeclinesReasonsROP + (1, 7)) ._SetValue($"Примечание: {blockDto.DeclinesReasonsROP}"); - } } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs index b110abaa..94aefd7c 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs @@ -19,22 +19,30 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; AddressDrillMasterHead = addressBlockBegin + (3, 0); - AddressDrillMaster = AddressDrillMasterHead + (0, 6); + AddressDrillMaster = AddressDrillMasterHead + (0, 5); AddressSupervisorHead = AddressDrillMasterHead + (2, 0); - AddressSupervisor = AddressSupervisorHead + (0, 6); + AddressSupervisor = AddressSupervisorHead + (0, 5); AddressBlockEnd = AddressSupervisor + (0,1); } public override void Draw(IXLWorksheet sheet) { - sheet._Range(AddressDrillMasterHead, AddressDrillMasterHead + (0, 2)) - ._SetValue("Мастер буровой "); - sheet._Range(AddressDrillMaster, AddressDrillMaster + (0, 2)) - ._SetValue($"{blockDto.DrillingMaster}"); - sheet._Range(AddressSupervisorHead, AddressSupervisorHead + (0, 2)) - ._SetValue("Супервайзер "); - sheet._Range(AddressSupervisor, AddressSupervisor + (0, 2)) - ._SetValue($"{blockDto.Supervisor}"); + sheet.Range(AddressDrillMasterHead.RowNumber, AddressDrillMasterHead.ColumnNumber + , AddressDrillMasterHead.RowNumber, AddressDrillMasterHead.ColumnNumber + 2) + .Merge() + .SetValue("Мастер буровой "); + sheet.Range(AddressDrillMaster.RowNumber, AddressDrillMaster.ColumnNumber + , AddressDrillMaster.RowNumber, AddressDrillMaster.ColumnNumber + 2) + .Merge() + .SetValue($"{blockDto.DrillingMaster}"); + sheet.Range(AddressSupervisorHead.RowNumber, AddressSupervisorHead.ColumnNumber + , AddressSupervisorHead.RowNumber, AddressSupervisorHead.ColumnNumber + 2) + .Merge() + .SetValue("Супервайзер "); + sheet.Range(AddressSupervisor.RowNumber, AddressSupervisor.ColumnNumber + , AddressSupervisor.RowNumber, AddressSupervisor.ColumnNumber + 2) + .Merge() + .SetValue($"{blockDto.Supervisor}"); } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs index 76498934..694d9c95 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs @@ -52,50 +52,50 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; AddressTitle = addressBlockBegin + (1, 3); - AddressDrilling = addressBlockBegin + (4, 1); - AddressFlushing = addressBlockBegin + (5, 1); - AddressBuilding = addressBlockBegin + (6, 1); - AddressElaboration = addressBlockBegin + (7, 1); - AddressExtension = addressBlockBegin + (8, 1); - AddressRepair = addressBlockBegin + (9, 1); - AddressDrillingValue = addressBlockBegin + (4, 2); - AddressFlushingValue = addressBlockBegin + (5, 2); - AddressBuildingValue = addressBlockBegin + (6, 2); - AddressElaborationValue = addressBlockBegin + (7, 2); - AddressExtensionValue = addressBlockBegin + (8, 2); - AddressRepairValue = addressBlockBegin + (9, 2); - AddressKnbk = addressBlockBegin + (4, 3); - AddressSpo = addressBlockBegin + (5, 3); - AddressPzr = addressBlockBegin + (6, 3); - AddressPvo = addressBlockBegin + (7, 3); - AddressPgr = addressBlockBegin + (8, 3); - AddressGis = addressBlockBegin + (9, 3); - AddressKnbkValue = addressBlockBegin + (4, 4); - AddressSpoValue = addressBlockBegin + (5, 4); - AddressPzrValue = addressBlockBegin + (6, 4); - AddressPvoValue = addressBlockBegin + (7, 4); - AddressPgrValue = addressBlockBegin + (8, 4); - AddressGisValue = addressBlockBegin + (9, 4); - AddressOzc = addressBlockBegin + (4, 5); - AddressEngineeringWorks = addressBlockBegin + (5, 5); - AddressTakingMeasure = addressBlockBegin + (6, 5); - AddressCementing = addressBlockBegin + (7, 5); - AddressSimple = addressBlockBegin + (8, 5); - AddressNpv = addressBlockBegin + (9, 5); - AddressOzcValue = addressBlockBegin + (4, 6); - AddressEngineeringWorksValue = addressBlockBegin + (5, 6); - AddressTakingMeasureValue = addressBlockBegin + (6, 6); - AddressCementingValue = addressBlockBegin + (7, 6); - AddressSimpleValue = addressBlockBegin + (8, 6); - AddressNpvValue = addressBlockBegin + (9, 6); + AddressDrilling = addressBlockBegin + (2, 1); + AddressFlushing = addressBlockBegin + (3, 1); + AddressBuilding = addressBlockBegin + (4, 1); + AddressElaboration = addressBlockBegin + (5, 1); + AddressExtension = addressBlockBegin + (6, 1); + AddressRepair = addressBlockBegin + (7, 1); + AddressDrillingValue = addressBlockBegin + (2, 2); + AddressFlushingValue = addressBlockBegin + (3, 2); + AddressBuildingValue = addressBlockBegin + (4, 2); + AddressElaborationValue = addressBlockBegin + (5, 2); + AddressExtensionValue = addressBlockBegin + (6, 2); + AddressRepairValue = addressBlockBegin + (7, 2); + AddressKnbk = addressBlockBegin + (2, 3); + AddressSpo = addressBlockBegin + (3, 3); + AddressPzr = addressBlockBegin + (4, 3); + AddressPvo = addressBlockBegin + (5, 3); + AddressPgr = addressBlockBegin + (6, 3); + AddressGis = addressBlockBegin + (7, 3); + AddressKnbkValue = addressBlockBegin + (2, 4); + AddressSpoValue = addressBlockBegin + (3, 4); + AddressPzrValue = addressBlockBegin + (4, 4); + AddressPvoValue = addressBlockBegin + (5, 4); + AddressPgrValue = addressBlockBegin + (6, 4); + AddressGisValue = addressBlockBegin + (7, 4); + AddressOzc = addressBlockBegin + (2, 5); + AddressEngineeringWorks = addressBlockBegin + (3, 5); + AddressTakingMeasure = addressBlockBegin + (4, 5); + AddressCementing = addressBlockBegin + (5, 5); + AddressSimple = addressBlockBegin + (6, 5); + AddressNpv = addressBlockBegin + (7, 5); + AddressOzcValue = addressBlockBegin + (2, 6); + AddressEngineeringWorksValue = addressBlockBegin + (3, 6); + AddressTakingMeasureValue = addressBlockBegin + (4, 6); + AddressCementingValue = addressBlockBegin + (5, 6); + AddressSimpleValue = addressBlockBegin + (6, 6); + AddressNpvValue = addressBlockBegin + (7, 6); AddressBlockEnd = AddressNpvValue; } public override void Draw(IXLWorksheet sheet) { - - sheet._Range(AddressTitle, AddressTitle + (0, 1)) - ._SetValue("БАЛАНС ВРЕМЕНИ"); + sheet.Range(AddressTitle.RowNumber, AddressTitle.ColumnNumber, AddressTitle.RowNumber, AddressTitle.ColumnNumber + 1) + .Merge() + .SetValue("БАЛАНС ВРЕМЕНИ"); sheet.Cell(AddressDrilling) ._SetValue("Бурение"); sheet.Cell(AddressFlushing) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs index 8085b11b..70670293 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs @@ -19,32 +19,32 @@ namespace AsbCloudInfrastructure.Services.DailyReport private void FillExampleBlocks(XLWorkbook workbook, DailyReportDto dto) { var sheet = workbook.Worksheets.Add(dto.Head.ReportDate.ToString("dd.MM.yyyy")); - var addressStart = new CellAddress(sheet, 1, 1); + var addressStart = new CellAddress(sheet, 2, 2); var blockHeader = new HeadBlock(addressStart, dto.Head); addressStart = blockHeader.AddressBlockEnd + (1, 0); - addressStart.ColumnNumber = 1; + addressStart.ColumnNumber = 2; var blockBha = new BhaBlock(addressStart, dto.Bha); addressStart = blockBha.AddressBlockEnd + (1, 0); - addressStart.ColumnNumber = 1; + addressStart.ColumnNumber = 2; var timeBalance = new TimeBalanceBlock(addressStart, dto.TimeBalance); addressStart = timeBalance.AddressBlockEnd + (1, 0); - addressStart.ColumnNumber = 1; + addressStart.ColumnNumber = 2; var blockDimensionless = new DimensionlessBlock(addressStart, dto.Dimensionless); addressStart = blockDimensionless.AddressBlockEnd + (1, 0); - addressStart.ColumnNumber = 1; - var blockSaub = new SaubBlock(addressStart, dto.Saub); + addressStart.ColumnNumber = 2; + var blockSaub = new SaubBlock(addressStart, dto.Saub, blockHeader); addressStart = blockSaub.AddressBlockEnd + (1, 0); blockDimensionless.SaubBlock = blockSaub; - addressStart.ColumnNumber = 1; + addressStart.ColumnNumber = 2; var blockSign = new SignBlock(addressStart, dto.Sign); addressStart = blockSign.AddressBlockEnd + (1, 0); - addressStart.ColumnNumber = 1; + addressStart.ColumnNumber = 2; blockHeader.Draw(sheet); blockBha.Draw(sheet); timeBalance.Draw(sheet); blockDimensionless.Draw(sheet); blockSaub.Draw(sheet); - blockSign.Draw(sheet); + blockSign.Draw(sheet); } } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs b/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs index e114eb26..b493e4f3 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs @@ -7,9 +7,11 @@ namespace AsbCloudInfrastructure.Services.DailyReport { public static IXLRange _SetValue(this IXLRange range, object value) { - var mergedRange = range.Merge(); + var mergedRange = range.Merge(); + mergedRange.Style.SetAllBorders() + .Alignment.WrapText = true; ; mergedRange.FirstCell()._SetValue(value); - mergedRange.Style.SetAllBorders(); + return mergedRange; } @@ -34,7 +36,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport return cell; } - public static IXLCell _SetValue(this IXLCell cell, string value, bool adaptRowHeight = false) + public static IXLCell _SetValue(this IXLCell cell, string value, bool adaptRowHeight = false, int noBorder = 0) { cell.Value = value; cell.Style @@ -45,18 +47,22 @@ namespace AsbCloudInfrastructure.Services.DailyReport if (adaptRowHeight) { - var colWidth = cell.WorksheetColumn().Width; - var maxCharsToWrap = colWidth / (0.1d * cell.Style.Font.FontSize); // TODO: Подобрать коэффициент - if(value.Length > maxCharsToWrap) + var colWidth = cell.WorksheetColumn().Width; + var maxCharsToWrap = 88; + if (value.Length > maxCharsToWrap) { var row = cell.WorksheetRow(); var baseHeight = row.Height; row.Height = 0.82d * baseHeight * Math.Ceiling(1d + value.Length / maxCharsToWrap); } + } return cell; } + + + public static IXLCell _SetValue(this IXLCell cell, DateTime value, string dateFormat = "DD.MM.YYYY HH:MM:SS") { @@ -122,5 +128,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport /// public static IXLRange _Range(this IXLWorksheet sheet, CellAddress begin, CellAddress end) => sheet.Range(begin.RowNumber, begin.ColumnNumber, end.RowNumber, end.ColumnNumber); + } } From 6bce8ee4e0241878de533eb902effad45eda971c Mon Sep 17 00:00:00 2001 From: IvanovEugeniy Date: Wed, 6 Jul 2022 15:04:03 +0500 Subject: [PATCH 19/34] =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D0=B5=D1=87=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=20-?= =?UTF-8?q?=D0=B2=D1=8B=D1=81=D1=82=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=B2=D1=8B=D1=80=D0=B0=D0=B2=D0=BD=D0=B8=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=20-=D0=BA=D0=BE?= =?UTF-8?q?=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D0=B8=20=D0=B1=D0=BB?= =?UTF-8?q?=D0=BE=D0=BA=D0=B0=20SAUB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Data/DailyReport/DailyReportSaubDto.cs | 6 +-- .../Model/DailyReportDB/DailyReportSaub.cs | 4 +- .../DailyReportBlocks/DimensionlessBlock.cs | 6 +-- .../DailyReportBlocks/SaubBlock.cs | 2 +- .../DailyReportBlocks/TimeBalanceBlock.cs | 12 ++--- .../Services/DailyReport/XLExtentions.cs | 46 +++++++++++++++---- .../Controllers/DailyReportController.cs | 3 +- 7 files changed, 52 insertions(+), 27 deletions(-) diff --git a/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs index b4d3481b..0af94d00 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs @@ -2,17 +2,17 @@ namespace AsbCloudApp.Data.DailyReport { - public class DailyReportSaubDto + public class DailyReportSaubDto { /// /// Режимы бурения в роторе /// - public IEnumerable RotorDrillingModes { get; set; } + public string RotorDrillingModes { get; set; } /// /// режимы бурения в слайде /// - public IEnumerable SlideDrillingModes { get; set; } + public string SlideDrillingModes { get; set; } /// /// Количество метров пробуренных в роторе за отчетный период diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs index a45fd7a8..208a4094 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs +++ b/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs @@ -7,12 +7,12 @@ namespace AsbCloudDb.Model.DailyReportDB /// /// Режимы бурения в роторе /// - public IEnumerable? RotorDrillingModes { get; set; } + public string? RotorDrillingModes { get; set; } /// /// режимы бурения в слайде /// - public IEnumerable? SlideDrillingModes { get; set; } + public string? SlideDrillingModes { get; set; } /// /// Количество метров пробуренных в роторе за отчетный период diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs index 35e1b6b4..0ab435ca 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs @@ -67,11 +67,11 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public override void Draw(IXLWorksheet sheet) { - sheet.Range(AddressDimensionTitle.RowNumber, AddressDimensionTitle.ColumnNumber, AddressDimensionTitle.RowNumber, AddressDimensionTitle.ColumnNumber + 1) - .Merge() - .SetValue("БЕЗМЕТРАЖНЫЕ РАБОТЫ"); + .Merge() + .Style.Alignment.SetWrapText(true); + sheet.Cell(AddressDimensionTitle.RowNumber, AddressDimensionTitle.ColumnNumber)._ValueNoBorder("БЕЗМЕТРАЖНЫЕ РАБОТЫ",true); sheet._Range(AddressPreparationTitle, AddressPreparationTitle + (0, 2)) ._SetValue("Подготовка ствола скв. к наращиванию"); sheet._Range(AddressExtensionTitle, AddressExtensionTitle + (0, 2)) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs index b91351d3..0497909b 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs @@ -110,7 +110,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks private string FormulaSinking(CellAddress sinkingDrilling, CellAddress sinkingSlide, CellAddress slaughterEnd, CellAddress slaughterBegin) { - return string.Format($"=IF(({{0}}+{{1}})<>({{2}}-{{3}}),\"ОШИБКА\",({{0}}+{{1}}))", sinkingSlide.ToString(), sinkingDrilling.ToString(), + return string.Format("=IF(({0}+{1})<>({2}-{3}),\"ОШИБКА\",({0}+{1}))", sinkingSlide.ToString(), sinkingDrilling.ToString(), slaughterEnd.ToString(), slaughterBegin.ToString()); } private string FormulaWatch(CellAddress cellSinkingDrill, CellAddress cellSinkingSlide) diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs index 694d9c95..41816758 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs @@ -97,17 +97,17 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks .Merge() .SetValue("БАЛАНС ВРЕМЕНИ"); sheet.Cell(AddressDrilling) - ._SetValue("Бурение"); + ._SetValue("Бурение", true); sheet.Cell(AddressFlushing) - ._SetValue("Промывка"); + ._SetValue("Промывка", true); sheet.Cell(AddressBuilding) - ._SetValue("Наращивание"); + ._SetValue("Наращивание", true); sheet.Cell(AddressElaboration) - ._SetValue("Проработка"); + ._SetValue("Проработка", true); sheet.Cell(AddressExtension) - ._SetValue("Расширка"); + ._SetValue("Расширка", true); sheet.Cell(AddressRepair) - ._SetValue("Ремонт"); + ._SetValue("Ремонт", true); sheet.Cell(AddressDrillingValue) ._SetValue($"{blockDto.Drilling}"); sheet.Cell(AddressFlushingValue) diff --git a/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs b/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs index b493e4f3..ff079b14 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/XLExtentions.cs @@ -7,11 +7,18 @@ namespace AsbCloudInfrastructure.Services.DailyReport { public static IXLRange _SetValue(this IXLRange range, object value) { - var mergedRange = range.Merge(); - mergedRange.Style.SetAllBorders() - .Alignment.WrapText = true; ; + var mergedRange = range.Merge(); mergedRange.FirstCell()._SetValue(value); - + var colWidth = mergedRange.FirstCell().WorksheetColumn().Width; + var maxCharsToWrap = colWidth / (0.05d * mergedRange.FirstCell().Style.Font.FontSize); + if (value is string valueString && valueString.Length > maxCharsToWrap) + { + var row = mergedRange.FirstCell().WorksheetRow(); + var baseHeight = row.Height; + row.Height = 0.45d * baseHeight * Math.Ceiling(1d + valueString.Length / maxCharsToWrap); + } + mergedRange.Style.SetAllBorders() + .Alignment.SetWrapText(true); return mergedRange; } @@ -36,7 +43,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport return cell; } - public static IXLCell _SetValue(this IXLCell cell, string value, bool adaptRowHeight = false, int noBorder = 0) + public static IXLCell _SetValue(this IXLCell cell, string value, bool adaptRowHeight = false) { cell.Value = value; cell.Style @@ -44,23 +51,42 @@ namespace AsbCloudInfrastructure.Services.DailyReport .Alignment.WrapText = true; cell.Value = value; - if (adaptRowHeight) { var colWidth = cell.WorksheetColumn().Width; - var maxCharsToWrap = 88; + var maxCharsToWrap = colWidth / (0.1d * cell.Style.Font.FontSize); if (value.Length > maxCharsToWrap) { var row = cell.WorksheetRow(); var baseHeight = row.Height; - row.Height = 0.82d * baseHeight * Math.Ceiling(1d + value.Length / maxCharsToWrap); + row.Height = 0.52d * baseHeight * Math.Ceiling(1d + value.Length / maxCharsToWrap); } - } return cell; } - + + public static IXLCell _ValueNoBorder(this IXLCell cell, string value, bool adaptRowHeight = false) + { + cell.Value = value; + cell.Style.Alignment.WrapText = true; + + cell.Value = value; + if (adaptRowHeight) + { + var colWidth = cell.WorksheetColumn().Width; + var maxCharsToWrap = colWidth / (0.1d * cell.Style.Font.FontSize); + if (value.Length > maxCharsToWrap) + { + var row = cell.WorksheetRow(); + var baseHeight = row.Height; + row.Height = 0.52d * baseHeight * Math.Ceiling(1d + value.Length / maxCharsToWrap); + } + } + + return cell; + } + diff --git a/AsbCloudWebApi/Controllers/DailyReportController.cs b/AsbCloudWebApi/Controllers/DailyReportController.cs index 7aec2106..03e63f48 100644 --- a/AsbCloudWebApi/Controllers/DailyReportController.cs +++ b/AsbCloudWebApi/Controllers/DailyReportController.cs @@ -105,8 +105,7 @@ namespace AsbCloudWebApi.Controllers var stream = await dailyReportService.MakeReportAsync(idWell, date, token); if (stream != null) { - - var fileName = $"Суточный рапорт по скважине {well.Caption} куст {well.Cluster}.xlsx"; + var fileName = $"Суточный рапорт по скважине {well.Caption} куст {well.Cluster}.xlsx"; return File(stream, "application/octet-stream", fileName); } else From 7b99e0fc886c747c966ca21e74d1aff823f147a8 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Tue, 19 Jul 2022 10:29:16 +0500 Subject: [PATCH 20/34] Rename WITS base table --- ...9050018_Rename_WITS_base_table.Designer.cs | 6083 +++++++++++++++++ .../20220719050018_Rename_WITS_base_table.cs | 185 + AsbCloudDb/Model/WITS/RecordBase.cs | 1 + 3 files changed, 6269 insertions(+) create mode 100644 AsbCloudDb/Migrations/20220719050018_Rename_WITS_base_table.Designer.cs create mode 100644 AsbCloudDb/Migrations/20220719050018_Rename_WITS_base_table.cs diff --git a/AsbCloudDb/Migrations/20220719050018_Rename_WITS_base_table.Designer.cs b/AsbCloudDb/Migrations/20220719050018_Rename_WITS_base_table.Designer.cs new file mode 100644 index 00000000..36c00eb6 --- /dev/null +++ b/AsbCloudDb/Migrations/20220719050018_Rename_WITS_base_table.Designer.cs @@ -0,0 +1,6083 @@ +// +using System; +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("20220719050018_Rename_WITS_base_table")] + partial class Rename_WITS_base_table + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "6.0.1") + .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") + .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") + .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") + .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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недрапользователь" + }, + new + { + Id = 2, + Caption = "Буровой подрядчик" + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date") + .HasComment("Дата отчёта"); + + b.Property("Info") + .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") + .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") + .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("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.DrillFlowChart", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellOperationCategory") + .HasColumnType("integer") + .HasColumnName("id_operation_category") + .HasComment("Id типа операции"); + + b.Property("LastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_update") + .HasComment("Дата последнего изменения"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellOperationCategory"); + + b.ToTable("t_drill_flow_chart"); + + 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.DrillParams", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadAvg") + .HasColumnType("double precision") + .HasColumnName("axial_load_avg") + .HasComment("Средняя нагрузка"); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowAvg") + .HasColumnType("double precision") + .HasColumnName("flow_avg") + .HasComment("Средний расход"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Id с типом секции скважины"); + + b.Property("PressureAvg") + .HasColumnType("double precision") + .HasColumnName("pressure_avg") + .HasComment("Среднее давление"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_avg") + .HasComment("Средние обороты на ВСП"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_avg") + .HasComment("Средний момент на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_drill_params"); + + b.HasComment("Режим бурения в секции (диапазоны параметров бурения)"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .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 = "Программы цементирования обсадных колонн" + }); + }); + + 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") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("PublishInfo") + .HasColumnType("jsonb") + .HasColumnName("publish_info") + .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.Measure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .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") + .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.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") + .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 = 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" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("IdCompany", "IdWell"); + + b.HasIndex("IdWell"); + + b.ToTable("t_relation_company_well"); + + b.HasComment("отношение скважин и компаний"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part"); + + b.HasComment("Отношение пользователей и частей ПБ"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission"); + + b.HasComment("Отношение ролей пользователей и разрешений доступа"); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role"); + + b.HasComment("Отношение ролей к ролям"); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role"); + + b.HasComment("Отношение пользователей и ролей"); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property"); + + b.HasComment("Отчеты с данными по буровым"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule"); + + b.HasComment("График работы бурильщика"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest"); + + b.HasComment("Запросы на изменение уставок панели оператора"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry"); + + b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub"); + + b.HasComment("набор основных данных по SAUB"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToView("mw_telemetry_datas_saub_stat"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("BreakAngleK") + .HasColumnType("real") + .HasColumnName("break_angle_k") + .HasComment("Коэффициент для расчёта за какой угол нужно тормозить"); + + b.Property("BreakAngleLeft") + .HasColumnType("real") + .HasColumnName("break_angle_left") + .HasComment("Угол торможения влево при работе по моменту"); + + b.Property("EncoderResolution") + .HasColumnType("real") + .HasColumnName("encoder_resolution") + .HasComment("Разрешение энкодера"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PidMuxTorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("pid_mux_torque_left_limit") + .HasComment(" Момент при котором определяется ехать назад по моменту или по скорости"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("Ratio") + .HasColumnType("real") + .HasColumnName("ratio") + .HasComment(" Коэффициент редукции редуктора"); + + b.Property("ReverseKTorque") + .HasColumnType("real") + .HasColumnName("reverse_k_torque") + .HasComment("Коэффициент на который умножается момент, для того чтобы система поняла что мы движемся в обратную сторону"); + + b.Property("ReverseSpeedSpZeroTime") + .HasColumnType("smallint") + .HasColumnName("reverse_speed_sp_zero_time") + .HasComment("Время выдачи сигнала нулевой скорости на при смене направления"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("RotorTorqueAvg") + .HasColumnType("real") + .HasColumnName("rotor_torque_avg") + .HasComment("Момент в роторе средний"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.Property("TopDriveSpeed") + .HasColumnType("real") + .HasColumnName("top_drive_speed") + .HasComment("Скорость СВП"); + + b.Property("TopDriveSpeedErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_err"); + + b.Property("TopDriveSpeedMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_max") + .HasComment("верхний предел"); + + b.Property("TopDriveSpeedMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_min") + .HasComment("нижний предел"); + + b.Property("TopDriveSpeedOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_offset") + .HasComment("смещение"); + + b.Property("TopDriveSpeedSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from") + .HasComment("Заданная скорость c СВП"); + + b.Property("TopDriveSpeedSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_from_err"); + + b.Property("TopDriveSpeedSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_max"); + + b.Property("TopDriveSpeedSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_min"); + + b.Property("TopDriveSpeedSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_offset"); + + b.Property("TopDriveSpeedSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to") + .HasComment("Задание скорости на СВП"); + + b.Property("TopDriveSpeedSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_to_err"); + + b.Property("TopDriveSpeedSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_max"); + + b.Property("TopDriveSpeedSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_min"); + + b.Property("TopDriveSpeedSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_offset"); + + b.Property("TopDriveTorque") + .HasColumnType("real") + .HasColumnName("top_drive_torque") + .HasComment("Момент СВП"); + + b.Property("TopDriveTorqueErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_err"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_max"); + + b.Property("TopDriveTorqueMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_min"); + + b.Property("TopDriveTorqueOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_offset"); + + b.Property("TopDriveTorqueSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from") + .HasComment("Заданный момент c СВП"); + + b.Property("TopDriveTorqueSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_from_err"); + + b.Property("TopDriveTorqueSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_max"); + + b.Property("TopDriveTorqueSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_min"); + + b.Property("TopDriveTorqueSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_offset"); + + b.Property("TopDriveTorqueSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to") + .HasComment("Задание момента на СВП"); + + b.Property("TopDriveTorqueSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_to_err"); + + b.Property("TopDriveTorqueSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_max"); + + b.Property("TopDriveTorqueSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_min"); + + b.Property("TopDriveTorqueSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_offset"); + + b.Property("TorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("torque_left_limit") + .HasComment("Ограничение крутящего момента влево"); + + b.Property("TorqueRampTime") + .HasColumnType("real") + .HasColumnName("torque_ramp_time") + .HasComment("Время нарастания момента"); + + b.Property("TorqueRightLimit") + .HasColumnType("real") + .HasColumnName("torque_right_limit") + .HasComment("Ограничение крутящего момента вправо"); + + b.Property("TorqueStarting") + .HasColumnType("real") + .HasColumnName("torque_starting") + .HasComment("Страгивающий момент"); + + b.Property("TurnLeftOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_angle") + .HasComment("Доворот по градусам единожды влево"); + + b.Property("TurnLeftOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_revols") + .HasComment("Доворот по оборотам единожды влево"); + + b.Property("TurnLeftOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_torque") + .HasComment("Доворот по моменту единожды влево"); + + b.Property("TurnRightOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_angle") + .HasComment("Доворот по градусам единожды вправо"); + + b.Property("TurnRightOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_revols") + .HasComment("Доворот по оборотам единожды вправо"); + + b.Property("TurnRightOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_torque") + .HasComment("Доворот по моменту единожды вправо"); + + b.Property("UnlockBySectorOut") + .HasColumnType("real") + .HasColumnName("unlock_by_sector_out") + .HasComment(" Градус отклонения от сектора для автоматического сброса блокировки"); + + b.Property("Ver") + .HasColumnType("real") + .HasColumnName("ver") + .HasComment("Версия ПО ПЛК"); + + b.Property("W2800") + .HasColumnType("smallint") + .HasColumnName("w2800") + .HasComment("Установка нуля энкодера"); + + b.Property("W2808") + .HasColumnType("smallint") + .HasColumnName("w2808") + .HasComment("Неисправность энкодера"); + + b.Property("W2810") + .HasColumnType("smallint") + .HasColumnName("w2810") + .HasComment(" автоматический сброс блокировки"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin"); + + b.HasComment("набор основных данных по SpinMaster"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event"); + + b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message"); + + b.HasComment("Сообщения на буровых"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user"); + + b.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n100 - удален"); + + b.Property("Login") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user"); + + b.HasComment("Пользователи облака"); + + b.HasData( + new + { + Id = 1, + IdCompany = 1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role"); + + b.HasComment("Роли пользователей в системе"); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well"); + + b.HasComment("скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite"); + + b.HasComment("Композитная скважина"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation"); + + b.HasComment("Данные по операциям на скважине"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("integer") + .HasColumnName("code") + .HasComment("Код операции"); + + b.Property("Name") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.ToTable("t_well_operation_category"); + + b.HasComment("Справочник операций на скважине"); + + b.HasData( + new + { + Id = 1, + Code = 0, + Name = "Невозможно определить операцию" + }, + new + { + Id = 2, + Code = 0, + Name = "Роторное бурение" + }, + new + { + Id = 3, + Code = 0, + Name = "Слайдирование" + }, + new + { + Id = 4, + Code = 0, + Name = "Подъем с проработкой" + }, + new + { + Id = 5, + Code = 0, + Name = "Спуск с проработкой" + }, + new + { + Id = 6, + Code = 0, + Name = "Подъем с промывкой" + }, + new + { + Id = 7, + Code = 0, + Name = "Спуск с промывкой" + }, + new + { + Id = 8, + Code = 0, + Name = "Спуск в скважину" + }, + new + { + Id = 9, + Code = 0, + Name = "Спуск с вращением" + }, + new + { + Id = 10, + Code = 0, + Name = "Подъем из скважины" + }, + new + { + Id = 11, + Code = 0, + Name = "Подъем с вращением" + }, + new + { + Id = 12, + Code = 0, + Name = "Промывка в покое" + }, + new + { + Id = 13, + Code = 0, + Name = "Промывка с вращением" + }, + new + { + Id = 14, + Code = 0, + Name = "Удержание в клиньях" + }, + new + { + Id = 15, + Code = 0, + Name = "Неподвижное состояние" + }, + new + { + Id = 16, + Code = 0, + Name = "Вращение без циркуляции" + }, + new + { + Id = 17, + Code = 0, + Name = "На поверхности" + }, + new + { + Id = 18, + Code = 0, + Name = "Проработка перед наращиванием" + }, + new + { + Id = 19, + Code = 0, + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 1001, + Code = 0, + Name = "Бурение" + }, + new + { + Id = 1002, + Code = 0, + Name = "ГИС" + }, + new + { + Id = 1003, + Code = 0, + Name = "ГФР" + }, + new + { + Id = 1004, + Code = 0, + Name = "Монтаж ПВО" + }, + new + { + Id = 1005, + Code = 0, + Name = "Демонтаж ПВО" + }, + new + { + Id = 1006, + Code = 0, + Name = "Установка ФА" + }, + new + { + Id = 1007, + Code = 0, + Name = "Оборудование устья" + }, + new + { + Id = 1008, + Code = 0, + Name = "ОЗЦ" + }, + new + { + Id = 1011, + Code = 0, + Name = "Начало цикла строительства скважины" + }, + new + { + Id = 1012, + Code = 0, + Name = "Окончание цикла строительства скважины" + }, + new + { + Id = 1013, + Code = 0, + Name = "Опрессовка ПВО" + }, + new + { + Id = 1014, + Code = 0, + Name = "Опрессовка Ц.К." + }, + new + { + Id = 1015, + Code = 0, + Name = "Опрессовка ВЗД" + }, + new + { + Id = 1016, + Code = 0, + Name = "Перевод скв на другой тип промывочной жидкости" + }, + new + { + Id = 1017, + Code = 0, + Name = "Перезапись каротажа" + }, + new + { + Id = 1018, + Code = 0, + Name = "Перетяжка талевого каната" + }, + new + { + Id = 1019, + Code = 0, + Name = "Наращивание, промывка" + }, + new + { + Id = 1020, + Code = 0, + Name = "Подъем инструмента" + }, + new + { + Id = 1021, + Code = 0, + Name = "Подъем инструмента с промывкой" + }, + new + { + Id = 1022, + Code = 0, + Name = "Обратная проработка" + }, + new + { + Id = 1023, + Code = 0, + Name = "Сборка инструмента с мостков" + }, + new + { + Id = 1024, + Code = 0, + Name = "Подготовительные работы" + }, + new + { + Id = 1025, + Code = 0, + Name = "Сборка КНБК" + }, + new + { + Id = 1026, + Code = 0, + Name = "Разборка КНБК" + }, + new + { + Id = 1027, + Code = 0, + Name = "Промывка" + }, + new + { + Id = 1028, + Code = 0, + Name = "Промежуточная промывка" + }, + new + { + Id = 1029, + Code = 0, + Name = "Прокачка пачек" + }, + new + { + Id = 1030, + Code = 0, + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 1031, + Code = 0, + Name = "Ремонт" + }, + new + { + Id = 1032, + Code = 0, + Name = "Спуск инструмента" + }, + new + { + Id = 1033, + Code = 0, + Name = "Спуск инструмента с промывкой" + }, + new + { + Id = 1034, + Code = 0, + Name = "Прямая проработка" + }, + new + { + Id = 1035, + Code = 0, + Name = "Принудительная проработка" + }, + new + { + Id = 1037, + Code = 0, + Name = "Тех СПО-подъем" + }, + new + { + Id = 1038, + Code = 0, + Name = "Тех СПО-спуск" + }, + new + { + Id = 1039, + Code = 0, + Name = "Техническое обслуживание" + }, + new + { + Id = 1040, + Code = 0, + Name = "Цементаж" + }, + new + { + Id = 1041, + Code = 0, + Name = "Шаблонировка ствола" + }, + new + { + Id = 1042, + Code = 0, + Name = "Геологическое осложнение" + }, + new + { + Id = 1043, + Code = 0, + Name = "НПВ" + }, + new + { + Id = 1044, + Code = 0, + Name = "ВМР" + }, + new + { + Id = 1045, + Code = 0, + Name = "Прочее" + }, + new + { + Id = 1046, + Code = 0, + Name = "Спуск КНБК" + }, + new + { + Id = 1047, + Code = 0, + Name = "Подъем КНБК" + }, + new + { + Id = 1048, + Code = 0, + Name = "Спуск ОК" + }, + new + { + Id = 1050, + Code = 0, + Name = "Промывка при спуске ОК" + }, + new + { + Id = 1051, + Code = 0, + Name = "Замер ТС" + }, + new + { + Id = 1052, + Code = 0, + Name = "Тех. отстой" + }, + new + { + Id = 1053, + Code = 0, + Name = "Циркуляция и Обработка БР" + }, + new + { + Id = 1054, + Code = 0, + Name = "Срезка ствола" + }, + new + { + Id = 1055, + Code = 0, + Name = "Вспомогательные работы" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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.HasKey("Id"); + + b.ToTable("t_well_section_type"); + + b.HasComment("конструкция секции скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол" + }, + new + { + Id = 2, + Caption = "Направление" + }, + new + { + Id = 3, + Caption = "Кондуктор" + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна" + }, + new + { + Id = 5, + Caption = "Транспортный ствол" + }, + new + { + Id = 6, + Caption = "Хвостовик" + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2" + }, + new + { + Id = 8, + Caption = "Направление 2" + }, + new + { + Id = 9, + Caption = "Кондуктор 2" + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2" + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2" + }, + new + { + Id = 12, + Caption = "Хвостовик 2" + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3" + }, + new + { + Id = 14, + Caption = "Направление 3" + }, + new + { + Id = 15, + Caption = "Кондуктор 3" + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3" + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3" + }, + new + { + Id = 18, + Caption = "Хвостовик 3" + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4" + }, + new + { + Id = 20, + Caption = "Направление 4" + }, + new + { + Id = 21, + Caption = "Кондуктор 4" + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4" + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4" + }, + new + { + Id = 24, + Caption = "Хвостовик 4" + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5" + }, + new + { + Id = 26, + Caption = "Направление 5" + }, + new + { + Id = 27, + Caption = "Кондуктор 5" + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5" + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5" + }, + new + { + Id = 30, + Caption = "Хвостовик 5" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type"); + + b.HasComment("конструкция скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillParams", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("DrillParamsCollection") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_drill_params_t_well_section_type_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType"); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("DrillParamsCollection"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20220719050018_Rename_WITS_base_table.cs b/AsbCloudDb/Migrations/20220719050018_Rename_WITS_base_table.cs new file mode 100644 index 00000000..c0f7471c --- /dev/null +++ b/AsbCloudDb/Migrations/20220719050018_Rename_WITS_base_table.cs @@ -0,0 +1,185 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + public partial class Rename_WITS_base_table : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_t_telemetry_wits_1_RecordBase_id_telemetry_date", + table: "t_telemetry_wits_1"); + + migrationBuilder.DropForeignKey( + name: "FK_t_telemetry_wits_50_RecordBase_id_telemetry_date", + table: "t_telemetry_wits_50"); + + migrationBuilder.DropForeignKey( + name: "FK_t_telemetry_wits_60_RecordBase_id_telemetry_date", + table: "t_telemetry_wits_60"); + + migrationBuilder.DropForeignKey( + name: "FK_t_telemetry_wits_61_RecordBase_id_telemetry_date", + table: "t_telemetry_wits_61"); + + migrationBuilder.DropForeignKey( + name: "FK_t_telemetry_wits_7_RecordBase_id_telemetry_date", + table: "t_telemetry_wits_7"); + + migrationBuilder.DropForeignKey( + name: "FK_t_telemetry_wits_8_RecordBase_id_telemetry_date", + table: "t_telemetry_wits_8"); + + migrationBuilder.DropPrimaryKey( + name: "PK_RecordBase", + table: "RecordBase"); + + migrationBuilder.RenameTable( + name: "RecordBase", + newName: "t_telemetry_wits_base"); + + migrationBuilder.AddPrimaryKey( + name: "PK_t_telemetry_wits_base", + table: "t_telemetry_wits_base", + columns: new[] { "id_telemetry", "date" }); + + migrationBuilder.AddForeignKey( + name: "FK_t_telemetry_wits_1_t_telemetry_wits_base_id_telemetry_date", + table: "t_telemetry_wits_1", + columns: new[] { "id_telemetry", "date" }, + principalTable: "t_telemetry_wits_base", + principalColumns: new[] { "id_telemetry", "date" }, + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_t_telemetry_wits_50_t_telemetry_wits_base_id_telemetry_date", + table: "t_telemetry_wits_50", + columns: new[] { "id_telemetry", "date" }, + principalTable: "t_telemetry_wits_base", + principalColumns: new[] { "id_telemetry", "date" }, + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_t_telemetry_wits_60_t_telemetry_wits_base_id_telemetry_date", + table: "t_telemetry_wits_60", + columns: new[] { "id_telemetry", "date" }, + principalTable: "t_telemetry_wits_base", + principalColumns: new[] { "id_telemetry", "date" }, + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_t_telemetry_wits_61_t_telemetry_wits_base_id_telemetry_date", + table: "t_telemetry_wits_61", + columns: new[] { "id_telemetry", "date" }, + principalTable: "t_telemetry_wits_base", + principalColumns: new[] { "id_telemetry", "date" }, + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_t_telemetry_wits_7_t_telemetry_wits_base_id_telemetry_date", + table: "t_telemetry_wits_7", + columns: new[] { "id_telemetry", "date" }, + principalTable: "t_telemetry_wits_base", + principalColumns: new[] { "id_telemetry", "date" }, + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_t_telemetry_wits_8_t_telemetry_wits_base_id_telemetry_date", + table: "t_telemetry_wits_8", + columns: new[] { "id_telemetry", "date" }, + principalTable: "t_telemetry_wits_base", + principalColumns: new[] { "id_telemetry", "date" }, + onDelete: ReferentialAction.Cascade); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_t_telemetry_wits_1_t_telemetry_wits_base_id_telemetry_date", + table: "t_telemetry_wits_1"); + + migrationBuilder.DropForeignKey( + name: "FK_t_telemetry_wits_50_t_telemetry_wits_base_id_telemetry_date", + table: "t_telemetry_wits_50"); + + migrationBuilder.DropForeignKey( + name: "FK_t_telemetry_wits_60_t_telemetry_wits_base_id_telemetry_date", + table: "t_telemetry_wits_60"); + + migrationBuilder.DropForeignKey( + name: "FK_t_telemetry_wits_61_t_telemetry_wits_base_id_telemetry_date", + table: "t_telemetry_wits_61"); + + migrationBuilder.DropForeignKey( + name: "FK_t_telemetry_wits_7_t_telemetry_wits_base_id_telemetry_date", + table: "t_telemetry_wits_7"); + + migrationBuilder.DropForeignKey( + name: "FK_t_telemetry_wits_8_t_telemetry_wits_base_id_telemetry_date", + table: "t_telemetry_wits_8"); + + migrationBuilder.DropPrimaryKey( + name: "PK_t_telemetry_wits_base", + table: "t_telemetry_wits_base"); + + migrationBuilder.RenameTable( + name: "t_telemetry_wits_base", + newName: "RecordBase"); + + migrationBuilder.AddPrimaryKey( + name: "PK_RecordBase", + table: "RecordBase", + columns: new[] { "id_telemetry", "date" }); + + migrationBuilder.AddForeignKey( + name: "FK_t_telemetry_wits_1_RecordBase_id_telemetry_date", + table: "t_telemetry_wits_1", + columns: new[] { "id_telemetry", "date" }, + principalTable: "RecordBase", + principalColumns: new[] { "id_telemetry", "date" }, + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_t_telemetry_wits_50_RecordBase_id_telemetry_date", + table: "t_telemetry_wits_50", + columns: new[] { "id_telemetry", "date" }, + principalTable: "RecordBase", + principalColumns: new[] { "id_telemetry", "date" }, + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_t_telemetry_wits_60_RecordBase_id_telemetry_date", + table: "t_telemetry_wits_60", + columns: new[] { "id_telemetry", "date" }, + principalTable: "RecordBase", + principalColumns: new[] { "id_telemetry", "date" }, + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_t_telemetry_wits_61_RecordBase_id_telemetry_date", + table: "t_telemetry_wits_61", + columns: new[] { "id_telemetry", "date" }, + principalTable: "RecordBase", + principalColumns: new[] { "id_telemetry", "date" }, + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_t_telemetry_wits_7_RecordBase_id_telemetry_date", + table: "t_telemetry_wits_7", + columns: new[] { "id_telemetry", "date" }, + principalTable: "RecordBase", + principalColumns: new[] { "id_telemetry", "date" }, + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_t_telemetry_wits_8_RecordBase_id_telemetry_date", + table: "t_telemetry_wits_8", + columns: new[] { "id_telemetry", "date" }, + principalTable: "RecordBase", + principalColumns: new[] { "id_telemetry", "date" }, + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/AsbCloudDb/Model/WITS/RecordBase.cs b/AsbCloudDb/Model/WITS/RecordBase.cs index 56325cbe..684fa11f 100644 --- a/AsbCloudDb/Model/WITS/RecordBase.cs +++ b/AsbCloudDb/Model/WITS/RecordBase.cs @@ -6,6 +6,7 @@ namespace AsbCloudDb.Model.WITS /// /// This is base class for all WITS-0 records /// + [Table("t_telemetry_wits_base")] public abstract class RecordBase : ITelemetryData { [Column("id_telemetry")] From 48cee90d91c23cfffde712e654943a0e631af613 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Tue, 19 Jul 2022 10:29:38 +0500 Subject: [PATCH 21/34] Add DetectorFlashing --- AsbCloudDb/EFExtentions.cs | 17 +- ...12_Add_Well_operation_Flashing.Designer.cs | 6089 +++++++++++++++++ ...20719050312_Add_Well_operation_Flashing.cs | 25 + .../AsbCloudDbContextModelSnapshot.cs | 8 +- AsbCloudDb/Model/AsbCloudDbContext.cs | 1 + .../Services/AuthService.cs | 7 +- .../Detectors/DetectorAbstract.cs | 21 + .../Detectors/DetectorFlashing.cs | 56 + .../OperationDetectionBackgroundService.cs | 1 + .../Промывка перед наращиванием.md | 26 + .../Services/WitsRecordRepository.cs | 6 +- 11 files changed, 6249 insertions(+), 8 deletions(-) create mode 100644 AsbCloudDb/Migrations/20220719050312_Add_Well_operation_Flashing.Designer.cs create mode 100644 AsbCloudDb/Migrations/20220719050312_Add_Well_operation_Flashing.cs create mode 100644 AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs create mode 100644 AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка перед наращиванием.md diff --git a/AsbCloudDb/EFExtentions.cs b/AsbCloudDb/EFExtentions.cs index 291ad287..db66be04 100644 --- a/AsbCloudDb/EFExtentions.cs +++ b/AsbCloudDb/EFExtentions.cs @@ -65,7 +65,7 @@ namespace AsbCloudDb { var factory = GetQueryStringFactory(dbSet); var query = factory.MakeInsertOrUpdateSql(items); - + return database.ExecuteSqlRawAsync(query, token); } @@ -130,7 +130,10 @@ namespace AsbCloudDb pk = pkColsNames is null ? string.Empty : $"({string.Join(", ", pkColsNames)})"; TableName = dbset.EntityType.GetTableName()!; - getters = properties.Select(p => p.GetGetter()); + getters = properties + .Where(p => !p.IsShadowProperty()) + .Select(p => p.GetGetter()).ToList(); + Columns = properties.Select(p => $"\"{p.GetColumnBaseName()}\""); var colunmsString = $"({string.Join(", ", Columns)})"; @@ -175,13 +178,21 @@ namespace AsbCloudDb private static string FormatValue(object? v) => v switch { - string vStr => $"'{vStr}'", + string vStr => $"'{EscapeCurlyBraces(vStr)}'", DateTime vDate => $"'{FormatDateValue(vDate)}'", DateTimeOffset vDate => $"'{FormatDateValue(vDate.UtcDateTime)}'", IFormattable vFormattable => FormatFormattableValue(vFormattable), _ => System.Text.Json.JsonSerializer.Serialize(v), }; + private static string EscapeCurlyBraces(string vStr) + { + var result = vStr + .Replace("{", "{{") + .Replace("}", "}}"); + return result; + } + private static string FormatFormattableValue(IFormattable v) => v switch { diff --git a/AsbCloudDb/Migrations/20220719050312_Add_Well_operation_Flashing.Designer.cs b/AsbCloudDb/Migrations/20220719050312_Add_Well_operation_Flashing.Designer.cs new file mode 100644 index 00000000..0ecef13a --- /dev/null +++ b/AsbCloudDb/Migrations/20220719050312_Add_Well_operation_Flashing.Designer.cs @@ -0,0 +1,6089 @@ +// +using System; +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("20220719050312_Add_Well_operation_Flashing")] + partial class Add_Well_operation_Flashing + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "6.0.1") + .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") + .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") + .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") + .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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недрапользователь" + }, + new + { + Id = 2, + Caption = "Буровой подрядчик" + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date") + .HasComment("Дата отчёта"); + + b.Property("Info") + .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") + .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") + .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("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.DrillFlowChart", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellOperationCategory") + .HasColumnType("integer") + .HasColumnName("id_operation_category") + .HasComment("Id типа операции"); + + b.Property("LastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_update") + .HasComment("Дата последнего изменения"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellOperationCategory"); + + b.ToTable("t_drill_flow_chart"); + + 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.DrillParams", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadAvg") + .HasColumnType("double precision") + .HasColumnName("axial_load_avg") + .HasComment("Средняя нагрузка"); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowAvg") + .HasColumnType("double precision") + .HasColumnName("flow_avg") + .HasComment("Средний расход"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Id с типом секции скважины"); + + b.Property("PressureAvg") + .HasColumnType("double precision") + .HasColumnName("pressure_avg") + .HasComment("Среднее давление"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_avg") + .HasComment("Средние обороты на ВСП"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_avg") + .HasComment("Средний момент на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_drill_params"); + + b.HasComment("Режим бурения в секции (диапазоны параметров бурения)"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .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 = "Программы цементирования обсадных колонн" + }); + }); + + 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") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("PublishInfo") + .HasColumnType("jsonb") + .HasColumnName("publish_info") + .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.Measure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .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") + .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.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") + .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 = 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" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("IdCompany", "IdWell"); + + b.HasIndex("IdWell"); + + b.ToTable("t_relation_company_well"); + + b.HasComment("отношение скважин и компаний"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part"); + + b.HasComment("Отношение пользователей и частей ПБ"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission"); + + b.HasComment("Отношение ролей пользователей и разрешений доступа"); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role"); + + b.HasComment("Отношение ролей к ролям"); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role"); + + b.HasComment("Отношение пользователей и ролей"); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property"); + + b.HasComment("Отчеты с данными по буровым"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule"); + + b.HasComment("График работы бурильщика"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest"); + + b.HasComment("Запросы на изменение уставок панели оператора"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry"); + + b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub"); + + b.HasComment("набор основных данных по SAUB"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToView("mw_telemetry_datas_saub_stat"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("BreakAngleK") + .HasColumnType("real") + .HasColumnName("break_angle_k") + .HasComment("Коэффициент для расчёта за какой угол нужно тормозить"); + + b.Property("BreakAngleLeft") + .HasColumnType("real") + .HasColumnName("break_angle_left") + .HasComment("Угол торможения влево при работе по моменту"); + + b.Property("EncoderResolution") + .HasColumnType("real") + .HasColumnName("encoder_resolution") + .HasComment("Разрешение энкодера"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PidMuxTorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("pid_mux_torque_left_limit") + .HasComment(" Момент при котором определяется ехать назад по моменту или по скорости"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("Ratio") + .HasColumnType("real") + .HasColumnName("ratio") + .HasComment(" Коэффициент редукции редуктора"); + + b.Property("ReverseKTorque") + .HasColumnType("real") + .HasColumnName("reverse_k_torque") + .HasComment("Коэффициент на который умножается момент, для того чтобы система поняла что мы движемся в обратную сторону"); + + b.Property("ReverseSpeedSpZeroTime") + .HasColumnType("smallint") + .HasColumnName("reverse_speed_sp_zero_time") + .HasComment("Время выдачи сигнала нулевой скорости на при смене направления"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("RotorTorqueAvg") + .HasColumnType("real") + .HasColumnName("rotor_torque_avg") + .HasComment("Момент в роторе средний"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.Property("TopDriveSpeed") + .HasColumnType("real") + .HasColumnName("top_drive_speed") + .HasComment("Скорость СВП"); + + b.Property("TopDriveSpeedErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_err"); + + b.Property("TopDriveSpeedMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_max") + .HasComment("верхний предел"); + + b.Property("TopDriveSpeedMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_min") + .HasComment("нижний предел"); + + b.Property("TopDriveSpeedOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_offset") + .HasComment("смещение"); + + b.Property("TopDriveSpeedSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from") + .HasComment("Заданная скорость c СВП"); + + b.Property("TopDriveSpeedSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_from_err"); + + b.Property("TopDriveSpeedSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_max"); + + b.Property("TopDriveSpeedSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_min"); + + b.Property("TopDriveSpeedSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_offset"); + + b.Property("TopDriveSpeedSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to") + .HasComment("Задание скорости на СВП"); + + b.Property("TopDriveSpeedSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_to_err"); + + b.Property("TopDriveSpeedSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_max"); + + b.Property("TopDriveSpeedSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_min"); + + b.Property("TopDriveSpeedSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_offset"); + + b.Property("TopDriveTorque") + .HasColumnType("real") + .HasColumnName("top_drive_torque") + .HasComment("Момент СВП"); + + b.Property("TopDriveTorqueErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_err"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_max"); + + b.Property("TopDriveTorqueMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_min"); + + b.Property("TopDriveTorqueOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_offset"); + + b.Property("TopDriveTorqueSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from") + .HasComment("Заданный момент c СВП"); + + b.Property("TopDriveTorqueSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_from_err"); + + b.Property("TopDriveTorqueSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_max"); + + b.Property("TopDriveTorqueSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_min"); + + b.Property("TopDriveTorqueSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_offset"); + + b.Property("TopDriveTorqueSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to") + .HasComment("Задание момента на СВП"); + + b.Property("TopDriveTorqueSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_to_err"); + + b.Property("TopDriveTorqueSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_max"); + + b.Property("TopDriveTorqueSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_min"); + + b.Property("TopDriveTorqueSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_offset"); + + b.Property("TorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("torque_left_limit") + .HasComment("Ограничение крутящего момента влево"); + + b.Property("TorqueRampTime") + .HasColumnType("real") + .HasColumnName("torque_ramp_time") + .HasComment("Время нарастания момента"); + + b.Property("TorqueRightLimit") + .HasColumnType("real") + .HasColumnName("torque_right_limit") + .HasComment("Ограничение крутящего момента вправо"); + + b.Property("TorqueStarting") + .HasColumnType("real") + .HasColumnName("torque_starting") + .HasComment("Страгивающий момент"); + + b.Property("TurnLeftOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_angle") + .HasComment("Доворот по градусам единожды влево"); + + b.Property("TurnLeftOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_revols") + .HasComment("Доворот по оборотам единожды влево"); + + b.Property("TurnLeftOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_torque") + .HasComment("Доворот по моменту единожды влево"); + + b.Property("TurnRightOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_angle") + .HasComment("Доворот по градусам единожды вправо"); + + b.Property("TurnRightOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_revols") + .HasComment("Доворот по оборотам единожды вправо"); + + b.Property("TurnRightOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_torque") + .HasComment("Доворот по моменту единожды вправо"); + + b.Property("UnlockBySectorOut") + .HasColumnType("real") + .HasColumnName("unlock_by_sector_out") + .HasComment(" Градус отклонения от сектора для автоматического сброса блокировки"); + + b.Property("Ver") + .HasColumnType("real") + .HasColumnName("ver") + .HasComment("Версия ПО ПЛК"); + + b.Property("W2800") + .HasColumnType("smallint") + .HasColumnName("w2800") + .HasComment("Установка нуля энкодера"); + + b.Property("W2808") + .HasColumnType("smallint") + .HasColumnName("w2808") + .HasComment("Неисправность энкодера"); + + b.Property("W2810") + .HasColumnType("smallint") + .HasColumnName("w2810") + .HasComment(" автоматический сброс блокировки"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin"); + + b.HasComment("набор основных данных по SpinMaster"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event"); + + b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message"); + + b.HasComment("Сообщения на буровых"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user"); + + b.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n100 - удален"); + + b.Property("Login") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user"); + + b.HasComment("Пользователи облака"); + + b.HasData( + new + { + Id = 1, + IdCompany = 1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role"); + + b.HasComment("Роли пользователей в системе"); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well"); + + b.HasComment("скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite"); + + b.HasComment("Композитная скважина"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation"); + + b.HasComment("Данные по операциям на скважине"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("integer") + .HasColumnName("code") + .HasComment("Код операции"); + + b.Property("Name") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.ToTable("t_well_operation_category"); + + b.HasComment("Справочник операций на скважине"); + + b.HasData( + new + { + Id = 1, + Code = 0, + Name = "Невозможно определить операцию" + }, + new + { + Id = 2, + Code = 0, + Name = "Роторное бурение" + }, + new + { + Id = 3, + Code = 0, + Name = "Слайдирование" + }, + new + { + Id = 4, + Code = 0, + Name = "Подъем с проработкой" + }, + new + { + Id = 5, + Code = 0, + Name = "Спуск с проработкой" + }, + new + { + Id = 6, + Code = 0, + Name = "Подъем с промывкой" + }, + new + { + Id = 7, + Code = 0, + Name = "Спуск с промывкой" + }, + new + { + Id = 8, + Code = 0, + Name = "Спуск в скважину" + }, + new + { + Id = 9, + Code = 0, + Name = "Спуск с вращением" + }, + new + { + Id = 10, + Code = 0, + Name = "Подъем из скважины" + }, + new + { + Id = 11, + Code = 0, + Name = "Подъем с вращением" + }, + new + { + Id = 12, + Code = 0, + Name = "Промывка в покое" + }, + new + { + Id = 13, + Code = 0, + Name = "Промывка с вращением" + }, + new + { + Id = 14, + Code = 0, + Name = "Удержание в клиньях" + }, + new + { + Id = 15, + Code = 0, + Name = "Неподвижное состояние" + }, + new + { + Id = 16, + Code = 0, + Name = "Вращение без циркуляции" + }, + new + { + Id = 17, + Code = 0, + Name = "На поверхности" + }, + new + { + Id = 18, + Code = 0, + Name = "Проработка перед наращиванием" + }, + new + { + Id = 19, + Code = 0, + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 20, + Code = 0, + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 1001, + Code = 0, + Name = "Бурение" + }, + new + { + Id = 1002, + Code = 0, + Name = "ГИС" + }, + new + { + Id = 1003, + Code = 0, + Name = "ГФР" + }, + new + { + Id = 1004, + Code = 0, + Name = "Монтаж ПВО" + }, + new + { + Id = 1005, + Code = 0, + Name = "Демонтаж ПВО" + }, + new + { + Id = 1006, + Code = 0, + Name = "Установка ФА" + }, + new + { + Id = 1007, + Code = 0, + Name = "Оборудование устья" + }, + new + { + Id = 1008, + Code = 0, + Name = "ОЗЦ" + }, + new + { + Id = 1011, + Code = 0, + Name = "Начало цикла строительства скважины" + }, + new + { + Id = 1012, + Code = 0, + Name = "Окончание цикла строительства скважины" + }, + new + { + Id = 1013, + Code = 0, + Name = "Опрессовка ПВО" + }, + new + { + Id = 1014, + Code = 0, + Name = "Опрессовка Ц.К." + }, + new + { + Id = 1015, + Code = 0, + Name = "Опрессовка ВЗД" + }, + new + { + Id = 1016, + Code = 0, + Name = "Перевод скв на другой тип промывочной жидкости" + }, + new + { + Id = 1017, + Code = 0, + Name = "Перезапись каротажа" + }, + new + { + Id = 1018, + Code = 0, + Name = "Перетяжка талевого каната" + }, + new + { + Id = 1019, + Code = 0, + Name = "Наращивание, промывка" + }, + new + { + Id = 1020, + Code = 0, + Name = "Подъем инструмента" + }, + new + { + Id = 1021, + Code = 0, + Name = "Подъем инструмента с промывкой" + }, + new + { + Id = 1022, + Code = 0, + Name = "Обратная проработка" + }, + new + { + Id = 1023, + Code = 0, + Name = "Сборка инструмента с мостков" + }, + new + { + Id = 1024, + Code = 0, + Name = "Подготовительные работы" + }, + new + { + Id = 1025, + Code = 0, + Name = "Сборка КНБК" + }, + new + { + Id = 1026, + Code = 0, + Name = "Разборка КНБК" + }, + new + { + Id = 1027, + Code = 0, + Name = "Промывка" + }, + new + { + Id = 1028, + Code = 0, + Name = "Промежуточная промывка" + }, + new + { + Id = 1029, + Code = 0, + Name = "Прокачка пачек" + }, + new + { + Id = 1030, + Code = 0, + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 1031, + Code = 0, + Name = "Ремонт" + }, + new + { + Id = 1032, + Code = 0, + Name = "Спуск инструмента" + }, + new + { + Id = 1033, + Code = 0, + Name = "Спуск инструмента с промывкой" + }, + new + { + Id = 1034, + Code = 0, + Name = "Прямая проработка" + }, + new + { + Id = 1035, + Code = 0, + Name = "Принудительная проработка" + }, + new + { + Id = 1037, + Code = 0, + Name = "Тех СПО-подъем" + }, + new + { + Id = 1038, + Code = 0, + Name = "Тех СПО-спуск" + }, + new + { + Id = 1039, + Code = 0, + Name = "Техническое обслуживание" + }, + new + { + Id = 1040, + Code = 0, + Name = "Цементаж" + }, + new + { + Id = 1041, + Code = 0, + Name = "Шаблонировка ствола" + }, + new + { + Id = 1042, + Code = 0, + Name = "Геологическое осложнение" + }, + new + { + Id = 1043, + Code = 0, + Name = "НПВ" + }, + new + { + Id = 1044, + Code = 0, + Name = "ВМР" + }, + new + { + Id = 1045, + Code = 0, + Name = "Прочее" + }, + new + { + Id = 1046, + Code = 0, + Name = "Спуск КНБК" + }, + new + { + Id = 1047, + Code = 0, + Name = "Подъем КНБК" + }, + new + { + Id = 1048, + Code = 0, + Name = "Спуск ОК" + }, + new + { + Id = 1050, + Code = 0, + Name = "Промывка при спуске ОК" + }, + new + { + Id = 1051, + Code = 0, + Name = "Замер ТС" + }, + new + { + Id = 1052, + Code = 0, + Name = "Тех. отстой" + }, + new + { + Id = 1053, + Code = 0, + Name = "Циркуляция и Обработка БР" + }, + new + { + Id = 1054, + Code = 0, + Name = "Срезка ствола" + }, + new + { + Id = 1055, + Code = 0, + Name = "Вспомогательные работы" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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.HasKey("Id"); + + b.ToTable("t_well_section_type"); + + b.HasComment("конструкция секции скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол" + }, + new + { + Id = 2, + Caption = "Направление" + }, + new + { + Id = 3, + Caption = "Кондуктор" + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна" + }, + new + { + Id = 5, + Caption = "Транспортный ствол" + }, + new + { + Id = 6, + Caption = "Хвостовик" + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2" + }, + new + { + Id = 8, + Caption = "Направление 2" + }, + new + { + Id = 9, + Caption = "Кондуктор 2" + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2" + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2" + }, + new + { + Id = 12, + Caption = "Хвостовик 2" + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3" + }, + new + { + Id = 14, + Caption = "Направление 3" + }, + new + { + Id = 15, + Caption = "Кондуктор 3" + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3" + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3" + }, + new + { + Id = 18, + Caption = "Хвостовик 3" + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4" + }, + new + { + Id = 20, + Caption = "Направление 4" + }, + new + { + Id = 21, + Caption = "Кондуктор 4" + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4" + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4" + }, + new + { + Id = 24, + Caption = "Хвостовик 4" + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5" + }, + new + { + Id = 26, + Caption = "Направление 5" + }, + new + { + Id = 27, + Caption = "Кондуктор 5" + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5" + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5" + }, + new + { + Id = 30, + Caption = "Хвостовик 5" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type"); + + b.HasComment("конструкция скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillParams", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("DrillParamsCollection") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_drill_params_t_well_section_type_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType"); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("DrillParamsCollection"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20220719050312_Add_Well_operation_Flashing.cs b/AsbCloudDb/Migrations/20220719050312_Add_Well_operation_Flashing.cs new file mode 100644 index 00000000..7450b85b --- /dev/null +++ b/AsbCloudDb/Migrations/20220719050312_Add_Well_operation_Flashing.cs @@ -0,0 +1,25 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + public partial class Add_Well_operation_Flashing : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.InsertData( + table: "t_well_operation_category", + columns: new[] { "id", "code", "name" }, + values: new object[] { 20, 0, "Промывка перед наращиванием" }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 20); + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index 93a2a636..b2302d12 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -4175,6 +4175,12 @@ namespace AsbCloudDb.Migrations Name = "Шаблонировка перед наращиванием" }, new + { + Id = 20, + Code = 0, + Name = "Шаблонировка перед наращиванием" + }, + new { Id = 1001, Code = 0, @@ -4732,7 +4738,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "DateTime"); - b.ToTable("RecordBase"); + b.ToTable("t_telemetry_wits_base"); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index 3fc9fa73..a4322a26 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -683,6 +683,7 @@ namespace AsbCloudDb.Model new WellOperationCategory {Id = 17, Name = "На поверхности", Code = 0 }, new WellOperationCategory {Id = 18, Name = "Проработка перед наращиванием", Code = 0 }, new WellOperationCategory {Id = 19, Name = "Шаблонировка перед наращиванием", Code = 0 }, + new WellOperationCategory {Id = 20, Name = "Промывка перед наращиванием", Code = 0 }, // Операции ручного ввода new WellOperationCategory {Id = 1001, Name = "Бурение", Code = 0 }, diff --git a/AsbCloudInfrastructure/Services/AuthService.cs b/AsbCloudInfrastructure/Services/AuthService.cs index d1946d86..084962dd 100644 --- a/AsbCloudInfrastructure/Services/AuthService.cs +++ b/AsbCloudInfrastructure/Services/AuthService.cs @@ -195,10 +195,13 @@ namespace AsbCloudInfrastructure.Services private bool CheckPassword(string passwordHash, string password) { - if (passwordHash.Length == 0 && password.Length == 0) + if (passwordHash?.Length == 0 && password.Length == 0) return true; - if (passwordHash.Length < PasswordSaltLength) + if (passwordHash?.Length < PasswordSaltLength) + return false; + + if (passwordHash is null) return false; var salt = passwordHash[0..PasswordSaltLength]; diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs index 34f52cea..e62d83dc 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs @@ -258,6 +258,27 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors } return false; } + + protected static bool DeviatesFromBegin( + DetectableTelemetry[] telemetry, + Func getter, + int begin, + int count, + double deviation) + { + var beginPointValue = getter(telemetry[begin]); + var end = begin + count; + end = end < telemetry.Length ? end : telemetry.Length; + var step = count > 15 ? count / 5 : count > 3 ? 3 : 1; + for (var i = begin; i < end; i += step) + { + var item = telemetry[i]; + var itemValue = getter(item); + if (Math.Abs(beginPointValue - itemValue) > deviation) + return true; + } + return false; + } } #nullable disable diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs new file mode 100644 index 00000000..f0fb8a0d --- /dev/null +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs @@ -0,0 +1,56 @@ +using AsbCloudDb.Model; + +namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors +{ +#nullable enable + + /// + /// Промывка перед наращиванием + /// + internal class DetectorFlashing : DetectorAbstract + { + public DetectorFlashing() + : base(20) { } + + protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end) + => CalcDeltaMinutes(telemetry, begin, end); + + protected override bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation) + { + if (!((previousOperation?.IdCategory == 2) || + (previousOperation?.IdCategory == 3))) + return false; + + var point0 = telemetry[position]; + var delta = point0.WellDepth - point0.BitDepth; + if (delta > 0.05d) + return false; + + if (point0.Pressure < 15) + return false; + + if (point0.BlockPosition > 3) + return false; + + return true; + } + + protected override bool DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation) + { + var point0 = telemetry[position]; + var delta = point0.WellDepth - point0.BitDepth; + if ((delta > 0.03d ) + && (point0.Pressure > 15) + && DeviatesFromBegin(telemetry, t=>t.BlockPosition, position, 300, 1)) + return true; + + return false; + } + + protected override bool IsValid(DetectableTelemetry[] telemetry, int begin, int end) + => IsValidByWellDepthDoesNotChange(telemetry, begin, end); + } + +#nullable disable +} + diff --git a/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs b/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs index 0cb008c4..6b78a8a8 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs @@ -25,6 +25,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations new DetectorDevelopment(), new DetectorTemplating(), new DetectorSlipsTime(), + new DetectorFlashing(), }; public OperationDetectionBackgroundService(IConfiguration configuration) diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка перед наращиванием.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка перед наращиванием.md new file mode 100644 index 00000000..8be52a7a --- /dev/null +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка перед наращиванием.md @@ -0,0 +1,26 @@ +# Алгоритм определения промывки перед проработкой/ шаблонировкой перед наращиванием + +## Описание + +Промывка перед проработкой/ шаблонировкой перед наращиванием – операция, во время которой после добуривания очередной трубы происходит снижение осевой нагрузки и дифференциального давления, талевый блок остается условно неподвижным. + +Проработка перед наращиванием определяется как время между: +- окончанием операции бурения (ротор/ слайд/ ручное бурение) +- началом операции проработки/ шаблонировки перед наращивании + +## Метод определения + + Признак начала операции = + ( предыдущая операция == бурение в роторе или слайде) + ( расстояние от долота до забоя < 0,05м ) И + ( давление > 15 атм ) И + ( положение блока < 3м ) + + Признак окончания операции = + ( расстояние от долота до забоя > 0.03м ) И + ( давление > 15 атм ) И + ( высота блока изменяется больше чем на 1м в течении 300 сек с начала операции); + + +## Ключевой параметр +Продолжительность операции. diff --git a/AsbCloudInfrastructure/Services/WitsRecordRepository.cs b/AsbCloudInfrastructure/Services/WitsRecordRepository.cs index 88ec6ebf..e577ac0c 100644 --- a/AsbCloudInfrastructure/Services/WitsRecordRepository.cs +++ b/AsbCloudInfrastructure/Services/WitsRecordRepository.cs @@ -1,4 +1,5 @@ using AsbCloudApp.Services; +using AsbCloudDb; using AsbCloudDb.Model; using Mapster; using Microsoft.EntityFrameworkCore; @@ -71,8 +72,9 @@ namespace AsbCloudInfrastructure.Services return Task.CompletedTask; var timezoneHours = telemetryService.GetTimezone(idTelemetry).Hours; - var entities = dtos.Select(dto => Convert(dto, idTelemetry, timezoneHours)); - + var entities = dtos + .DistinctBy(d => d.DateTime) + .Select(dto => Convert(dto, idTelemetry, timezoneHours)); dbset.AddRange(entities); return db.SaveChangesAsync(token); } From 39b3753bd3f874849899bd30f58372383ae426cb Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Wed, 20 Jul 2022 09:49:36 +0500 Subject: [PATCH 22/34] Add Detector Static Surveying MWD --- ...Well_operation_StaticSurveying.Designer.cs | 6095 +++++++++++++++++ ...5738_Add_Well_operation_StaticSurveying.cs | 39 + .../AsbCloudDbContextModelSnapshot.cs | 8 +- AsbCloudDb/Model/AsbCloudDbContext.cs | 1 + .../Detectors/DetectorAbstract.cs | 21 + .../Detectors/DetectorFlashing.cs | 3 +- .../Detectors/DetectorRotor.cs | 4 +- .../Detectors/DetectorSlide.cs | 4 +- .../Detectors/DetectorStaticSurveying.cs | 70 + .../OperationDetectionBackgroundService.cs | 1 + .../Specifications/Бурение ротор и слайд.md | 4 +- .../Промывка перед наращиванием.md | 2 +- .../Статический замер телесистемы.md | 21 + 13 files changed, 6261 insertions(+), 12 deletions(-) create mode 100644 AsbCloudDb/Migrations/20220719095738_Add_Well_operation_StaticSurveying.Designer.cs create mode 100644 AsbCloudDb/Migrations/20220719095738_Add_Well_operation_StaticSurveying.cs create mode 100644 AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorStaticSurveying.cs create mode 100644 AsbCloudInfrastructure/Services/DetectOperations/Specifications/Статический замер телесистемы.md diff --git a/AsbCloudDb/Migrations/20220719095738_Add_Well_operation_StaticSurveying.Designer.cs b/AsbCloudDb/Migrations/20220719095738_Add_Well_operation_StaticSurveying.Designer.cs new file mode 100644 index 00000000..3a6ce121 --- /dev/null +++ b/AsbCloudDb/Migrations/20220719095738_Add_Well_operation_StaticSurveying.Designer.cs @@ -0,0 +1,6095 @@ +// +using System; +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("20220719095738_Add_Well_operation_StaticSurveying")] + partial class Add_Well_operation_StaticSurveying + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "6.0.1") + .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") + .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") + .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") + .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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недрапользователь" + }, + new + { + Id = 2, + Caption = "Буровой подрядчик" + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date") + .HasComment("Дата отчёта"); + + b.Property("Info") + .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") + .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") + .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("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.DrillFlowChart", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellOperationCategory") + .HasColumnType("integer") + .HasColumnName("id_operation_category") + .HasComment("Id типа операции"); + + b.Property("LastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_update") + .HasComment("Дата последнего изменения"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellOperationCategory"); + + b.ToTable("t_drill_flow_chart"); + + 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.DrillParams", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadAvg") + .HasColumnType("double precision") + .HasColumnName("axial_load_avg") + .HasComment("Средняя нагрузка"); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowAvg") + .HasColumnType("double precision") + .HasColumnName("flow_avg") + .HasComment("Средний расход"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Id с типом секции скважины"); + + b.Property("PressureAvg") + .HasColumnType("double precision") + .HasColumnName("pressure_avg") + .HasComment("Среднее давление"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_avg") + .HasComment("Средние обороты на ВСП"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_avg") + .HasComment("Средний момент на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_drill_params"); + + b.HasComment("Режим бурения в секции (диапазоны параметров бурения)"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .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 = "Программы цементирования обсадных колонн" + }); + }); + + 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") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("PublishInfo") + .HasColumnType("jsonb") + .HasColumnName("publish_info") + .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.Measure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .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") + .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.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") + .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 = 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" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("IdCompany", "IdWell"); + + b.HasIndex("IdWell"); + + b.ToTable("t_relation_company_well"); + + b.HasComment("отношение скважин и компаний"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part"); + + b.HasComment("Отношение пользователей и частей ПБ"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission"); + + b.HasComment("Отношение ролей пользователей и разрешений доступа"); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role"); + + b.HasComment("Отношение ролей к ролям"); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role"); + + b.HasComment("Отношение пользователей и ролей"); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property"); + + b.HasComment("Отчеты с данными по буровым"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule"); + + b.HasComment("График работы бурильщика"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest"); + + b.HasComment("Запросы на изменение уставок панели оператора"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry"); + + b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub"); + + b.HasComment("набор основных данных по SAUB"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToView("mw_telemetry_datas_saub_stat"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("BreakAngleK") + .HasColumnType("real") + .HasColumnName("break_angle_k") + .HasComment("Коэффициент для расчёта за какой угол нужно тормозить"); + + b.Property("BreakAngleLeft") + .HasColumnType("real") + .HasColumnName("break_angle_left") + .HasComment("Угол торможения влево при работе по моменту"); + + b.Property("EncoderResolution") + .HasColumnType("real") + .HasColumnName("encoder_resolution") + .HasComment("Разрешение энкодера"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PidMuxTorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("pid_mux_torque_left_limit") + .HasComment(" Момент при котором определяется ехать назад по моменту или по скорости"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("Ratio") + .HasColumnType("real") + .HasColumnName("ratio") + .HasComment(" Коэффициент редукции редуктора"); + + b.Property("ReverseKTorque") + .HasColumnType("real") + .HasColumnName("reverse_k_torque") + .HasComment("Коэффициент на который умножается момент, для того чтобы система поняла что мы движемся в обратную сторону"); + + b.Property("ReverseSpeedSpZeroTime") + .HasColumnType("smallint") + .HasColumnName("reverse_speed_sp_zero_time") + .HasComment("Время выдачи сигнала нулевой скорости на при смене направления"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("RotorTorqueAvg") + .HasColumnType("real") + .HasColumnName("rotor_torque_avg") + .HasComment("Момент в роторе средний"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.Property("TopDriveSpeed") + .HasColumnType("real") + .HasColumnName("top_drive_speed") + .HasComment("Скорость СВП"); + + b.Property("TopDriveSpeedErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_err"); + + b.Property("TopDriveSpeedMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_max") + .HasComment("верхний предел"); + + b.Property("TopDriveSpeedMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_min") + .HasComment("нижний предел"); + + b.Property("TopDriveSpeedOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_offset") + .HasComment("смещение"); + + b.Property("TopDriveSpeedSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from") + .HasComment("Заданная скорость c СВП"); + + b.Property("TopDriveSpeedSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_from_err"); + + b.Property("TopDriveSpeedSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_max"); + + b.Property("TopDriveSpeedSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_min"); + + b.Property("TopDriveSpeedSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_offset"); + + b.Property("TopDriveSpeedSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to") + .HasComment("Задание скорости на СВП"); + + b.Property("TopDriveSpeedSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_to_err"); + + b.Property("TopDriveSpeedSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_max"); + + b.Property("TopDriveSpeedSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_min"); + + b.Property("TopDriveSpeedSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_offset"); + + b.Property("TopDriveTorque") + .HasColumnType("real") + .HasColumnName("top_drive_torque") + .HasComment("Момент СВП"); + + b.Property("TopDriveTorqueErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_err"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_max"); + + b.Property("TopDriveTorqueMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_min"); + + b.Property("TopDriveTorqueOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_offset"); + + b.Property("TopDriveTorqueSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from") + .HasComment("Заданный момент c СВП"); + + b.Property("TopDriveTorqueSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_from_err"); + + b.Property("TopDriveTorqueSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_max"); + + b.Property("TopDriveTorqueSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_min"); + + b.Property("TopDriveTorqueSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_offset"); + + b.Property("TopDriveTorqueSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to") + .HasComment("Задание момента на СВП"); + + b.Property("TopDriveTorqueSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_to_err"); + + b.Property("TopDriveTorqueSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_max"); + + b.Property("TopDriveTorqueSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_min"); + + b.Property("TopDriveTorqueSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_offset"); + + b.Property("TorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("torque_left_limit") + .HasComment("Ограничение крутящего момента влево"); + + b.Property("TorqueRampTime") + .HasColumnType("real") + .HasColumnName("torque_ramp_time") + .HasComment("Время нарастания момента"); + + b.Property("TorqueRightLimit") + .HasColumnType("real") + .HasColumnName("torque_right_limit") + .HasComment("Ограничение крутящего момента вправо"); + + b.Property("TorqueStarting") + .HasColumnType("real") + .HasColumnName("torque_starting") + .HasComment("Страгивающий момент"); + + b.Property("TurnLeftOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_angle") + .HasComment("Доворот по градусам единожды влево"); + + b.Property("TurnLeftOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_revols") + .HasComment("Доворот по оборотам единожды влево"); + + b.Property("TurnLeftOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_torque") + .HasComment("Доворот по моменту единожды влево"); + + b.Property("TurnRightOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_angle") + .HasComment("Доворот по градусам единожды вправо"); + + b.Property("TurnRightOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_revols") + .HasComment("Доворот по оборотам единожды вправо"); + + b.Property("TurnRightOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_torque") + .HasComment("Доворот по моменту единожды вправо"); + + b.Property("UnlockBySectorOut") + .HasColumnType("real") + .HasColumnName("unlock_by_sector_out") + .HasComment(" Градус отклонения от сектора для автоматического сброса блокировки"); + + b.Property("Ver") + .HasColumnType("real") + .HasColumnName("ver") + .HasComment("Версия ПО ПЛК"); + + b.Property("W2800") + .HasColumnType("smallint") + .HasColumnName("w2800") + .HasComment("Установка нуля энкодера"); + + b.Property("W2808") + .HasColumnType("smallint") + .HasColumnName("w2808") + .HasComment("Неисправность энкодера"); + + b.Property("W2810") + .HasColumnType("smallint") + .HasColumnName("w2810") + .HasComment(" автоматический сброс блокировки"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin"); + + b.HasComment("набор основных данных по SpinMaster"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event"); + + b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message"); + + b.HasComment("Сообщения на буровых"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user"); + + b.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n100 - удален"); + + b.Property("Login") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user"); + + b.HasComment("Пользователи облака"); + + b.HasData( + new + { + Id = 1, + IdCompany = 1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role"); + + b.HasComment("Роли пользователей в системе"); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well"); + + b.HasComment("скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite"); + + b.HasComment("Композитная скважина"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation"); + + b.HasComment("Данные по операциям на скважине"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("integer") + .HasColumnName("code") + .HasComment("Код операции"); + + b.Property("Name") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.ToTable("t_well_operation_category"); + + b.HasComment("Справочник операций на скважине"); + + b.HasData( + new + { + Id = 1, + Code = 0, + Name = "Невозможно определить операцию" + }, + new + { + Id = 2, + Code = 0, + Name = "Роторное бурение" + }, + new + { + Id = 3, + Code = 0, + Name = "Слайдирование" + }, + new + { + Id = 4, + Code = 0, + Name = "Подъем с проработкой" + }, + new + { + Id = 5, + Code = 0, + Name = "Спуск с проработкой" + }, + new + { + Id = 6, + Code = 0, + Name = "Подъем с промывкой" + }, + new + { + Id = 7, + Code = 0, + Name = "Спуск с промывкой" + }, + new + { + Id = 8, + Code = 0, + Name = "Спуск в скважину" + }, + new + { + Id = 9, + Code = 0, + Name = "Спуск с вращением" + }, + new + { + Id = 10, + Code = 0, + Name = "Подъем из скважины" + }, + new + { + Id = 11, + Code = 0, + Name = "Подъем с вращением" + }, + new + { + Id = 12, + Code = 0, + Name = "Промывка в покое" + }, + new + { + Id = 13, + Code = 0, + Name = "Промывка с вращением" + }, + new + { + Id = 14, + Code = 0, + Name = "Удержание в клиньях" + }, + new + { + Id = 15, + Code = 0, + Name = "Неподвижное состояние" + }, + new + { + Id = 16, + Code = 0, + Name = "Вращение без циркуляции" + }, + new + { + Id = 17, + Code = 0, + Name = "На поверхности" + }, + new + { + Id = 18, + Code = 0, + Name = "Проработка перед наращиванием" + }, + new + { + Id = 19, + Code = 0, + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 20, + Code = 0, + Name = "Промывка перед наращиванием" + }, + new + { + Id = 21, + Code = 0, + Name = "Статический замер телесистемы" + }, + new + { + Id = 1001, + Code = 0, + Name = "Бурение" + }, + new + { + Id = 1002, + Code = 0, + Name = "ГИС" + }, + new + { + Id = 1003, + Code = 0, + Name = "ГФР" + }, + new + { + Id = 1004, + Code = 0, + Name = "Монтаж ПВО" + }, + new + { + Id = 1005, + Code = 0, + Name = "Демонтаж ПВО" + }, + new + { + Id = 1006, + Code = 0, + Name = "Установка ФА" + }, + new + { + Id = 1007, + Code = 0, + Name = "Оборудование устья" + }, + new + { + Id = 1008, + Code = 0, + Name = "ОЗЦ" + }, + new + { + Id = 1011, + Code = 0, + Name = "Начало цикла строительства скважины" + }, + new + { + Id = 1012, + Code = 0, + Name = "Окончание цикла строительства скважины" + }, + new + { + Id = 1013, + Code = 0, + Name = "Опрессовка ПВО" + }, + new + { + Id = 1014, + Code = 0, + Name = "Опрессовка Ц.К." + }, + new + { + Id = 1015, + Code = 0, + Name = "Опрессовка ВЗД" + }, + new + { + Id = 1016, + Code = 0, + Name = "Перевод скв на другой тип промывочной жидкости" + }, + new + { + Id = 1017, + Code = 0, + Name = "Перезапись каротажа" + }, + new + { + Id = 1018, + Code = 0, + Name = "Перетяжка талевого каната" + }, + new + { + Id = 1019, + Code = 0, + Name = "Наращивание, промывка" + }, + new + { + Id = 1020, + Code = 0, + Name = "Подъем инструмента" + }, + new + { + Id = 1021, + Code = 0, + Name = "Подъем инструмента с промывкой" + }, + new + { + Id = 1022, + Code = 0, + Name = "Обратная проработка" + }, + new + { + Id = 1023, + Code = 0, + Name = "Сборка инструмента с мостков" + }, + new + { + Id = 1024, + Code = 0, + Name = "Подготовительные работы" + }, + new + { + Id = 1025, + Code = 0, + Name = "Сборка КНБК" + }, + new + { + Id = 1026, + Code = 0, + Name = "Разборка КНБК" + }, + new + { + Id = 1027, + Code = 0, + Name = "Промывка" + }, + new + { + Id = 1028, + Code = 0, + Name = "Промежуточная промывка" + }, + new + { + Id = 1029, + Code = 0, + Name = "Прокачка пачек" + }, + new + { + Id = 1030, + Code = 0, + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 1031, + Code = 0, + Name = "Ремонт" + }, + new + { + Id = 1032, + Code = 0, + Name = "Спуск инструмента" + }, + new + { + Id = 1033, + Code = 0, + Name = "Спуск инструмента с промывкой" + }, + new + { + Id = 1034, + Code = 0, + Name = "Прямая проработка" + }, + new + { + Id = 1035, + Code = 0, + Name = "Принудительная проработка" + }, + new + { + Id = 1037, + Code = 0, + Name = "Тех СПО-подъем" + }, + new + { + Id = 1038, + Code = 0, + Name = "Тех СПО-спуск" + }, + new + { + Id = 1039, + Code = 0, + Name = "Техническое обслуживание" + }, + new + { + Id = 1040, + Code = 0, + Name = "Цементаж" + }, + new + { + Id = 1041, + Code = 0, + Name = "Шаблонировка ствола" + }, + new + { + Id = 1042, + Code = 0, + Name = "Геологическое осложнение" + }, + new + { + Id = 1043, + Code = 0, + Name = "НПВ" + }, + new + { + Id = 1044, + Code = 0, + Name = "ВМР" + }, + new + { + Id = 1045, + Code = 0, + Name = "Прочее" + }, + new + { + Id = 1046, + Code = 0, + Name = "Спуск КНБК" + }, + new + { + Id = 1047, + Code = 0, + Name = "Подъем КНБК" + }, + new + { + Id = 1048, + Code = 0, + Name = "Спуск ОК" + }, + new + { + Id = 1050, + Code = 0, + Name = "Промывка при спуске ОК" + }, + new + { + Id = 1051, + Code = 0, + Name = "Замер ТС" + }, + new + { + Id = 1052, + Code = 0, + Name = "Тех. отстой" + }, + new + { + Id = 1053, + Code = 0, + Name = "Циркуляция и Обработка БР" + }, + new + { + Id = 1054, + Code = 0, + Name = "Срезка ствола" + }, + new + { + Id = 1055, + Code = 0, + Name = "Вспомогательные работы" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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.HasKey("Id"); + + b.ToTable("t_well_section_type"); + + b.HasComment("конструкция секции скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол" + }, + new + { + Id = 2, + Caption = "Направление" + }, + new + { + Id = 3, + Caption = "Кондуктор" + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна" + }, + new + { + Id = 5, + Caption = "Транспортный ствол" + }, + new + { + Id = 6, + Caption = "Хвостовик" + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2" + }, + new + { + Id = 8, + Caption = "Направление 2" + }, + new + { + Id = 9, + Caption = "Кондуктор 2" + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2" + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2" + }, + new + { + Id = 12, + Caption = "Хвостовик 2" + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3" + }, + new + { + Id = 14, + Caption = "Направление 3" + }, + new + { + Id = 15, + Caption = "Кондуктор 3" + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3" + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3" + }, + new + { + Id = 18, + Caption = "Хвостовик 3" + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4" + }, + new + { + Id = 20, + Caption = "Направление 4" + }, + new + { + Id = 21, + Caption = "Кондуктор 4" + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4" + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4" + }, + new + { + Id = 24, + Caption = "Хвостовик 4" + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5" + }, + new + { + Id = 26, + Caption = "Направление 5" + }, + new + { + Id = 27, + Caption = "Кондуктор 5" + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5" + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5" + }, + new + { + Id = 30, + Caption = "Хвостовик 5" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type"); + + b.HasComment("конструкция скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillParams", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("DrillParamsCollection") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_drill_params_t_well_section_type_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType"); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("DrillParamsCollection"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20220719095738_Add_Well_operation_StaticSurveying.cs b/AsbCloudDb/Migrations/20220719095738_Add_Well_operation_StaticSurveying.cs new file mode 100644 index 00000000..2c37fb26 --- /dev/null +++ b/AsbCloudDb/Migrations/20220719095738_Add_Well_operation_StaticSurveying.cs @@ -0,0 +1,39 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + public partial class Add_Well_operation_StaticSurveying : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 20, + column: "name", + value: "Промывка перед наращиванием"); + + migrationBuilder.InsertData( + table: "t_well_operation_category", + columns: new[] { "id", "code", "name" }, + values: new object[] { 21, 0, "Статический замер телесистемы" }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 21); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 20, + column: "name", + value: "Шаблонировка перед наращиванием"); + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index b2302d12..e849a0c8 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -4178,7 +4178,13 @@ namespace AsbCloudDb.Migrations { Id = 20, Code = 0, - Name = "Шаблонировка перед наращиванием" + Name = "Промывка перед наращиванием" + }, + new + { + Id = 21, + Code = 0, + Name = "Статический замер телесистемы" }, new { diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index a4322a26..50c1a70a 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -684,6 +684,7 @@ namespace AsbCloudDb.Model new WellOperationCategory {Id = 18, Name = "Проработка перед наращиванием", Code = 0 }, new WellOperationCategory {Id = 19, Name = "Шаблонировка перед наращиванием", Code = 0 }, new WellOperationCategory {Id = 20, Name = "Промывка перед наращиванием", Code = 0 }, + new WellOperationCategory {Id = 21, Name = "Статический замер телесистемы", Code = 0 }, // Операции ручного ввода new WellOperationCategory {Id = 1001, Name = "Бурение", Code = 0 }, diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs index e62d83dc..a30e3c0d 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs @@ -279,6 +279,27 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors } return false; } + + protected static bool RisesFromBegin( + DetectableTelemetry[] telemetry, + Func getter, + int begin, + int count, + double deviation) + { + var beginPointValue = getter(telemetry[begin]); + var end = begin + count; + end = end < telemetry.Length ? end : telemetry.Length; + var step = count > 15 ? count / 5 : count > 3 ? 3 : 1; + for (var i = begin; i < end; i += step) + { + var item = telemetry[i]; + var itemValue = getter(item); + if ( itemValue - beginPointValue > deviation) + return true; + } + return false; + } } #nullable disable diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs index f0fb8a0d..51efbf3a 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs @@ -2,7 +2,6 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors { -#nullable enable /// /// Промывка перед наращиванием @@ -41,7 +40,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors var delta = point0.WellDepth - point0.BitDepth; if ((delta > 0.03d ) && (point0.Pressure > 15) - && DeviatesFromBegin(telemetry, t=>t.BlockPosition, position, 300, 1)) + && ContainsDeviationApprox(telemetry, t=>t.BlockPosition, position, 60, 0.03)) return true; return false; diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorRotor.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorRotor.cs index abb2555d..6d11628c 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorRotor.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorRotor.cs @@ -43,9 +43,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors if (lineRotorSpeed.IsAverageYLessThan(5)) return true; - var lineWellDepth = MakeInterpolationLine(d => d.WellDepth, telemetry, position, 30); - - if (!lineWellDepth.IsYIncreases(1)) + if (!DeviatesFromBegin(telemetry, t => t.WellDepth, position, 60, 0.003)) return true; return false; diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlide.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlide.cs index f0857f1d..4ba2de87 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlide.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlide.cs @@ -43,9 +43,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors if (lineRotorSpeed.IsAverageYGreaterThan(5)) return true; - var lineWellDepth = MakeInterpolationLine(d => d.WellDepth, telemetry, position, 30); - - if (!lineWellDepth.IsYIncreases(1)) + if (!DeviatesFromBegin(telemetry, t => t.WellDepth, position, 60, 0.003)) return true; return false; diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorStaticSurveying.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorStaticSurveying.cs new file mode 100644 index 00000000..73f30e06 --- /dev/null +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorStaticSurveying.cs @@ -0,0 +1,70 @@ +using AsbCloudDb.Model; + +namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors +{ +#nullable enable + + /// + /// Статический замер телесистемы + /// + internal class DetectorStaticSurveying: DetectorAbstract + { + public DetectorStaticSurveying() + : base(21) { } + + protected override bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation) + { + var point0 = telemetry[position]; + + if (point0.Pressure < 15) + return false; + + var delta = point0.WellDepth - point0.BitDepth; + if (delta > 2.5d) + return false; + + if (point0.RotorSpeed > 15) + return false; + + if (ContainsDeviation(telemetry, t => t.BlockPosition, position, 60, 0.03)) + return false; + + if (ContainsDeviation(telemetry, t => t.Pressure, position, 60, 10)) + return false; + + return true; + } + + protected override bool DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation) + { + var point0 = telemetry[position]; + + var delta = point0.WellDepth - point0.BitDepth; + if (delta > 2.5d) + return true; + + if (point0.RotorSpeed > 15) + return true; + + if (RisesFromBegin(telemetry, t => t.Pressure, position, 10, 10)) + return true; + + if (ContainsDeviation(telemetry, t => t.BlockPosition, position, 10, 0.03)) + return false; + + //if (DeviatesFromBegin(telemetry, t => t.Pressure, position, 60, 10)) + // return false; + + return false; + } + + protected override bool IsValid(DetectableTelemetry[] telemetry, int begin, int end) + => IsValidByWellDepthDoesNotChange(telemetry, begin, end); + + protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end) + => CalcDeltaMinutes(telemetry, begin, end); + } + +#nullable disable +} + diff --git a/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs b/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs index 6b78a8a8..4ebe2000 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs @@ -25,6 +25,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations new DetectorDevelopment(), new DetectorTemplating(), new DetectorSlipsTime(), + //new DetectorStaticSurveying(), new DetectorFlashing(), }; diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Бурение ротор и слайд.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Бурение ротор и слайд.md index 06cc4eea..d4b1189c 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Бурение ротор и слайд.md +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Бурение ротор и слайд.md @@ -12,8 +12,8 @@ Признак окончания операции = ( расстояние от долота до забоя > 0.03м ) ИЛИ ( давление < 25атм ) ИЛИ - ( среднее арифметическое оборотов ротора за 10 сек < 5 об/м ) - ( глубина забоя в течении следующих 30 сек увеличивается медленнее 1 м/час ); + ( среднее арифметическое оборотов ротора за 10 сек < 5 об/м ) ИЛИ + ( глубина забоя в течении следующих 60 сек не изменяется больше чем на 0.003 ); ## Метод определения бурения в слайде Повторяет метод определения бурения в роторе, за исключением условия с оборотами ротора. Это уловие нужно инвертировать. diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка перед наращиванием.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка перед наращиванием.md index 8be52a7a..093d61fb 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка перед наращиванием.md +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка перед наращиванием.md @@ -19,7 +19,7 @@ Признак окончания операции = ( расстояние от долота до забоя > 0.03м ) И ( давление > 15 атм ) И - ( высота блока изменяется больше чем на 1м в течении 300 сек с начала операции); + ( высота блока изменяется больше чем на 0.03м в течении 60 сек с начала операции); ## Ключевой параметр diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Статический замер телесистемы.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Статический замер телесистемы.md new file mode 100644 index 00000000..b837f59b --- /dev/null +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Статический замер телесистемы.md @@ -0,0 +1,21 @@ +# Статический замер телесистемы +Статический замер телесистемы перед бурением - операция после удержания в клиньях и наращивания очередной трубы/ свечи. +Замер ТС (статический замер) при бурении свечами (промежуточный замер) - операция при добуривании одной трубки, без наращивании и удержания в клиньях. + +## метод определения 1 + + Признак начала операции = + ( давление > 15 атм ) И + ( расстояние от долота до забоя < 2.5м ) И + ( обороты ротора < 15 об/м ) И + ( движение тал.блока в течении 60 сек изменяется менее чем на 3 см ) И + ( давление за следующие 60 сек изменяется менее чем на 10 атм ) + + Признак окончания операции = + ( расстояние от долота до забоя > 2.5м ) ИЛИ + ( обороты ротора > 15 об/м ) ИЛИ + ( давление за следующие 10 сек вырастет на 10 атм ) ИЛИ + ( движение тал.блока в течении 60 сек изменяется более чем на 3 см ) + +## Ключевой параметр +Продолжительность операции. From ed364112cb7c5732893476814cacfdcfef79af2e Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Wed, 20 Jul 2022 13:23:49 +0500 Subject: [PATCH 23/34] fix AdminUserRoleController forbidder --- AsbCloudWebApi/Controllers/AdminUserRoleController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AsbCloudWebApi/Controllers/AdminUserRoleController.cs b/AsbCloudWebApi/Controllers/AdminUserRoleController.cs index 6e50082f..5625f0ae 100644 --- a/AsbCloudWebApi/Controllers/AdminUserRoleController.cs +++ b/AsbCloudWebApi/Controllers/AdminUserRoleController.cs @@ -20,7 +20,7 @@ namespace AsbCloudWebApi.Controllers UpdateForbidAsync = async (dto, token) => { var role = await service.GetOrDefaultAsync(dto.Id, token); - return role?.IdType == 1; + return role?.Id == 1; }; DeleteForbidAsync = (id, token) => From cc5fd56f435cdf22aea3ed06f5be4979802c37ce Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Mon, 25 Jul 2022 18:02:39 +0500 Subject: [PATCH 24/34] DailyReport. Rename dtos and entities. Remove time offset from DailyReportService. --- AsbCloudApp/AsbCloudApp.csproj | 3 - .../{DailyReportBhaDto.cs => BhaDto.cs} | 5 +- .../Data/DailyReport/DailyReportDto.cs | 38 +++++++ .../{DailyReportHeadDto.cs => HeadDto.cs} | 6 +- ...rtDimensionlessDto.cs => NoDrillingDto.cs} | 5 +- .../{DailyReportSaubDto.cs => SaubDto.cs} | 5 +- .../{DailyReportSignDto.cs => SignDto.cs} | 5 +- ...ortTimeBalanceDto.cs => TimeBalanceDto.cs} | 8 +- AsbCloudApp/Data/DailyReportDto.cs | 23 ---- AsbCloudApp/Services/IDailyReportService.cs | 2 +- ...0211123130153_Add_UserRoles_Permissions.cs | 2 +- ...20220526071639_Add_Driller_and_Schedule.cs | 4 +- .../AsbCloudDbContextModelSnapshot.cs | 92 ++++++++-------- AsbCloudDb/Model/AsbCloudDbContext.cs | 7 +- AsbCloudDb/Model/DailyReport/Bha.cs | 62 +++++++++++ .../DailyReport.cs | 6 +- .../Model/DailyReport/DailyReportInfo.cs | 16 +++ .../Head.cs} | 8 +- .../NoDrilling.cs} | 4 +- .../Saub.cs} | 4 +- .../Sign.cs} | 6 +- AsbCloudDb/Model/DailyReport/TimeBalance.cs | 96 +++++++++++++++++ .../Model/DailyReportDB/DailyReportBha.cs | 62 ----------- .../Model/DailyReportDB/DailyReportInfo.cs | 16 --- .../DailyReportDB/DailyReportTimeBalance.cs | 102 ------------------ AsbCloudDb/Model/IAsbCloudDbContext.cs | 5 +- .../DailyReport/DailyReportBlocks/BhaBlock.cs | 4 +- .../DailyReportBlocks/DimensionlessBlock.cs | 4 +- .../DailyReportBlocks/HeadBlock.cs | 4 +- .../DailyReportBlocks/SaubBlock.cs | 4 +- .../DailyReportBlocks/SignBlock.cs | 4 +- .../DailyReportBlocks/TimeBalanceBlock.cs | 4 +- .../DailyReport/DailyReportMakerExcel.cs | 4 +- .../DailyReport/DailyReportService.cs | 75 ++++--------- .../Controllers/DailyReportController.cs | 4 +- ConsoleApp1/Program.cs | 6 +- 36 files changed, 347 insertions(+), 358 deletions(-) rename AsbCloudApp/Data/DailyReport/{DailyReportBhaDto.cs => BhaDto.cs} (95%) create mode 100644 AsbCloudApp/Data/DailyReport/DailyReportDto.cs rename AsbCloudApp/Data/DailyReport/{DailyReportHeadDto.cs => HeadDto.cs} (97%) rename AsbCloudApp/Data/DailyReport/{DailyReportDimensionlessDto.cs => NoDrillingDto.cs} (88%) rename AsbCloudApp/Data/DailyReport/{DailyReportSaubDto.cs => SaubDto.cs} (97%) rename AsbCloudApp/Data/DailyReport/{DailyReportSignDto.cs => SignDto.cs} (78%) rename AsbCloudApp/Data/DailyReport/{DailyReportTimeBalanceDto.cs => TimeBalanceDto.cs} (94%) delete mode 100644 AsbCloudApp/Data/DailyReportDto.cs create mode 100644 AsbCloudDb/Model/DailyReport/Bha.cs rename AsbCloudDb/Model/{DailyReportDB => DailyReport}/DailyReport.cs (88%) create mode 100644 AsbCloudDb/Model/DailyReport/DailyReportInfo.cs rename AsbCloudDb/Model/{DailyReportDB/DailyReportHead.cs => DailyReport/Head.cs} (97%) rename AsbCloudDb/Model/{DailyReportDB/DailyReportDimensionless.cs => DailyReport/NoDrilling.cs} (91%) rename AsbCloudDb/Model/{DailyReportDB/DailyReportSaub.cs => DailyReport/Saub.cs} (98%) rename AsbCloudDb/Model/{DailyReportDB/DailyReportSign.cs => DailyReport/Sign.cs} (79%) create mode 100644 AsbCloudDb/Model/DailyReport/TimeBalance.cs delete mode 100644 AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs delete mode 100644 AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs delete mode 100644 AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs diff --git a/AsbCloudApp/AsbCloudApp.csproj b/AsbCloudApp/AsbCloudApp.csproj index ec491ed5..fa88576c 100644 --- a/AsbCloudApp/AsbCloudApp.csproj +++ b/AsbCloudApp/AsbCloudApp.csproj @@ -13,7 +13,4 @@ - - - diff --git a/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs b/AsbCloudApp/Data/DailyReport/BhaDto.cs similarity index 95% rename from AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs rename to AsbCloudApp/Data/DailyReport/BhaDto.cs index bc55e29f..d858bd8c 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs +++ b/AsbCloudApp/Data/DailyReport/BhaDto.cs @@ -1,6 +1,9 @@ namespace AsbCloudApp.Data.DailyReport { - public class DailyReportBhaDto + /// + /// блок КНБК + /// + public class BhaDto { /// /// КНБК описание diff --git a/AsbCloudApp/Data/DailyReport/DailyReportDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportDto.cs new file mode 100644 index 00000000..c47b8934 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/DailyReportDto.cs @@ -0,0 +1,38 @@ +namespace AsbCloudApp.Data.DailyReport +{ + /// + /// Блоки для формирования суточного рапорта + /// + public class DailyReportDto + { + /// + /// блок заголовка + /// + public HeadDto Head { get; set; } = new(); + + /// + /// блок КНБК + /// + public BhaDto Bha { get; set; } = new(); + + /// + /// блок безметражные работы + /// + public NoDrillingDto NoDrilling { get; set; } = new(); + + /// + /// блок баланса времени + /// + public TimeBalanceDto TimeBalance { get; set; } = new(); + + /// + /// блок САУБ + /// + public SaubDto Saub { get; set; } = new(); + + /// + /// блок подписи + /// + public SignDto Sign { get; set; } = new(); + } +} diff --git a/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs b/AsbCloudApp/Data/DailyReport/HeadDto.cs similarity index 97% rename from AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs rename to AsbCloudApp/Data/DailyReport/HeadDto.cs index db9d9d4d..05537aae 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs +++ b/AsbCloudApp/Data/DailyReport/HeadDto.cs @@ -1,8 +1,10 @@ using System; namespace AsbCloudApp.Data.DailyReport { - - public class DailyReportHeadDto + /// + /// блок заголовка + /// + public class HeadDto { /// /// название скважины diff --git a/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs b/AsbCloudApp/Data/DailyReport/NoDrillingDto.cs similarity index 88% rename from AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs rename to AsbCloudApp/Data/DailyReport/NoDrillingDto.cs index 2f8235ba..55f34e1c 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs +++ b/AsbCloudApp/Data/DailyReport/NoDrillingDto.cs @@ -1,6 +1,9 @@ namespace AsbCloudApp.Data.DailyReport { - public class DailyReportDimensionlessDto + /// + /// блок безметражные работы + /// + public class NoDrillingDto { /// /// Нормативное время на одну операцию по подготовке ствола скважины к наращиванию diff --git a/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs b/AsbCloudApp/Data/DailyReport/SaubDto.cs similarity index 97% rename from AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs rename to AsbCloudApp/Data/DailyReport/SaubDto.cs index b4d3481b..ee632699 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs +++ b/AsbCloudApp/Data/DailyReport/SaubDto.cs @@ -2,7 +2,10 @@ namespace AsbCloudApp.Data.DailyReport { - public class DailyReportSaubDto + /// + /// блок САУБ + /// + public class SaubDto { /// /// Режимы бурения в роторе diff --git a/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs b/AsbCloudApp/Data/DailyReport/SignDto.cs similarity index 78% rename from AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs rename to AsbCloudApp/Data/DailyReport/SignDto.cs index 49963fe9..3c75bf33 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs +++ b/AsbCloudApp/Data/DailyReport/SignDto.cs @@ -1,6 +1,9 @@ namespace AsbCloudApp.Data.DailyReport { - public class DailyReportSignDto + /// + /// блок подписи + /// + public class SignDto { /// /// ФИО Мастера буровой diff --git a/AsbCloudApp/Data/DailyReport/DailyReportTimeBalanceDto.cs b/AsbCloudApp/Data/DailyReport/TimeBalanceDto.cs similarity index 94% rename from AsbCloudApp/Data/DailyReport/DailyReportTimeBalanceDto.cs rename to AsbCloudApp/Data/DailyReport/TimeBalanceDto.cs index 94695a9e..96f6bba6 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportTimeBalanceDto.cs +++ b/AsbCloudApp/Data/DailyReport/TimeBalanceDto.cs @@ -1,6 +1,9 @@ namespace AsbCloudApp.Data.DailyReport { - public class DailyReportTimeBalanceDto + /// + /// блок баланса времени + /// + public class TimeBalanceDto { /// /// Бурение @@ -32,8 +35,6 @@ /// public string Repair { get; set; } - - /// /// КНБК /// @@ -64,7 +65,6 @@ /// public string Gis { get; set; } - /// /// ОЗЦ /// diff --git a/AsbCloudApp/Data/DailyReportDto.cs b/AsbCloudApp/Data/DailyReportDto.cs deleted file mode 100644 index 63b22dd2..00000000 --- a/AsbCloudApp/Data/DailyReportDto.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using AsbCloudApp.Data.DailyReport; - - -namespace AsbCloudApp.Data -{ - /// - /// Блоки для формирования суточного рапорта - /// - public class DailyReportDto - { - - public DailyReportHeadDto Head { get; set; } - public DailyReportBhaDto Bha { get; set; } - public DailyReportDimensionlessDto Dimensionless { get; set; } - public DailyReportTimeBalanceDto TimeBalance { get; set; } - public DailyReportSaubDto Saub { get; set; } - public DailyReportSignDto Sign { get; set; } - - - } -} diff --git a/AsbCloudApp/Services/IDailyReportService.cs b/AsbCloudApp/Services/IDailyReportService.cs index 380622d1..ba9f58a7 100644 --- a/AsbCloudApp/Services/IDailyReportService.cs +++ b/AsbCloudApp/Services/IDailyReportService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.DailyReport; using System; using System.Collections.Generic; using System.IO; diff --git a/AsbCloudDb/Migrations/20211123130153_Add_UserRoles_Permissions.cs b/AsbCloudDb/Migrations/20211123130153_Add_UserRoles_Permissions.cs index dbd30cbf..87089dab 100644 --- a/AsbCloudDb/Migrations/20211123130153_Add_UserRoles_Permissions.cs +++ b/AsbCloudDb/Migrations/20211123130153_Add_UserRoles_Permissions.cs @@ -7,7 +7,7 @@ namespace AsbCloudDb.Migrations { protected override void Up(MigrationBuilder migrationBuilder) { - + migrationBuilder.DropForeignKey( name: "FK_t_user_t_user_role_id_role", table: "t_user"); diff --git a/AsbCloudDb/Migrations/20220526071639_Add_Driller_and_Schedule.cs b/AsbCloudDb/Migrations/20220526071639_Add_Driller_and_Schedule.cs index fe5f9941..b31f3f60 100644 --- a/AsbCloudDb/Migrations/20220526071639_Add_Driller_and_Schedule.cs +++ b/AsbCloudDb/Migrations/20220526071639_Add_Driller_and_Schedule.cs @@ -1,6 +1,6 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using System; #nullable disable diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index 7cf792d3..1a5a12cf 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -61,7 +61,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdDeposit"); - b.ToTable("t_cluster"); + b.ToTable("t_cluster", (string)null); b.HasComment("Кусты"); }); @@ -90,7 +90,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdCompanyType"); - b.ToTable("t_company"); + b.ToTable("t_company", (string)null); b.HasData( new @@ -117,7 +117,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_company_type"); + b.ToTable("t_company_type", (string)null); b.HasData( new @@ -157,7 +157,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdWell", "StartDate") .HasName("t_id_well_date_start_pk"); - b.ToTable("t_daily_report"); + b.ToTable("t_daily_report", (string)null); b.HasComment("Ежедневные отчёты"); }); @@ -191,7 +191,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_deposit"); + b.ToTable("t_deposit", (string)null); b.HasComment("Месторождение"); }); @@ -250,7 +250,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdTelemetry"); - b.ToTable("t_detected_operation"); + b.ToTable("t_detected_operation", (string)null); b.HasComment("автоматически определенные операции по телеметрии"); }); @@ -287,7 +287,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_driller"); + b.ToTable("t_driller", (string)null); b.HasComment("Бурильщик"); }); @@ -382,7 +382,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellOperationCategory"); - b.ToTable("t_drill_flow_chart"); + b.ToTable("t_drill_flow_chart", (string)null); b.HasComment("Параметры коридоров бурения (диапазоны параметров бурения)"); }); @@ -411,7 +411,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell", "IdFileCategory") .IsUnique(); - b.ToTable("t_drilling_program_part"); + b.ToTable("t_drilling_program_part", (string)null); b.HasComment("части программ бурения"); }); @@ -526,7 +526,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellSectionType"); - b.ToTable("t_drill_params"); + b.ToTable("t_drill_params", (string)null); b.HasComment("Режим бурения в секции (диапазоны параметров бурения)"); }); @@ -552,7 +552,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_file_category"); + b.ToTable("t_file_category", (string)null); b.HasComment("Категории файлов"); @@ -726,7 +726,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_file_info"); + b.ToTable("t_file_info", (string)null); b.HasComment("Файлы всех категорий"); }); @@ -777,7 +777,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdUser"); - b.ToTable("t_file_mark"); + b.ToTable("t_file_mark", (string)null); b.HasComment("Действия с файлами."); }); @@ -822,7 +822,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_measure"); + b.ToTable("t_measure", (string)null); b.HasComment("Таблица c данными для вкладки 'Последние данные'"); }); @@ -848,7 +848,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_measure_category"); + b.ToTable("t_measure_category", (string)null); b.HasComment("Категория последних данных"); @@ -919,7 +919,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_operationvalue"); + b.ToTable("t_operationvalue", (string)null); b.HasComment("Целевые/нормативные показатели операции"); }); @@ -947,7 +947,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_permission"); + b.ToTable("t_permission", (string)null); b.HasComment("Разрешения на доступ к данным"); @@ -1664,7 +1664,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_relation_company_well"); + b.ToTable("t_relation_company_well", (string)null); b.HasComment("отношение скважин и компаний"); }); @@ -1689,7 +1689,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdDrillingProgramPart"); - b.ToTable("t_relation_user_drilling_program_part"); + b.ToTable("t_relation_user_drilling_program_part", (string)null); b.HasComment("Отношение пользователей и частей ПБ"); }); @@ -1708,7 +1708,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdPermission"); - b.ToTable("t_relation_user_role_permission"); + b.ToTable("t_relation_user_role_permission", (string)null); b.HasComment("Отношение ролей пользователей и разрешений доступа"); @@ -2290,7 +2290,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdInclude"); - b.ToTable("t_relation_user_role_user_role"); + b.ToTable("t_relation_user_role_user_role", (string)null); b.HasComment("Отношение ролей к ролям"); @@ -2581,7 +2581,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdUserRole"); - b.ToTable("t_relation_user_user_role"); + b.ToTable("t_relation_user_user_role", (string)null); b.HasComment("Отношение пользователей и ролей"); @@ -2637,7 +2637,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_report_property"); + b.ToTable("t_report_property", (string)null); b.HasComment("Отчеты с данными по буровым"); }); @@ -2688,7 +2688,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_schedule"); + b.ToTable("t_schedule", (string)null); b.HasComment("График работы бурильщика"); }); @@ -2742,7 +2742,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_setpoints_rquest"); + b.ToTable("t_setpoints_rquest", (string)null); b.HasComment("Запросы на изменение уставок панели оператора"); }); @@ -2775,7 +2775,7 @@ namespace AsbCloudDb.Migrations b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); - b.ToTable("t_telemetry"); + b.ToTable("t_telemetry", (string)null); b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); }); @@ -2978,7 +2978,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "DateTime"); - b.ToTable("t_telemetry_data_saub"); + b.ToTable("t_telemetry_data_saub", (string)null); b.HasComment("набор основных данных по SAUB"); }); @@ -3319,7 +3319,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "DateTime"); - b.ToTable("t_telemetry_data_spin"); + b.ToTable("t_telemetry_data_spin", (string)null); b.HasComment("набор основных данных по SpinMaster"); }); @@ -3344,7 +3344,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "IdEvent"); - b.ToTable("t_telemetry_event"); + b.ToTable("t_telemetry_event", (string)null); b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); }); @@ -3404,7 +3404,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdTelemetry"); - b.ToTable("t_telemetry_message"); + b.ToTable("t_telemetry_message", (string)null); b.HasComment("Сообщения на буровых"); }); @@ -3440,7 +3440,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "IdUser"); - b.ToTable("t_telemetry_user"); + b.ToTable("t_telemetry_user", (string)null); b.HasComment("Пользователи панели САУБ. Для сообщений."); }); @@ -3517,7 +3517,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("Login") .IsUnique(); - b.ToTable("t_user"); + b.ToTable("t_user", (string)null); b.HasComment("Пользователи облака"); @@ -3554,7 +3554,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_user_role"); + b.ToTable("t_user_role", (string)null); b.HasComment("Роли пользователей в системе"); @@ -3926,7 +3926,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellType"); - b.ToTable("t_well"); + b.ToTable("t_well", (string)null); b.HasComment("скважины"); }); @@ -3954,7 +3954,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellSrc"); - b.ToTable("t_well_composite"); + b.ToTable("t_well_composite", (string)null); b.HasComment("Композитная скважина"); }); @@ -4030,7 +4030,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellSectionType"); - b.ToTable("t_well_operation"); + b.ToTable("t_well_operation", (string)null); b.HasComment("Данные по операциям на скважине"); }); @@ -4056,7 +4056,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_well_operation_category"); + b.ToTable("t_well_operation_category", (string)null); b.HasComment("Справочник операций на скважине"); @@ -4489,7 +4489,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_well_section_type"); + b.ToTable("t_well_section_type", (string)null); b.HasComment("конструкция секции скважины"); @@ -4664,7 +4664,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_well_type"); + b.ToTable("t_well_type", (string)null); b.HasComment("конструкция скважины"); @@ -4721,7 +4721,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "DateTime"); - b.ToTable("RecordBase"); + b.ToTable("RecordBase", (string)null); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => @@ -4885,7 +4885,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_1"); + b.ToTable("t_telemetry_wits_1", (string)null); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => @@ -4973,7 +4973,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_50"); + b.ToTable("t_telemetry_wits_50", (string)null); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => @@ -5025,7 +5025,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_60"); + b.ToTable("t_telemetry_wits_60", (string)null); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => @@ -5081,7 +5081,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_61"); + b.ToTable("t_telemetry_wits_61", (string)null); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => @@ -5169,7 +5169,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_7"); + b.ToTable("t_telemetry_wits_7", (string)null); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => @@ -5373,7 +5373,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_8"); + b.ToTable("t_telemetry_wits_8", (string)null); }); modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index a1f421f9..29be4d2a 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -1,5 +1,4 @@ -using AsbCloudDb.Model.DailyReportDB; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -11,7 +10,7 @@ namespace AsbCloudDb.Model public virtual DbSet Clusters => Set(); public virtual DbSet Companies => Set(); public virtual DbSet CompaniesTypes => Set(); - public virtual DbSet DailyReports => Set(); + public virtual DbSet DailyReports => Set (); public virtual DbSet Deposits => Set(); public virtual DbSet DetectedOperations => Set(); public virtual DbSet DrillFlowChart => Set(); @@ -275,7 +274,7 @@ namespace AsbCloudDb.Model .IsRequired(); }); - modelBuilder.Entity(entity => + modelBuilder.Entity(entity => { entity.HasKey(e => new { e.IdWell, e.StartDate }) .HasName("t_id_well_date_start_pk"); diff --git a/AsbCloudDb/Model/DailyReport/Bha.cs b/AsbCloudDb/Model/DailyReport/Bha.cs new file mode 100644 index 00000000..5167c4b8 --- /dev/null +++ b/AsbCloudDb/Model/DailyReport/Bha.cs @@ -0,0 +1,62 @@ +namespace AsbCloudDb.Model.DailyReport +{ + public class Bha + { + /// + /// КНБК описание + /// + public string BHADescription { get; set; } + + /// + /// Бурение с наращиваниями в инт. 2195-2763м. Время начала + /// + public string ExtensionDrillingOneBegin { get; set; } + + /// + /// Бурение с наращиваниями в инт. 2195-2763м. Время окончания + /// + public string ExtensionDrillingOneFinish { get; set; } + + /// + /// Промывка. Время начала + /// + public string SluiceBegin { get; set; } + + /// + /// Промывка. Время окончания + /// + public string SluiceFinish { get; set; } + + /// + /// Подьем КНБК. Время начала + /// + public string ClimbBegin { get; set; } + + /// + /// Подьем КНБК. Время окончания + /// + public string ClimbFinish { get; set; } + + /// + /// Спуск КНБК. Время начала + /// + public string DescentBegin { get; set; } + + /// + /// Спуск КНБК. Время окончания + /// + public string DescentFinish { get; set; } + + /// + /// Бурение с наращиваниями в инт. 2763-2850м. Время начала + /// + public string ExtensionDrillingTwoBegin { get; set; } + + /// + /// Бурение с наращиваниями в инт. 2763-2850м. Время окончания + /// + public string ExtensionDrillingTwoFinish { get; set; } + + } +} + diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReport.cs b/AsbCloudDb/Model/DailyReport/DailyReport.cs similarity index 88% rename from AsbCloudDb/Model/DailyReportDB/DailyReport.cs rename to AsbCloudDb/Model/DailyReport/DailyReport.cs index 7d985a03..bb685c55 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReport.cs +++ b/AsbCloudDb/Model/DailyReport/DailyReport.cs @@ -1,8 +1,8 @@ -using System; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using System; using System.ComponentModel.DataAnnotations.Schema; -namespace AsbCloudDb.Model.DailyReportDB +namespace AsbCloudDb.Model.DailyReport { #nullable disable [Table("t_daily_report"), Comment("Ежедневные отчёты")] diff --git a/AsbCloudDb/Model/DailyReport/DailyReportInfo.cs b/AsbCloudDb/Model/DailyReport/DailyReportInfo.cs new file mode 100644 index 00000000..ab21607e --- /dev/null +++ b/AsbCloudDb/Model/DailyReport/DailyReportInfo.cs @@ -0,0 +1,16 @@ +using AsbCloudDb.Model.DailyReport; + +namespace AsbCloudDb.Model +{ +#nullable disable + public class DailyReportInfo + { + public Head Head { get; set; } + public Bha Bha { get; set; } + public NoDrilling NoDrilling { get; set; } + public TimeBalance TimeBalance { get; set; } + public Saub Saub { get; set; } + public Sign Sign { get; set; } + } + +} diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs b/AsbCloudDb/Model/DailyReport/Head.cs similarity index 97% rename from AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs rename to AsbCloudDb/Model/DailyReport/Head.cs index 3e2120c8..8d90a556 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs +++ b/AsbCloudDb/Model/DailyReport/Head.cs @@ -1,8 +1,8 @@ using System; -namespace AsbCloudDb.Model.DailyReportDB -{ - public class DailyReportHead - { +namespace AsbCloudDb.Model.DailyReport +{ + public class Head + { /// /// название скважины /// diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs b/AsbCloudDb/Model/DailyReport/NoDrilling.cs similarity index 91% rename from AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs rename to AsbCloudDb/Model/DailyReport/NoDrilling.cs index 79cc5ffd..ef203694 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs +++ b/AsbCloudDb/Model/DailyReport/NoDrilling.cs @@ -1,6 +1,6 @@ -namespace AsbCloudDb.Model.DailyReportDB +namespace AsbCloudDb.Model.DailyReport { - public class DailyReportDimensionless + public class NoDrilling { /// /// Нормативное время на одну операцию по подготовке ствола скважины к наращиванию diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs b/AsbCloudDb/Model/DailyReport/Saub.cs similarity index 98% rename from AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs rename to AsbCloudDb/Model/DailyReport/Saub.cs index a45fd7a8..55038257 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs +++ b/AsbCloudDb/Model/DailyReport/Saub.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; -namespace AsbCloudDb.Model.DailyReportDB +namespace AsbCloudDb.Model.DailyReport { - public class DailyReportSaub + public class Saub { /// /// Режимы бурения в роторе diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs b/AsbCloudDb/Model/DailyReport/Sign.cs similarity index 79% rename from AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs rename to AsbCloudDb/Model/DailyReport/Sign.cs index 96427e1f..ebef294d 100644 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs +++ b/AsbCloudDb/Model/DailyReport/Sign.cs @@ -1,7 +1,7 @@ -namespace AsbCloudDb.Model.DailyReportDB +namespace AsbCloudDb.Model.DailyReport { - public class DailyReportSign - { + public class Sign + { /// /// ФИО Мастера буровой /// diff --git a/AsbCloudDb/Model/DailyReport/TimeBalance.cs b/AsbCloudDb/Model/DailyReport/TimeBalance.cs new file mode 100644 index 00000000..a2d3a7e7 --- /dev/null +++ b/AsbCloudDb/Model/DailyReport/TimeBalance.cs @@ -0,0 +1,96 @@ +namespace AsbCloudDb.Model.DailyReport +{ + public class TimeBalance + { + /// + /// Бурение + /// + public string Drilling { get; set; } + + /// + /// Промывка + /// + public string Flushing { get; set; } + + /// + /// Наращивание + /// + public string Building { get; set; } + + /// + /// Проработка + /// + public string Elaboration { get; set; } + + /// + /// Расширка + /// + public string Extension { get; set; } + + /// + /// Ремонт + /// + public string Repair { get; set; } + + /// + /// КНБК + /// + public string Knbk { get; set; } + + /// + /// СПО + /// + public string Spo { get; set; } + + /// + /// ПЗР + /// + public string Pzr { get; set; } + + /// + /// ПВО + /// + public string Pvo { get; set; } + + /// + /// ПГР + /// + public string Pgr { get; set; } + + /// + /// ГИС + /// + public string Gis { get; set; } + + /// + /// ОЗЦ + /// + public string Ozc { get; set; } + + /// + /// Тех. работы + /// + public string EngineeringWorks { get; set; } + + /// + /// Снятие замера + /// + public string TakingMeasure { get; set; } + + /// + /// Цементирование + /// + public string Cementing { get; set; } + + /// + /// Простой + /// + public string Simple { get; set; } + + /// + /// НПВ + /// + public string Npv { get; set; } + } +} + diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs deleted file mode 100644 index 14c53798..00000000 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs +++ /dev/null @@ -1,62 +0,0 @@ -namespace AsbCloudDb.Model.DailyReportDB -{ - public class DailyReportBha - { - /// - /// КНБК описание - /// - public string BHADescription { get; set; } - - /// - /// Бурение с наращиваниями в инт. 2195-2763м. Время начала - /// - public string ExtensionDrillingOneBegin { get; set; } - - /// - /// Бурение с наращиваниями в инт. 2195-2763м. Время окончания - /// - public string ExtensionDrillingOneFinish { get; set; } - - /// - /// Промывка. Время начала - /// - public string SluiceBegin { get; set; } - - /// - /// Промывка. Время окончания - /// - public string SluiceFinish { get; set; } - - /// - /// Подьем КНБК. Время начала - /// - public string ClimbBegin { get; set; } - - /// - /// Подьем КНБК. Время окончания - /// - public string ClimbFinish { get; set; } - - /// - /// Спуск КНБК. Время начала - /// - public string DescentBegin { get; set; } - - /// - /// Спуск КНБК. Время окончания - /// - public string DescentFinish { get; set; } - - /// - /// Бурение с наращиваниями в инт. 2763-2850м. Время начала - /// - public string ExtensionDrillingTwoBegin { get; set; } - - /// - /// Бурение с наращиваниями в инт. 2763-2850м. Время окончания - /// - public string ExtensionDrillingTwoFinish { get; set; } - - } -} - diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs deleted file mode 100644 index c0ae5b22..00000000 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportInfo.cs +++ /dev/null @@ -1,16 +0,0 @@ -using AsbCloudDb.Model.DailyReportDB; - -namespace AsbCloudDb.Model -{ -#nullable disable - public class DailyReportInfo - { - public DailyReportHead Head { get; set; } - public DailyReportBha Bha { get; set; } - public DailyReportDimensionless Dimensionless { get; set; } - public DailyReportTimeBalance TimeBalance { get; set; } - public DailyReportSaub Saub { get; set; } - public DailyReportSign Sign { get; set; } - } - -} diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs deleted file mode 100644 index f80b7d91..00000000 --- a/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs +++ /dev/null @@ -1,102 +0,0 @@ -namespace AsbCloudDb.Model.DailyReportDB -{ - public class DailyReportTimeBalance - { - - /// - /// Бурение - /// - public string Drilling { get; set; } - - /// - /// Промывка - /// - public string Flushing { get; set; } - - /// - /// Наращивание - /// - public string Building { get; set; } - - /// - /// Проработка - /// - public string Elaboration { get; set; } - - /// - /// Расширка - /// - public string Extension { get; set; } - - /// - /// Ремонт - /// - public string Repair { get; set; } - - - - /// - /// КНБК - /// - public string Knbk { get; set; } - - /// - /// СПО - /// - public string Spo { get; set; } - - /// - /// ПЗР - /// - public string Pzr { get; set; } - - /// - /// ПВО - /// - public string Pvo { get; set; } - - /// - /// ПГР - /// - public string Pgr { get; set; } - - /// - /// ГИС - /// - public string Gis { get; set; } - - - /// - /// ОЗЦ - /// - public string Ozc { get; set; } - - /// - /// Тех. работы - /// - public string EngineeringWorks { get; set; } - - /// - /// Снятие замера - /// - public string TakingMeasure { get; set; } - - /// - /// Цементирование - /// - public string Cementing { get; set; } - - /// - /// Простой - /// - public string Simple { get; set; } - - /// - /// НПВ - /// - public string Npv { get; set; } - - - } -} - diff --git a/AsbCloudDb/Model/IAsbCloudDbContext.cs b/AsbCloudDb/Model/IAsbCloudDbContext.cs index 8fbd7de5..72af1fda 100644 --- a/AsbCloudDb/Model/IAsbCloudDbContext.cs +++ b/AsbCloudDb/Model/IAsbCloudDbContext.cs @@ -1,5 +1,4 @@ -using AsbCloudDb.Model.DailyReportDB; -using AsbCloudDb.Model.WITS; +using AsbCloudDb.Model.WITS; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using System; @@ -12,7 +11,7 @@ namespace AsbCloudDb.Model { DbSet Clusters { get; } DbSet Companies { get; } - DbSet DailyReports { get; } + DbSet DailyReports { get; } DbSet Deposits { get; } DbSet DetectedOperations { get; } DbSet DrillFlowChart { get; } diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs index 66d5b018..60505718 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs @@ -5,7 +5,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { class BhaBlock : BlockAbstract { - private readonly DailyReportBhaDto blockDto; + private readonly BhaDto blockDto; public CellAddress AddressBhaDescription { get; } public CellAddress AddressOperationTitle { get; } @@ -18,7 +18,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public override CellAddress AddressBlockBegin { get; } public override CellAddress AddressBlockEnd { get; } - public BhaBlock(CellAddress addressBlockBegin, DailyReportBhaDto blockDto) + public BhaBlock(CellAddress addressBlockBegin, BhaDto blockDto) { this.blockDto = blockDto; AddressBlockBegin = addressBlockBegin.Copy(); diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs index 35e1b6b4..8fedbc8c 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs @@ -6,7 +6,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks internal class DimensionlessBlock : BlockAbstract { - private readonly DailyReportDimensionlessDto blockDto; + private readonly NoDrillingDto blockDto; public SaubBlock SaubBlock { get; set; } @@ -22,7 +22,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public CellAddress AddressBlockFormula { get; } public override CellAddress AddressBlockBegin { get; } public override CellAddress AddressBlockEnd { get; } - public DimensionlessBlock(CellAddress addressBlockBegin, DailyReportDimensionlessDto blockDto) + public DimensionlessBlock(CellAddress addressBlockBegin, NoDrillingDto blockDto) { AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs index 324b70bb..2eab984d 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs @@ -6,7 +6,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks class HeadBlock : BlockAbstract { - private readonly DailyReportHeadDto blockDto; + private readonly HeadDto blockDto; public CellAddress AddressTitle { get; } public CellAddress AddressCustomer { get; } @@ -30,7 +30,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public CellAddress[] AddressTrajectoryTableDataArray { get; } public override CellAddress AddressBlockBegin { get; } public override CellAddress AddressBlockEnd { get; } - public HeadBlock(CellAddress addressBlockBegin, DailyReportHeadDto blockDto) + public HeadBlock(CellAddress addressBlockBegin, HeadDto blockDto) { AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs index b91351d3..da5ef393 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs @@ -5,7 +5,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { internal class SaubBlock : BlockAbstract { - private readonly DailyReportSaubDto blockDto; + private readonly SaubDto blockDto; private readonly HeadBlock headBlock; public CellAddress AddressRotorDrilling { get; } public CellAddress AddressSlideDrilling { get; } @@ -41,7 +41,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public override CellAddress AddressBlockBegin { get; } public override CellAddress AddressBlockEnd { get; } - public SaubBlock(CellAddress addressBlockBegin, DailyReportSaubDto blockDto, HeadBlock headBlock) + public SaubBlock(CellAddress addressBlockBegin, SaubDto blockDto, HeadBlock headBlock) { this.headBlock = headBlock; AddressBlockBegin = addressBlockBegin.Copy(); diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs index 94aefd7c..b4fd4e8f 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs @@ -5,7 +5,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { internal class SignBlock : BlockAbstract { - private readonly DailyReportSignDto blockDto; + private readonly SignDto blockDto; public CellAddress AddressDrillMasterHead { get; } public CellAddress AddressDrillMaster { get; } public CellAddress AddressSupervisorHead { get; } @@ -14,7 +14,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public override CellAddress AddressBlockBegin { get; } public override CellAddress AddressBlockEnd { get; } - public SignBlock(CellAddress addressBlockBegin, DailyReportSignDto blockDto) + public SignBlock(CellAddress addressBlockBegin, SignDto blockDto) { AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs index 694d9c95..512fcf10 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs @@ -5,7 +5,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks { class TimeBalanceBlock : BlockAbstract { - private readonly DailyReportTimeBalanceDto blockDto; + private readonly TimeBalanceDto blockDto; public CellAddress AddressTitle { get; } public CellAddress AddressDrilling { get; set; } public CellAddress AddressFlushing { get; set; } @@ -47,7 +47,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks public override CellAddress AddressBlockBegin { get; } public override CellAddress AddressBlockEnd { get; } - public TimeBalanceBlock(CellAddress addressBlockBegin, DailyReportTimeBalanceDto blockDto) + public TimeBalanceBlock(CellAddress addressBlockBegin, TimeBalanceDto blockDto) { AddressBlockBegin = addressBlockBegin.Copy(); this.blockDto = blockDto; diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs index 70670293..d5e9728a 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.DailyReport; using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks; using ClosedXML.Excel; using System.IO; @@ -29,7 +29,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport var timeBalance = new TimeBalanceBlock(addressStart, dto.TimeBalance); addressStart = timeBalance.AddressBlockEnd + (1, 0); addressStart.ColumnNumber = 2; - var blockDimensionless = new DimensionlessBlock(addressStart, dto.Dimensionless); + var blockDimensionless = new DimensionlessBlock(addressStart, dto.NoDrilling); addressStart = blockDimensionless.AddressBlockEnd + (1, 0); addressStart.ColumnNumber = 2; var blockSaub = new SaubBlock(addressStart, dto.Saub, blockHeader); diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs index c61c22b9..d29c4b34 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs @@ -5,7 +5,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Mapster; -using AsbCloudApp.Data; using AsbCloudApp.Services; using AsbCloudDb.Model; using System.Collections.Generic; @@ -29,44 +28,34 @@ namespace AsbCloudInfrastructure.Services.DailyReport public async Task> GetListAsync(int idWell, DateTime? begin, DateTime? end, CancellationToken token) { var query = db.DailyReports.Where(r => r.IdWell == idWell); - var offsetHours = wellService.GetTimezone(idWell).Hours; if (begin is not null) - { - var beginOffset = ((DateTime)begin).ToUtcDateTimeOffset(offsetHours); - query = query.Where(d => d.StartDate >= beginOffset); - } + query = query.Where(d => d.StartDate >= begin.Value.Date); if (end is not null) - { - var endOffset = ((DateTime)end).ToUtcDateTimeOffset(offsetHours); - query = query.Where(d => d.StartDate <= endOffset); - } + query = query.Where(d => d.StartDate <= end.Value.Date); var entities = await query .ToListAsync(token); - return entities.Select(r => Convert(r, offsetHours)); + return entities.Select(r => Convert(r)); } public async Task GetOrGenerateAsync(int idWell, DateTime date, CancellationToken token) { var dailyReportDto = await GetAsync(idWell, date, token); if (dailyReportDto is null) - return await MakeDefaultDailyReportAsync(idWell, date, token); - else - return dailyReportDto; + dailyReportDto = await MakeDefaultDailyReportAsync(idWell, date, token); + return dailyReportDto; } public async Task AddAsync(int idWell, DailyReportDto dto, CancellationToken token = default) { - var offsetHours = wellService.GetTimezone(idWell).Hours; - var reportDateOffset = dto.Head.ReportDate.ToUtcDateTimeOffset(offsetHours); - var info = Convert(dto, offsetHours); - var entity = new AsbCloudDb.Model.DailyReportDB.DailyReport + var info = Convert(dto); + var entity = new AsbCloudDb.Model.DailyReport.DailyReport { IdWell = idWell, - StartDate = reportDateOffset, + StartDate = info.Head.ReportDate, Info = info }; db.DailyReports.Add(entity); @@ -76,8 +65,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport public async Task UpdateAsync(int idWell, DateTime date, DailyReportDto dto, CancellationToken token) { - var offsetHours = wellService.GetTimezone(idWell).Hours; - var dateOffset = date.ToUtcDateTimeOffset(offsetHours); + var dateOffset = date.Date; var entity = await db.DailyReports .FirstOrDefaultAsync(r => r.IdWell == idWell && r.StartDate.Year == dateOffset.Year && @@ -87,7 +75,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport if (entity is null) return 0; - entity.Info = Convert(dto, offsetHours); + entity.Info = Convert(dto); db.DailyReports.Update(entity); var result = await db.SaveChangesAsync(token); return result; @@ -103,12 +91,9 @@ namespace AsbCloudInfrastructure.Services.DailyReport return memoryStream; } - - private async Task GetAsync(int idWell, DateTime date, CancellationToken token) { - var offsetHours = wellService.GetTimezone(idWell).Hours; - var dateOffset = date.ToUtcDateTimeOffset(offsetHours); + var dateOffset = date.Date; var entity = await db.DailyReports .FirstOrDefaultAsync(r => r.IdWell == idWell && r.StartDate.Year == dateOffset.Year && @@ -117,53 +102,39 @@ namespace AsbCloudInfrastructure.Services.DailyReport if (entity is null) return null; - else - return Convert(entity, offsetHours); + var dto = Convert(entity); + return dto; } private async Task MakeDefaultDailyReportAsync(int idWell, DateTime date, CancellationToken token) { var well = await wellService.GetAsync(idWell, token); - var offsetHours = wellService.GetTimezone(idWell).Hours; var dto = new DailyReportDto() { - Head=new DailyReportHeadDto() + Head = new HeadDto() { - ReportDate = DateTimeOffset.UtcNow.ToRemoteDateTime(offsetHours), - WellName = well.Caption, - ClusterName = well.Cluster + ReportDate = date.Date, + WellName = well?.Caption ?? "", + ClusterName = well?.Cluster ?? "" } }; return dto; } - private static DailyReportDto Convert(AsbCloudDb.Model.DailyReportDB.DailyReport entity, double offsetHours) - { - var dto = new DailyReportDto() - { - Bha = entity.Info.Bha.Adapt(), - Head = entity.Info.Head.Adapt(), - TimeBalance = entity.Info.TimeBalance.Adapt(), - Dimensionless = entity.Info.Dimensionless.Adapt(), - Saub = entity.Info.Saub.Adapt(), - Sign = entity.Info.Sign.Adapt() - }; - - dto.Head.ReportDate = entity.StartDate - .ToRemoteDateTime(offsetHours); + private static DailyReportDto Convert(AsbCloudDb.Model.DailyReport.DailyReport entity) + { + var dto = entity.Info.Adapt(); + dto.Head.ReportDate = entity.StartDate.Date; return dto; } - private static DailyReportInfo Convert(DailyReportDto dto, double offsetHours) + private static DailyReportInfo Convert(DailyReportDto dto) { var entity = dto.Adapt(); - entity.Head.ReportDate = dto.Head.ReportDate - .ToUtcDateTimeOffset(offsetHours) - .Date; + entity.Head.ReportDate = dto.Head.ReportDate.Date.Date; return entity; } } #nullable disable } - diff --git a/AsbCloudWebApi/Controllers/DailyReportController.cs b/AsbCloudWebApi/Controllers/DailyReportController.cs index 7aec2106..b466abc6 100644 --- a/AsbCloudWebApi/Controllers/DailyReportController.cs +++ b/AsbCloudWebApi/Controllers/DailyReportController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data.DailyReport; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -42,7 +42,7 @@ namespace AsbCloudWebApi.Controllers } /// - /// новый набор данных для формирования рапорта (на новую дату). Если в архиве на эту дату уже есть данные то вернуться они. + /// Получить из БД или генерировать набор данных для формирования рапорта на новую дату. /// /// /// diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs index e70f4f76..5b345220 100644 --- a/ConsoleApp1/Program.cs +++ b/ConsoleApp1/Program.cs @@ -16,7 +16,7 @@ namespace ConsoleApp1 { - var block = new DailyReportHeadDto() + var block = new HeadDto() { AzimuthAngle = 12, WellName = "WellName", @@ -28,11 +28,11 @@ namespace ConsoleApp1 WellDepthIntervalStartDate = 26.5, BottomholeDepth = 66.6 }; - var block2 = new DailyReportBhaDto() + var block2 = new BhaDto() { BHADescription = "sadasdasdasdasdasdjlaskjdaksjdlasdlalskdklj" }; - var block3 = new DailyReportSaubDto(); + var block3 = new SaubDto(); var bloks = new DailyReportDto() { Head = block, From b7af07f995173a4d853c5391ab269ca27d9a2be1 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Wed, 27 Jul 2022 18:14:07 +0500 Subject: [PATCH 25/34] Add UserSettingsController --- .../Services/IUserSettingsRepository.cs | 15 + ...220727111254_Add_user_settings.Designer.cs | 6129 ++++++++++++++++ .../20220727111254_Add_user_settings.cs | 38 + ...d_user_settings_key_size_limit.Designer.cs | 6130 +++++++++++++++++ ...124759_Add_user_settings_key_size_limit.cs | 37 + .../AsbCloudDbContextModelSnapshot.cs | 35 + AsbCloudDb/Model/AsbCloudDbContext.cs | 5 + AsbCloudDb/Model/UserSetting.cs | 24 + AsbCloudInfrastructure/DependencyInjection.cs | 3 +- .../Services/UserSettingsRepository.cs | 72 + .../Controllers/UserSettingsController.cs | 78 + 11 files changed, 12564 insertions(+), 2 deletions(-) create mode 100644 AsbCloudApp/Services/IUserSettingsRepository.cs create mode 100644 AsbCloudDb/Migrations/20220727111254_Add_user_settings.Designer.cs create mode 100644 AsbCloudDb/Migrations/20220727111254_Add_user_settings.cs create mode 100644 AsbCloudDb/Migrations/20220727124759_Add_user_settings_key_size_limit.Designer.cs create mode 100644 AsbCloudDb/Migrations/20220727124759_Add_user_settings_key_size_limit.cs create mode 100644 AsbCloudDb/Model/UserSetting.cs create mode 100644 AsbCloudInfrastructure/Services/UserSettingsRepository.cs create mode 100644 AsbCloudWebApi/Controllers/UserSettingsController.cs diff --git a/AsbCloudApp/Services/IUserSettingsRepository.cs b/AsbCloudApp/Services/IUserSettingsRepository.cs new file mode 100644 index 00000000..218b23f3 --- /dev/null +++ b/AsbCloudApp/Services/IUserSettingsRepository.cs @@ -0,0 +1,15 @@ +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudApp.Services +{ + public interface IUserSettingsRepository + { + public const int ErrorKeyNotFound = -1; + public const int ErrorKeyIsUsed = -2; + Task GetOrDefaultAsync(int userId, string key, CancellationToken token); + Task InsertAsync(int userId, string key, object value, CancellationToken token); + Task UpdateAsync(int userId, string key, object value, CancellationToken token); + Task DeleteAsync(int userId, string key, CancellationToken token); + } +} \ No newline at end of file diff --git a/AsbCloudDb/Migrations/20220727111254_Add_user_settings.Designer.cs b/AsbCloudDb/Migrations/20220727111254_Add_user_settings.Designer.cs new file mode 100644 index 00000000..c95aee81 --- /dev/null +++ b/AsbCloudDb/Migrations/20220727111254_Add_user_settings.Designer.cs @@ -0,0 +1,6129 @@ +// +using System; +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("20220727111254_Add_user_settings")] + partial class Add_user_settings + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "6.0.1") + .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") + .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") + .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") + .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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недрапользователь" + }, + new + { + Id = 2, + Caption = "Буровой подрядчик" + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date") + .HasComment("Дата отчёта"); + + b.Property("Info") + .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") + .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") + .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("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.DrillFlowChart", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellOperationCategory") + .HasColumnType("integer") + .HasColumnName("id_operation_category") + .HasComment("Id типа операции"); + + b.Property("LastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_update") + .HasComment("Дата последнего изменения"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellOperationCategory"); + + b.ToTable("t_drill_flow_chart"); + + 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.DrillParams", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadAvg") + .HasColumnType("double precision") + .HasColumnName("axial_load_avg") + .HasComment("Средняя нагрузка"); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowAvg") + .HasColumnType("double precision") + .HasColumnName("flow_avg") + .HasComment("Средний расход"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Id с типом секции скважины"); + + b.Property("PressureAvg") + .HasColumnType("double precision") + .HasColumnName("pressure_avg") + .HasComment("Среднее давление"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_avg") + .HasComment("Средние обороты на ВСП"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_avg") + .HasComment("Средний момент на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_drill_params"); + + b.HasComment("Режим бурения в секции (диапазоны параметров бурения)"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .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 = "Программы цементирования обсадных колонн" + }); + }); + + 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") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("PublishInfo") + .HasColumnType("jsonb") + .HasColumnName("publish_info") + .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.Measure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .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") + .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.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") + .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 = 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" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("IdCompany", "IdWell"); + + b.HasIndex("IdWell"); + + b.ToTable("t_relation_company_well"); + + b.HasComment("отношение скважин и компаний"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part"); + + b.HasComment("Отношение пользователей и частей ПБ"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission"); + + b.HasComment("Отношение ролей пользователей и разрешений доступа"); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role"); + + b.HasComment("Отношение ролей к ролям"); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role"); + + b.HasComment("Отношение пользователей и ролей"); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property"); + + b.HasComment("Отчеты с данными по буровым"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule"); + + b.HasComment("График работы бурильщика"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest"); + + b.HasComment("Запросы на изменение уставок панели оператора"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry"); + + b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub"); + + b.HasComment("набор основных данных по SAUB"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToView("mw_telemetry_datas_saub_stat"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("BreakAngleK") + .HasColumnType("real") + .HasColumnName("break_angle_k") + .HasComment("Коэффициент для расчёта за какой угол нужно тормозить"); + + b.Property("BreakAngleLeft") + .HasColumnType("real") + .HasColumnName("break_angle_left") + .HasComment("Угол торможения влево при работе по моменту"); + + b.Property("EncoderResolution") + .HasColumnType("real") + .HasColumnName("encoder_resolution") + .HasComment("Разрешение энкодера"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PidMuxTorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("pid_mux_torque_left_limit") + .HasComment(" Момент при котором определяется ехать назад по моменту или по скорости"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("Ratio") + .HasColumnType("real") + .HasColumnName("ratio") + .HasComment(" Коэффициент редукции редуктора"); + + b.Property("ReverseKTorque") + .HasColumnType("real") + .HasColumnName("reverse_k_torque") + .HasComment("Коэффициент на который умножается момент, для того чтобы система поняла что мы движемся в обратную сторону"); + + b.Property("ReverseSpeedSpZeroTime") + .HasColumnType("smallint") + .HasColumnName("reverse_speed_sp_zero_time") + .HasComment("Время выдачи сигнала нулевой скорости на при смене направления"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("RotorTorqueAvg") + .HasColumnType("real") + .HasColumnName("rotor_torque_avg") + .HasComment("Момент в роторе средний"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.Property("TopDriveSpeed") + .HasColumnType("real") + .HasColumnName("top_drive_speed") + .HasComment("Скорость СВП"); + + b.Property("TopDriveSpeedErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_err"); + + b.Property("TopDriveSpeedMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_max") + .HasComment("верхний предел"); + + b.Property("TopDriveSpeedMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_min") + .HasComment("нижний предел"); + + b.Property("TopDriveSpeedOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_offset") + .HasComment("смещение"); + + b.Property("TopDriveSpeedSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from") + .HasComment("Заданная скорость c СВП"); + + b.Property("TopDriveSpeedSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_from_err"); + + b.Property("TopDriveSpeedSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_max"); + + b.Property("TopDriveSpeedSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_min"); + + b.Property("TopDriveSpeedSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_offset"); + + b.Property("TopDriveSpeedSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to") + .HasComment("Задание скорости на СВП"); + + b.Property("TopDriveSpeedSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_to_err"); + + b.Property("TopDriveSpeedSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_max"); + + b.Property("TopDriveSpeedSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_min"); + + b.Property("TopDriveSpeedSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_offset"); + + b.Property("TopDriveTorque") + .HasColumnType("real") + .HasColumnName("top_drive_torque") + .HasComment("Момент СВП"); + + b.Property("TopDriveTorqueErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_err"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_max"); + + b.Property("TopDriveTorqueMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_min"); + + b.Property("TopDriveTorqueOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_offset"); + + b.Property("TopDriveTorqueSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from") + .HasComment("Заданный момент c СВП"); + + b.Property("TopDriveTorqueSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_from_err"); + + b.Property("TopDriveTorqueSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_max"); + + b.Property("TopDriveTorqueSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_min"); + + b.Property("TopDriveTorqueSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_offset"); + + b.Property("TopDriveTorqueSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to") + .HasComment("Задание момента на СВП"); + + b.Property("TopDriveTorqueSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_to_err"); + + b.Property("TopDriveTorqueSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_max"); + + b.Property("TopDriveTorqueSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_min"); + + b.Property("TopDriveTorqueSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_offset"); + + b.Property("TorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("torque_left_limit") + .HasComment("Ограничение крутящего момента влево"); + + b.Property("TorqueRampTime") + .HasColumnType("real") + .HasColumnName("torque_ramp_time") + .HasComment("Время нарастания момента"); + + b.Property("TorqueRightLimit") + .HasColumnType("real") + .HasColumnName("torque_right_limit") + .HasComment("Ограничение крутящего момента вправо"); + + b.Property("TorqueStarting") + .HasColumnType("real") + .HasColumnName("torque_starting") + .HasComment("Страгивающий момент"); + + b.Property("TurnLeftOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_angle") + .HasComment("Доворот по градусам единожды влево"); + + b.Property("TurnLeftOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_revols") + .HasComment("Доворот по оборотам единожды влево"); + + b.Property("TurnLeftOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_torque") + .HasComment("Доворот по моменту единожды влево"); + + b.Property("TurnRightOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_angle") + .HasComment("Доворот по градусам единожды вправо"); + + b.Property("TurnRightOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_revols") + .HasComment("Доворот по оборотам единожды вправо"); + + b.Property("TurnRightOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_torque") + .HasComment("Доворот по моменту единожды вправо"); + + b.Property("UnlockBySectorOut") + .HasColumnType("real") + .HasColumnName("unlock_by_sector_out") + .HasComment(" Градус отклонения от сектора для автоматического сброса блокировки"); + + b.Property("Ver") + .HasColumnType("real") + .HasColumnName("ver") + .HasComment("Версия ПО ПЛК"); + + b.Property("W2800") + .HasColumnType("smallint") + .HasColumnName("w2800") + .HasComment("Установка нуля энкодера"); + + b.Property("W2808") + .HasColumnType("smallint") + .HasColumnName("w2808") + .HasComment("Неисправность энкодера"); + + b.Property("W2810") + .HasColumnType("smallint") + .HasColumnName("w2810") + .HasComment(" автоматический сброс блокировки"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin"); + + b.HasComment("набор основных данных по SpinMaster"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event"); + + b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message"); + + b.HasComment("Сообщения на буровых"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user"); + + b.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n100 - удален"); + + b.Property("Login") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user"); + + b.HasComment("Пользователи облака"); + + b.HasData( + new + { + Id = 1, + IdCompany = 1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role"); + + b.HasComment("Роли пользователей в системе"); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("idUser"); + + b.Property("Key") + .HasColumnType("text") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings"); + + b.HasComment("настройки интерфейса пользователя"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well"); + + b.HasComment("скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite"); + + b.HasComment("Композитная скважина"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation"); + + b.HasComment("Данные по операциям на скважине"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("integer") + .HasColumnName("code") + .HasComment("Код операции"); + + b.Property("Name") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.ToTable("t_well_operation_category"); + + b.HasComment("Справочник операций на скважине"); + + b.HasData( + new + { + Id = 1, + Code = 0, + Name = "Невозможно определить операцию" + }, + new + { + Id = 2, + Code = 0, + Name = "Роторное бурение" + }, + new + { + Id = 3, + Code = 0, + Name = "Слайдирование" + }, + new + { + Id = 4, + Code = 0, + Name = "Подъем с проработкой" + }, + new + { + Id = 5, + Code = 0, + Name = "Спуск с проработкой" + }, + new + { + Id = 6, + Code = 0, + Name = "Подъем с промывкой" + }, + new + { + Id = 7, + Code = 0, + Name = "Спуск с промывкой" + }, + new + { + Id = 8, + Code = 0, + Name = "Спуск в скважину" + }, + new + { + Id = 9, + Code = 0, + Name = "Спуск с вращением" + }, + new + { + Id = 10, + Code = 0, + Name = "Подъем из скважины" + }, + new + { + Id = 11, + Code = 0, + Name = "Подъем с вращением" + }, + new + { + Id = 12, + Code = 0, + Name = "Промывка в покое" + }, + new + { + Id = 13, + Code = 0, + Name = "Промывка с вращением" + }, + new + { + Id = 14, + Code = 0, + Name = "Удержание в клиньях" + }, + new + { + Id = 15, + Code = 0, + Name = "Неподвижное состояние" + }, + new + { + Id = 16, + Code = 0, + Name = "Вращение без циркуляции" + }, + new + { + Id = 17, + Code = 0, + Name = "На поверхности" + }, + new + { + Id = 18, + Code = 0, + Name = "Проработка перед наращиванием" + }, + new + { + Id = 19, + Code = 0, + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 20, + Code = 0, + Name = "Промывка перед наращиванием" + }, + new + { + Id = 21, + Code = 0, + Name = "Статический замер телесистемы" + }, + new + { + Id = 1001, + Code = 0, + Name = "Бурение" + }, + new + { + Id = 1002, + Code = 0, + Name = "ГИС" + }, + new + { + Id = 1003, + Code = 0, + Name = "ГФР" + }, + new + { + Id = 1004, + Code = 0, + Name = "Монтаж ПВО" + }, + new + { + Id = 1005, + Code = 0, + Name = "Демонтаж ПВО" + }, + new + { + Id = 1006, + Code = 0, + Name = "Установка ФА" + }, + new + { + Id = 1007, + Code = 0, + Name = "Оборудование устья" + }, + new + { + Id = 1008, + Code = 0, + Name = "ОЗЦ" + }, + new + { + Id = 1011, + Code = 0, + Name = "Начало цикла строительства скважины" + }, + new + { + Id = 1012, + Code = 0, + Name = "Окончание цикла строительства скважины" + }, + new + { + Id = 1013, + Code = 0, + Name = "Опрессовка ПВО" + }, + new + { + Id = 1014, + Code = 0, + Name = "Опрессовка Ц.К." + }, + new + { + Id = 1015, + Code = 0, + Name = "Опрессовка ВЗД" + }, + new + { + Id = 1016, + Code = 0, + Name = "Перевод скв на другой тип промывочной жидкости" + }, + new + { + Id = 1017, + Code = 0, + Name = "Перезапись каротажа" + }, + new + { + Id = 1018, + Code = 0, + Name = "Перетяжка талевого каната" + }, + new + { + Id = 1019, + Code = 0, + Name = "Наращивание, промывка" + }, + new + { + Id = 1020, + Code = 0, + Name = "Подъем инструмента" + }, + new + { + Id = 1021, + Code = 0, + Name = "Подъем инструмента с промывкой" + }, + new + { + Id = 1022, + Code = 0, + Name = "Обратная проработка" + }, + new + { + Id = 1023, + Code = 0, + Name = "Сборка инструмента с мостков" + }, + new + { + Id = 1024, + Code = 0, + Name = "Подготовительные работы" + }, + new + { + Id = 1025, + Code = 0, + Name = "Сборка КНБК" + }, + new + { + Id = 1026, + Code = 0, + Name = "Разборка КНБК" + }, + new + { + Id = 1027, + Code = 0, + Name = "Промывка" + }, + new + { + Id = 1028, + Code = 0, + Name = "Промежуточная промывка" + }, + new + { + Id = 1029, + Code = 0, + Name = "Прокачка пачек" + }, + new + { + Id = 1030, + Code = 0, + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 1031, + Code = 0, + Name = "Ремонт" + }, + new + { + Id = 1032, + Code = 0, + Name = "Спуск инструмента" + }, + new + { + Id = 1033, + Code = 0, + Name = "Спуск инструмента с промывкой" + }, + new + { + Id = 1034, + Code = 0, + Name = "Прямая проработка" + }, + new + { + Id = 1035, + Code = 0, + Name = "Принудительная проработка" + }, + new + { + Id = 1037, + Code = 0, + Name = "Тех СПО-подъем" + }, + new + { + Id = 1038, + Code = 0, + Name = "Тех СПО-спуск" + }, + new + { + Id = 1039, + Code = 0, + Name = "Техническое обслуживание" + }, + new + { + Id = 1040, + Code = 0, + Name = "Цементаж" + }, + new + { + Id = 1041, + Code = 0, + Name = "Шаблонировка ствола" + }, + new + { + Id = 1042, + Code = 0, + Name = "Геологическое осложнение" + }, + new + { + Id = 1043, + Code = 0, + Name = "НПВ" + }, + new + { + Id = 1044, + Code = 0, + Name = "ВМР" + }, + new + { + Id = 1045, + Code = 0, + Name = "Прочее" + }, + new + { + Id = 1046, + Code = 0, + Name = "Спуск КНБК" + }, + new + { + Id = 1047, + Code = 0, + Name = "Подъем КНБК" + }, + new + { + Id = 1048, + Code = 0, + Name = "Спуск ОК" + }, + new + { + Id = 1050, + Code = 0, + Name = "Промывка при спуске ОК" + }, + new + { + Id = 1051, + Code = 0, + Name = "Замер ТС" + }, + new + { + Id = 1052, + Code = 0, + Name = "Тех. отстой" + }, + new + { + Id = 1053, + Code = 0, + Name = "Циркуляция и Обработка БР" + }, + new + { + Id = 1054, + Code = 0, + Name = "Срезка ствола" + }, + new + { + Id = 1055, + Code = 0, + Name = "Вспомогательные работы" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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.HasKey("Id"); + + b.ToTable("t_well_section_type"); + + b.HasComment("конструкция секции скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол" + }, + new + { + Id = 2, + Caption = "Направление" + }, + new + { + Id = 3, + Caption = "Кондуктор" + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна" + }, + new + { + Id = 5, + Caption = "Транспортный ствол" + }, + new + { + Id = 6, + Caption = "Хвостовик" + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2" + }, + new + { + Id = 8, + Caption = "Направление 2" + }, + new + { + Id = 9, + Caption = "Кондуктор 2" + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2" + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2" + }, + new + { + Id = 12, + Caption = "Хвостовик 2" + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3" + }, + new + { + Id = 14, + Caption = "Направление 3" + }, + new + { + Id = 15, + Caption = "Кондуктор 3" + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3" + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3" + }, + new + { + Id = 18, + Caption = "Хвостовик 3" + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4" + }, + new + { + Id = 20, + Caption = "Направление 4" + }, + new + { + Id = 21, + Caption = "Кондуктор 4" + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4" + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4" + }, + new + { + Id = 24, + Caption = "Хвостовик 4" + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5" + }, + new + { + Id = 26, + Caption = "Направление 5" + }, + new + { + Id = 27, + Caption = "Кондуктор 5" + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5" + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5" + }, + new + { + Id = 30, + Caption = "Хвостовик 5" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type"); + + b.HasComment("конструкция скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillParams", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("DrillParamsCollection") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_drill_params_t_well_section_type_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType"); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("DrillParamsCollection"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20220727111254_Add_user_settings.cs b/AsbCloudDb/Migrations/20220727111254_Add_user_settings.cs new file mode 100644 index 00000000..7d317685 --- /dev/null +++ b/AsbCloudDb/Migrations/20220727111254_Add_user_settings.cs @@ -0,0 +1,38 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + public partial class Add_user_settings : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "t_user_settings", + columns: table => new + { + idUser = table.Column(type: "integer", nullable: false), + key = table.Column(type: "text", nullable: false, comment: "Ключ настроек пользователя"), + setting_value = table.Column(type: "jsonb", nullable: true, comment: "Значение настроек пользователя") + }, + constraints: table => + { + table.PrimaryKey("PK_t_user_settings", x => new { x.idUser, x.key }); + table.ForeignKey( + name: "FK_t_user_settings_t_user_idUser", + column: x => x.idUser, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "настройки интерфейса пользователя"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "t_user_settings"); + } + } +} diff --git a/AsbCloudDb/Migrations/20220727124759_Add_user_settings_key_size_limit.Designer.cs b/AsbCloudDb/Migrations/20220727124759_Add_user_settings_key_size_limit.Designer.cs new file mode 100644 index 00000000..2a3d4a6e --- /dev/null +++ b/AsbCloudDb/Migrations/20220727124759_Add_user_settings_key_size_limit.Designer.cs @@ -0,0 +1,6130 @@ +// +using System; +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("20220727124759_Add_user_settings_key_size_limit")] + partial class Add_user_settings_key_size_limit + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "6.0.1") + .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") + .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") + .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") + .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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недрапользователь" + }, + new + { + Id = 2, + Caption = "Буровой подрядчик" + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date") + .HasComment("Дата отчёта"); + + b.Property("Info") + .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") + .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") + .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("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.DrillFlowChart", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellOperationCategory") + .HasColumnType("integer") + .HasColumnName("id_operation_category") + .HasComment("Id типа операции"); + + b.Property("LastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_update") + .HasComment("Дата последнего изменения"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellOperationCategory"); + + b.ToTable("t_drill_flow_chart"); + + 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.DrillParams", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadAvg") + .HasColumnType("double precision") + .HasColumnName("axial_load_avg") + .HasComment("Средняя нагрузка"); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowAvg") + .HasColumnType("double precision") + .HasColumnName("flow_avg") + .HasComment("Средний расход"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Id с типом секции скважины"); + + b.Property("PressureAvg") + .HasColumnType("double precision") + .HasColumnName("pressure_avg") + .HasComment("Среднее давление"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_avg") + .HasComment("Средние обороты на ВСП"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_avg") + .HasComment("Средний момент на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_drill_params"); + + b.HasComment("Режим бурения в секции (диапазоны параметров бурения)"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .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 = "Программы цементирования обсадных колонн" + }); + }); + + 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") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("PublishInfo") + .HasColumnType("jsonb") + .HasColumnName("publish_info") + .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.Measure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .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") + .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.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") + .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 = 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" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("IdCompany", "IdWell"); + + b.HasIndex("IdWell"); + + b.ToTable("t_relation_company_well"); + + b.HasComment("отношение скважин и компаний"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part"); + + b.HasComment("Отношение пользователей и частей ПБ"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission"); + + b.HasComment("Отношение ролей пользователей и разрешений доступа"); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role"); + + b.HasComment("Отношение ролей к ролям"); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role"); + + b.HasComment("Отношение пользователей и ролей"); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property"); + + b.HasComment("Отчеты с данными по буровым"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule"); + + b.HasComment("График работы бурильщика"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest"); + + b.HasComment("Запросы на изменение уставок панели оператора"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry"); + + b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub"); + + b.HasComment("набор основных данных по SAUB"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToView("mw_telemetry_datas_saub_stat"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("BreakAngleK") + .HasColumnType("real") + .HasColumnName("break_angle_k") + .HasComment("Коэффициент для расчёта за какой угол нужно тормозить"); + + b.Property("BreakAngleLeft") + .HasColumnType("real") + .HasColumnName("break_angle_left") + .HasComment("Угол торможения влево при работе по моменту"); + + b.Property("EncoderResolution") + .HasColumnType("real") + .HasColumnName("encoder_resolution") + .HasComment("Разрешение энкодера"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PidMuxTorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("pid_mux_torque_left_limit") + .HasComment(" Момент при котором определяется ехать назад по моменту или по скорости"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("Ratio") + .HasColumnType("real") + .HasColumnName("ratio") + .HasComment(" Коэффициент редукции редуктора"); + + b.Property("ReverseKTorque") + .HasColumnType("real") + .HasColumnName("reverse_k_torque") + .HasComment("Коэффициент на который умножается момент, для того чтобы система поняла что мы движемся в обратную сторону"); + + b.Property("ReverseSpeedSpZeroTime") + .HasColumnType("smallint") + .HasColumnName("reverse_speed_sp_zero_time") + .HasComment("Время выдачи сигнала нулевой скорости на при смене направления"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("RotorTorqueAvg") + .HasColumnType("real") + .HasColumnName("rotor_torque_avg") + .HasComment("Момент в роторе средний"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.Property("TopDriveSpeed") + .HasColumnType("real") + .HasColumnName("top_drive_speed") + .HasComment("Скорость СВП"); + + b.Property("TopDriveSpeedErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_err"); + + b.Property("TopDriveSpeedMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_max") + .HasComment("верхний предел"); + + b.Property("TopDriveSpeedMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_min") + .HasComment("нижний предел"); + + b.Property("TopDriveSpeedOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_offset") + .HasComment("смещение"); + + b.Property("TopDriveSpeedSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from") + .HasComment("Заданная скорость c СВП"); + + b.Property("TopDriveSpeedSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_from_err"); + + b.Property("TopDriveSpeedSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_max"); + + b.Property("TopDriveSpeedSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_min"); + + b.Property("TopDriveSpeedSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_offset"); + + b.Property("TopDriveSpeedSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to") + .HasComment("Задание скорости на СВП"); + + b.Property("TopDriveSpeedSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_to_err"); + + b.Property("TopDriveSpeedSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_max"); + + b.Property("TopDriveSpeedSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_min"); + + b.Property("TopDriveSpeedSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_offset"); + + b.Property("TopDriveTorque") + .HasColumnType("real") + .HasColumnName("top_drive_torque") + .HasComment("Момент СВП"); + + b.Property("TopDriveTorqueErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_err"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_max"); + + b.Property("TopDriveTorqueMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_min"); + + b.Property("TopDriveTorqueOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_offset"); + + b.Property("TopDriveTorqueSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from") + .HasComment("Заданный момент c СВП"); + + b.Property("TopDriveTorqueSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_from_err"); + + b.Property("TopDriveTorqueSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_max"); + + b.Property("TopDriveTorqueSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_min"); + + b.Property("TopDriveTorqueSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_offset"); + + b.Property("TopDriveTorqueSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to") + .HasComment("Задание момента на СВП"); + + b.Property("TopDriveTorqueSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_to_err"); + + b.Property("TopDriveTorqueSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_max"); + + b.Property("TopDriveTorqueSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_min"); + + b.Property("TopDriveTorqueSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_offset"); + + b.Property("TorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("torque_left_limit") + .HasComment("Ограничение крутящего момента влево"); + + b.Property("TorqueRampTime") + .HasColumnType("real") + .HasColumnName("torque_ramp_time") + .HasComment("Время нарастания момента"); + + b.Property("TorqueRightLimit") + .HasColumnType("real") + .HasColumnName("torque_right_limit") + .HasComment("Ограничение крутящего момента вправо"); + + b.Property("TorqueStarting") + .HasColumnType("real") + .HasColumnName("torque_starting") + .HasComment("Страгивающий момент"); + + b.Property("TurnLeftOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_angle") + .HasComment("Доворот по градусам единожды влево"); + + b.Property("TurnLeftOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_revols") + .HasComment("Доворот по оборотам единожды влево"); + + b.Property("TurnLeftOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_torque") + .HasComment("Доворот по моменту единожды влево"); + + b.Property("TurnRightOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_angle") + .HasComment("Доворот по градусам единожды вправо"); + + b.Property("TurnRightOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_revols") + .HasComment("Доворот по оборотам единожды вправо"); + + b.Property("TurnRightOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_torque") + .HasComment("Доворот по моменту единожды вправо"); + + b.Property("UnlockBySectorOut") + .HasColumnType("real") + .HasColumnName("unlock_by_sector_out") + .HasComment(" Градус отклонения от сектора для автоматического сброса блокировки"); + + b.Property("Ver") + .HasColumnType("real") + .HasColumnName("ver") + .HasComment("Версия ПО ПЛК"); + + b.Property("W2800") + .HasColumnType("smallint") + .HasColumnName("w2800") + .HasComment("Установка нуля энкодера"); + + b.Property("W2808") + .HasColumnType("smallint") + .HasColumnName("w2808") + .HasComment("Неисправность энкодера"); + + b.Property("W2810") + .HasColumnType("smallint") + .HasColumnName("w2810") + .HasComment(" автоматический сброс блокировки"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin"); + + b.HasComment("набор основных данных по SpinMaster"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event"); + + b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message"); + + b.HasComment("Сообщения на буровых"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user"); + + b.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n100 - удален"); + + b.Property("Login") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user"); + + b.HasComment("Пользователи облака"); + + b.HasData( + new + { + Id = 1, + IdCompany = 1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role"); + + b.HasComment("Роли пользователей в системе"); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("idUser"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings"); + + b.HasComment("настройки интерфейса пользователя"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well"); + + b.HasComment("скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite"); + + b.HasComment("Композитная скважина"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation"); + + b.HasComment("Данные по операциям на скважине"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("integer") + .HasColumnName("code") + .HasComment("Код операции"); + + b.Property("Name") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.ToTable("t_well_operation_category"); + + b.HasComment("Справочник операций на скважине"); + + b.HasData( + new + { + Id = 1, + Code = 0, + Name = "Невозможно определить операцию" + }, + new + { + Id = 2, + Code = 0, + Name = "Роторное бурение" + }, + new + { + Id = 3, + Code = 0, + Name = "Слайдирование" + }, + new + { + Id = 4, + Code = 0, + Name = "Подъем с проработкой" + }, + new + { + Id = 5, + Code = 0, + Name = "Спуск с проработкой" + }, + new + { + Id = 6, + Code = 0, + Name = "Подъем с промывкой" + }, + new + { + Id = 7, + Code = 0, + Name = "Спуск с промывкой" + }, + new + { + Id = 8, + Code = 0, + Name = "Спуск в скважину" + }, + new + { + Id = 9, + Code = 0, + Name = "Спуск с вращением" + }, + new + { + Id = 10, + Code = 0, + Name = "Подъем из скважины" + }, + new + { + Id = 11, + Code = 0, + Name = "Подъем с вращением" + }, + new + { + Id = 12, + Code = 0, + Name = "Промывка в покое" + }, + new + { + Id = 13, + Code = 0, + Name = "Промывка с вращением" + }, + new + { + Id = 14, + Code = 0, + Name = "Удержание в клиньях" + }, + new + { + Id = 15, + Code = 0, + Name = "Неподвижное состояние" + }, + new + { + Id = 16, + Code = 0, + Name = "Вращение без циркуляции" + }, + new + { + Id = 17, + Code = 0, + Name = "На поверхности" + }, + new + { + Id = 18, + Code = 0, + Name = "Проработка перед наращиванием" + }, + new + { + Id = 19, + Code = 0, + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 20, + Code = 0, + Name = "Промывка перед наращиванием" + }, + new + { + Id = 21, + Code = 0, + Name = "Статический замер телесистемы" + }, + new + { + Id = 1001, + Code = 0, + Name = "Бурение" + }, + new + { + Id = 1002, + Code = 0, + Name = "ГИС" + }, + new + { + Id = 1003, + Code = 0, + Name = "ГФР" + }, + new + { + Id = 1004, + Code = 0, + Name = "Монтаж ПВО" + }, + new + { + Id = 1005, + Code = 0, + Name = "Демонтаж ПВО" + }, + new + { + Id = 1006, + Code = 0, + Name = "Установка ФА" + }, + new + { + Id = 1007, + Code = 0, + Name = "Оборудование устья" + }, + new + { + Id = 1008, + Code = 0, + Name = "ОЗЦ" + }, + new + { + Id = 1011, + Code = 0, + Name = "Начало цикла строительства скважины" + }, + new + { + Id = 1012, + Code = 0, + Name = "Окончание цикла строительства скважины" + }, + new + { + Id = 1013, + Code = 0, + Name = "Опрессовка ПВО" + }, + new + { + Id = 1014, + Code = 0, + Name = "Опрессовка Ц.К." + }, + new + { + Id = 1015, + Code = 0, + Name = "Опрессовка ВЗД" + }, + new + { + Id = 1016, + Code = 0, + Name = "Перевод скв на другой тип промывочной жидкости" + }, + new + { + Id = 1017, + Code = 0, + Name = "Перезапись каротажа" + }, + new + { + Id = 1018, + Code = 0, + Name = "Перетяжка талевого каната" + }, + new + { + Id = 1019, + Code = 0, + Name = "Наращивание, промывка" + }, + new + { + Id = 1020, + Code = 0, + Name = "Подъем инструмента" + }, + new + { + Id = 1021, + Code = 0, + Name = "Подъем инструмента с промывкой" + }, + new + { + Id = 1022, + Code = 0, + Name = "Обратная проработка" + }, + new + { + Id = 1023, + Code = 0, + Name = "Сборка инструмента с мостков" + }, + new + { + Id = 1024, + Code = 0, + Name = "Подготовительные работы" + }, + new + { + Id = 1025, + Code = 0, + Name = "Сборка КНБК" + }, + new + { + Id = 1026, + Code = 0, + Name = "Разборка КНБК" + }, + new + { + Id = 1027, + Code = 0, + Name = "Промывка" + }, + new + { + Id = 1028, + Code = 0, + Name = "Промежуточная промывка" + }, + new + { + Id = 1029, + Code = 0, + Name = "Прокачка пачек" + }, + new + { + Id = 1030, + Code = 0, + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 1031, + Code = 0, + Name = "Ремонт" + }, + new + { + Id = 1032, + Code = 0, + Name = "Спуск инструмента" + }, + new + { + Id = 1033, + Code = 0, + Name = "Спуск инструмента с промывкой" + }, + new + { + Id = 1034, + Code = 0, + Name = "Прямая проработка" + }, + new + { + Id = 1035, + Code = 0, + Name = "Принудительная проработка" + }, + new + { + Id = 1037, + Code = 0, + Name = "Тех СПО-подъем" + }, + new + { + Id = 1038, + Code = 0, + Name = "Тех СПО-спуск" + }, + new + { + Id = 1039, + Code = 0, + Name = "Техническое обслуживание" + }, + new + { + Id = 1040, + Code = 0, + Name = "Цементаж" + }, + new + { + Id = 1041, + Code = 0, + Name = "Шаблонировка ствола" + }, + new + { + Id = 1042, + Code = 0, + Name = "Геологическое осложнение" + }, + new + { + Id = 1043, + Code = 0, + Name = "НПВ" + }, + new + { + Id = 1044, + Code = 0, + Name = "ВМР" + }, + new + { + Id = 1045, + Code = 0, + Name = "Прочее" + }, + new + { + Id = 1046, + Code = 0, + Name = "Спуск КНБК" + }, + new + { + Id = 1047, + Code = 0, + Name = "Подъем КНБК" + }, + new + { + Id = 1048, + Code = 0, + Name = "Спуск ОК" + }, + new + { + Id = 1050, + Code = 0, + Name = "Промывка при спуске ОК" + }, + new + { + Id = 1051, + Code = 0, + Name = "Замер ТС" + }, + new + { + Id = 1052, + Code = 0, + Name = "Тех. отстой" + }, + new + { + Id = 1053, + Code = 0, + Name = "Циркуляция и Обработка БР" + }, + new + { + Id = 1054, + Code = 0, + Name = "Срезка ствола" + }, + new + { + Id = 1055, + Code = 0, + Name = "Вспомогательные работы" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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.HasKey("Id"); + + b.ToTable("t_well_section_type"); + + b.HasComment("конструкция секции скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол" + }, + new + { + Id = 2, + Caption = "Направление" + }, + new + { + Id = 3, + Caption = "Кондуктор" + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна" + }, + new + { + Id = 5, + Caption = "Транспортный ствол" + }, + new + { + Id = 6, + Caption = "Хвостовик" + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2" + }, + new + { + Id = 8, + Caption = "Направление 2" + }, + new + { + Id = 9, + Caption = "Кондуктор 2" + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2" + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2" + }, + new + { + Id = 12, + Caption = "Хвостовик 2" + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3" + }, + new + { + Id = 14, + Caption = "Направление 3" + }, + new + { + Id = 15, + Caption = "Кондуктор 3" + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3" + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3" + }, + new + { + Id = 18, + Caption = "Хвостовик 3" + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4" + }, + new + { + Id = 20, + Caption = "Направление 4" + }, + new + { + Id = 21, + Caption = "Кондуктор 4" + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4" + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4" + }, + new + { + Id = 24, + Caption = "Хвостовик 4" + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5" + }, + new + { + Id = 26, + Caption = "Направление 5" + }, + new + { + Id = 27, + Caption = "Кондуктор 5" + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5" + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5" + }, + new + { + Id = 30, + Caption = "Хвостовик 5" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type"); + + b.HasComment("конструкция скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillParams", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("DrillParamsCollection") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_drill_params_t_well_section_type_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType"); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("DrillParamsCollection"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20220727124759_Add_user_settings_key_size_limit.cs b/AsbCloudDb/Migrations/20220727124759_Add_user_settings_key_size_limit.cs new file mode 100644 index 00000000..ddfef84f --- /dev/null +++ b/AsbCloudDb/Migrations/20220727124759_Add_user_settings_key_size_limit.cs @@ -0,0 +1,37 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + public partial class Add_user_settings_key_size_limit : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "key", + table: "t_user_settings", + type: "character varying(255)", + maxLength: 255, + nullable: false, + comment: "Ключ настроек пользователя", + oldClrType: typeof(string), + oldType: "text", + oldComment: "Ключ настроек пользователя"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "key", + table: "t_user_settings", + type: "text", + nullable: false, + comment: "Ключ настроек пользователя", + oldClrType: typeof(string), + oldType: "character varying(255)", + oldMaxLength: 255, + oldComment: "Ключ настроек пользователя"); + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index e849a0c8..6565372c 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -3872,6 +3872,30 @@ namespace AsbCloudDb.Migrations }); }); + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("idUser"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings"); + + b.HasComment("настройки интерфейса пользователя"); + }); + modelBuilder.Entity("AsbCloudDb.Model.Well", b => { b.Property("Id") @@ -5810,6 +5834,17 @@ namespace AsbCloudDb.Migrations b.Navigation("Company"); }); + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + modelBuilder.Entity("AsbCloudDb.Model.Well", b => { b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index 50c1a70a..82ac9756 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -38,6 +38,7 @@ namespace AsbCloudDb.Model public virtual DbSet TelemetryUsers => Set(); public virtual DbSet Users => Set(); public virtual DbSet UserRoles => Set(); + public virtual DbSet UserSettings => Set(); public virtual DbSet Wells => Set(); public virtual DbSet WellComposites => Set(); public virtual DbSet WellOperations => Set(); @@ -837,6 +838,10 @@ namespace AsbCloudDb.Model }); }); + modelBuilder.Entity(entity => + { + entity.HasKey(nameof(UserSetting.IdUser), nameof(UserSetting.Key)); + }); } public Task RefreshMaterializedViewAsync(string? mwName = null, CancellationToken token = default) where TEntity : class diff --git a/AsbCloudDb/Model/UserSetting.cs b/AsbCloudDb/Model/UserSetting.cs new file mode 100644 index 00000000..335da9c0 --- /dev/null +++ b/AsbCloudDb/Model/UserSetting.cs @@ -0,0 +1,24 @@ +using Microsoft.EntityFrameworkCore; +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace AsbCloudDb.Model +{ + + [Table("t_user_settings"), Comment("настройки интерфейса пользователя")] + public class UserSetting + { + [Column("idUser")] + public int IdUser { get; set; } + + [Column("key"), Comment("Ключ настроек пользователя"), StringLength(255)] + public string Key { get; set; } = null!; + + [Column("setting_value", TypeName = "jsonb"), Comment("Значение настроек пользователя")] + public object? Value { get; set; } + + [ForeignKey(nameof(IdUser))] + public User User { get; set; } = null!; + } +} diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs index c4cab363..cbcab698 100644 --- a/AsbCloudInfrastructure/DependencyInjection.cs +++ b/AsbCloudInfrastructure/DependencyInjection.cs @@ -67,8 +67,6 @@ namespace AsbCloudInfrastructure .ForType() .Ignore(dst => dst.Deposit, dst => dst.Wells); - - } public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration) @@ -119,6 +117,7 @@ namespace AsbCloudInfrastructure services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); // admin crud services: services.AddTransient, CrudServiceBase>(s => diff --git a/AsbCloudInfrastructure/Services/UserSettingsRepository.cs b/AsbCloudInfrastructure/Services/UserSettingsRepository.cs new file mode 100644 index 00000000..f81db864 --- /dev/null +++ b/AsbCloudInfrastructure/Services/UserSettingsRepository.cs @@ -0,0 +1,72 @@ +using AsbCloudApp.Services; +using AsbCloudDb.Model; +using Microsoft.EntityFrameworkCore; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services +{ + public class UserSettingsRepository : IUserSettingsRepository + { + private readonly IAsbCloudDbContext context; + + public UserSettingsRepository(IAsbCloudDbContext context) + { + this.context = context; + } + + public Task GetOrDefaultAsync(int userId, string key, CancellationToken token) + => context.Set() + .Where(s => s.IdUser == userId && s.Key == key) + .Select(s=>s.Value) + .FirstOrDefaultAsync(token); + + public async Task InsertAsync(int userId, string key, object value, CancellationToken token) + { + var set = context.Set(); + + if (await set.AnyAsync(s=>s.IdUser == userId && s.Key == key, token)) + return IUserSettingsRepository.ErrorKeyIsUsed; + + var entity = new UserSetting + { + IdUser = userId, + Key = key, + Value = value, + }; + + context.Set() + .Add(entity); + + return await context.SaveChangesAsync(token); + } + + public async Task UpdateAsync(int userId, string key, object value, CancellationToken token) + { + var set = context.Set(); + var updatingItem = await set + .FirstOrDefaultAsync(s => s.IdUser == userId && s.Key == key, token); + + if (updatingItem is null) + return IUserSettingsRepository.ErrorKeyNotFound; + + updatingItem.Value = value; + set.Update(updatingItem); + + return await context.SaveChangesAsync(token); + } + public async Task DeleteAsync(int userId, string key, CancellationToken token) + { + var set = context.Set(); + var removingItem = await set + .FirstOrDefaultAsync(s=>s.IdUser == userId && s.Key ==key, token); + + if(removingItem is null) + return IUserSettingsRepository.ErrorKeyNotFound; + + set.Remove(removingItem); + return await context.SaveChangesAsync(token); + } + } +} diff --git a/AsbCloudWebApi/Controllers/UserSettingsController.cs b/AsbCloudWebApi/Controllers/UserSettingsController.cs new file mode 100644 index 00000000..807a4aeb --- /dev/null +++ b/AsbCloudWebApi/Controllers/UserSettingsController.cs @@ -0,0 +1,78 @@ +using AsbCloudApp.Exceptions; +using AsbCloudApp.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.ComponentModel.DataAnnotations; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudWebApi.Controllers +{ + [Route("api/[controller]")] + [ApiController] + [Authorize] + public class UserSettingsController : ControllerBase + { + private readonly IUserSettingsRepository service; + + public UserSettingsController(IUserSettingsRepository service) + { + this.service = service; + } + + [HttpGet("{key}")] + [Permission] + public virtual async Task GetAsync( + [StringLength(255, MinimumLength = 1, ErrorMessage = "The key value cannot less then 1 character and greater then 255. ")] + string key, + CancellationToken token) + { + var userId = User.GetUserId(); + if (userId is null) + return Forbid(); + + var result = await service.GetOrDefaultAsync((int)userId, key, token).ConfigureAwait(false); + return Ok(result); + } + + [HttpPost("{key}")] + [Permission] + public virtual async Task> InsertAsync(string key, [FromBody] object value, CancellationToken token) + { + var userId = User.GetUserId(); + if (userId is null) + return Forbid(); + + var result = await service.InsertAsync((int)userId, key, value, token).ConfigureAwait(false); + if (result == IUserSettingsRepository.ErrorKeyIsUsed) + return BadRequest(ArgumentInvalidException.MakeValidationError(nameof(key), "is already used")); + return Ok(result); + } + + [HttpPut("{key}")] + public virtual async Task> UpdateAsync(string key, [FromBody] object value, CancellationToken token) + { + var userId = User.GetUserId(); + if (userId is null) + return Forbid(); + + var result = await service.UpdateAsync((int)userId, key, value, token).ConfigureAwait(false); + if (result < 0) + return BadRequest(ArgumentInvalidException.MakeValidationError(nameof(key), "not found")); + return Ok(result); + } + + [HttpDelete("{key}")] + public virtual async Task> DeleteAsync(string key, CancellationToken token) + { + var userId = User.GetUserId(); + if (userId is null) + return Forbid(); + + var result = await service.DeleteAsync((int)userId, key, token).ConfigureAwait(false); + if (result < 0) + return BadRequest(ArgumentInvalidException.MakeValidationError(nameof(key), "not found")); + return Ok(result); + } + } +} From 8d3a8a5885d54863bf8b2da7b10fb1611f3a9deb Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Thu, 28 Jul 2022 10:37:05 +0500 Subject: [PATCH 26/34] UserSettings_rename_idUser --- ...614_UserSettings_rename_idUser.Designer.cs | 6130 +++++++++++++++++ ...220728053614_UserSettings_rename_idUser.cs | 49 + .../AsbCloudDbContextModelSnapshot.cs | 2 +- AsbCloudDb/Model/UserSetting.cs | 2 +- 4 files changed, 6181 insertions(+), 2 deletions(-) create mode 100644 AsbCloudDb/Migrations/20220728053614_UserSettings_rename_idUser.Designer.cs create mode 100644 AsbCloudDb/Migrations/20220728053614_UserSettings_rename_idUser.cs diff --git a/AsbCloudDb/Migrations/20220728053614_UserSettings_rename_idUser.Designer.cs b/AsbCloudDb/Migrations/20220728053614_UserSettings_rename_idUser.Designer.cs new file mode 100644 index 00000000..0192b516 --- /dev/null +++ b/AsbCloudDb/Migrations/20220728053614_UserSettings_rename_idUser.Designer.cs @@ -0,0 +1,6130 @@ +// +using System; +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("20220728053614_UserSettings_rename_idUser")] + partial class UserSettings_rename_idUser + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "6.0.1") + .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") + .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") + .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") + .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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недрапользователь" + }, + new + { + Id = 2, + Caption = "Буровой подрядчик" + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date") + .HasComment("Дата отчёта"); + + b.Property("Info") + .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") + .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") + .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("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.DrillFlowChart", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellOperationCategory") + .HasColumnType("integer") + .HasColumnName("id_operation_category") + .HasComment("Id типа операции"); + + b.Property("LastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_update") + .HasComment("Дата последнего изменения"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellOperationCategory"); + + b.ToTable("t_drill_flow_chart"); + + 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.DrillParams", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadAvg") + .HasColumnType("double precision") + .HasColumnName("axial_load_avg") + .HasComment("Средняя нагрузка"); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowAvg") + .HasColumnType("double precision") + .HasColumnName("flow_avg") + .HasComment("Средний расход"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Id с типом секции скважины"); + + b.Property("PressureAvg") + .HasColumnType("double precision") + .HasColumnName("pressure_avg") + .HasComment("Среднее давление"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_avg") + .HasComment("Средние обороты на ВСП"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_avg") + .HasComment("Средний момент на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_drill_params"); + + b.HasComment("Режим бурения в секции (диапазоны параметров бурения)"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .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 = "Программы цементирования обсадных колонн" + }); + }); + + 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") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("PublishInfo") + .HasColumnType("jsonb") + .HasColumnName("publish_info") + .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.Measure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .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") + .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.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") + .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 = 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" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("IdCompany", "IdWell"); + + b.HasIndex("IdWell"); + + b.ToTable("t_relation_company_well"); + + b.HasComment("отношение скважин и компаний"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part"); + + b.HasComment("Отношение пользователей и частей ПБ"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission"); + + b.HasComment("Отношение ролей пользователей и разрешений доступа"); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role"); + + b.HasComment("Отношение ролей к ролям"); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role"); + + b.HasComment("Отношение пользователей и ролей"); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property"); + + b.HasComment("Отчеты с данными по буровым"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule"); + + b.HasComment("График работы бурильщика"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest"); + + b.HasComment("Запросы на изменение уставок панели оператора"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry"); + + b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub"); + + b.HasComment("набор основных данных по SAUB"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToView("mw_telemetry_datas_saub_stat"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("BreakAngleK") + .HasColumnType("real") + .HasColumnName("break_angle_k") + .HasComment("Коэффициент для расчёта за какой угол нужно тормозить"); + + b.Property("BreakAngleLeft") + .HasColumnType("real") + .HasColumnName("break_angle_left") + .HasComment("Угол торможения влево при работе по моменту"); + + b.Property("EncoderResolution") + .HasColumnType("real") + .HasColumnName("encoder_resolution") + .HasComment("Разрешение энкодера"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PidMuxTorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("pid_mux_torque_left_limit") + .HasComment(" Момент при котором определяется ехать назад по моменту или по скорости"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("Ratio") + .HasColumnType("real") + .HasColumnName("ratio") + .HasComment(" Коэффициент редукции редуктора"); + + b.Property("ReverseKTorque") + .HasColumnType("real") + .HasColumnName("reverse_k_torque") + .HasComment("Коэффициент на который умножается момент, для того чтобы система поняла что мы движемся в обратную сторону"); + + b.Property("ReverseSpeedSpZeroTime") + .HasColumnType("smallint") + .HasColumnName("reverse_speed_sp_zero_time") + .HasComment("Время выдачи сигнала нулевой скорости на при смене направления"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("RotorTorqueAvg") + .HasColumnType("real") + .HasColumnName("rotor_torque_avg") + .HasComment("Момент в роторе средний"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.Property("TopDriveSpeed") + .HasColumnType("real") + .HasColumnName("top_drive_speed") + .HasComment("Скорость СВП"); + + b.Property("TopDriveSpeedErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_err"); + + b.Property("TopDriveSpeedMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_max") + .HasComment("верхний предел"); + + b.Property("TopDriveSpeedMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_min") + .HasComment("нижний предел"); + + b.Property("TopDriveSpeedOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_offset") + .HasComment("смещение"); + + b.Property("TopDriveSpeedSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from") + .HasComment("Заданная скорость c СВП"); + + b.Property("TopDriveSpeedSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_from_err"); + + b.Property("TopDriveSpeedSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_max"); + + b.Property("TopDriveSpeedSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_min"); + + b.Property("TopDriveSpeedSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_offset"); + + b.Property("TopDriveSpeedSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to") + .HasComment("Задание скорости на СВП"); + + b.Property("TopDriveSpeedSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_to_err"); + + b.Property("TopDriveSpeedSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_max"); + + b.Property("TopDriveSpeedSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_min"); + + b.Property("TopDriveSpeedSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_offset"); + + b.Property("TopDriveTorque") + .HasColumnType("real") + .HasColumnName("top_drive_torque") + .HasComment("Момент СВП"); + + b.Property("TopDriveTorqueErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_err"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_max"); + + b.Property("TopDriveTorqueMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_min"); + + b.Property("TopDriveTorqueOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_offset"); + + b.Property("TopDriveTorqueSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from") + .HasComment("Заданный момент c СВП"); + + b.Property("TopDriveTorqueSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_from_err"); + + b.Property("TopDriveTorqueSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_max"); + + b.Property("TopDriveTorqueSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_min"); + + b.Property("TopDriveTorqueSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_offset"); + + b.Property("TopDriveTorqueSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to") + .HasComment("Задание момента на СВП"); + + b.Property("TopDriveTorqueSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_to_err"); + + b.Property("TopDriveTorqueSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_max"); + + b.Property("TopDriveTorqueSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_min"); + + b.Property("TopDriveTorqueSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_offset"); + + b.Property("TorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("torque_left_limit") + .HasComment("Ограничение крутящего момента влево"); + + b.Property("TorqueRampTime") + .HasColumnType("real") + .HasColumnName("torque_ramp_time") + .HasComment("Время нарастания момента"); + + b.Property("TorqueRightLimit") + .HasColumnType("real") + .HasColumnName("torque_right_limit") + .HasComment("Ограничение крутящего момента вправо"); + + b.Property("TorqueStarting") + .HasColumnType("real") + .HasColumnName("torque_starting") + .HasComment("Страгивающий момент"); + + b.Property("TurnLeftOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_angle") + .HasComment("Доворот по градусам единожды влево"); + + b.Property("TurnLeftOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_revols") + .HasComment("Доворот по оборотам единожды влево"); + + b.Property("TurnLeftOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_torque") + .HasComment("Доворот по моменту единожды влево"); + + b.Property("TurnRightOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_angle") + .HasComment("Доворот по градусам единожды вправо"); + + b.Property("TurnRightOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_revols") + .HasComment("Доворот по оборотам единожды вправо"); + + b.Property("TurnRightOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_torque") + .HasComment("Доворот по моменту единожды вправо"); + + b.Property("UnlockBySectorOut") + .HasColumnType("real") + .HasColumnName("unlock_by_sector_out") + .HasComment(" Градус отклонения от сектора для автоматического сброса блокировки"); + + b.Property("Ver") + .HasColumnType("real") + .HasColumnName("ver") + .HasComment("Версия ПО ПЛК"); + + b.Property("W2800") + .HasColumnType("smallint") + .HasColumnName("w2800") + .HasComment("Установка нуля энкодера"); + + b.Property("W2808") + .HasColumnType("smallint") + .HasColumnName("w2808") + .HasComment("Неисправность энкодера"); + + b.Property("W2810") + .HasColumnType("smallint") + .HasColumnName("w2810") + .HasComment(" автоматический сброс блокировки"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin"); + + b.HasComment("набор основных данных по SpinMaster"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event"); + + b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message"); + + b.HasComment("Сообщения на буровых"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user"); + + b.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n100 - удален"); + + b.Property("Login") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user"); + + b.HasComment("Пользователи облака"); + + b.HasData( + new + { + Id = 1, + IdCompany = 1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role"); + + b.HasComment("Роли пользователей в системе"); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings"); + + b.HasComment("настройки интерфейса пользователя"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well"); + + b.HasComment("скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite"); + + b.HasComment("Композитная скважина"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation"); + + b.HasComment("Данные по операциям на скважине"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("integer") + .HasColumnName("code") + .HasComment("Код операции"); + + b.Property("Name") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.ToTable("t_well_operation_category"); + + b.HasComment("Справочник операций на скважине"); + + b.HasData( + new + { + Id = 1, + Code = 0, + Name = "Невозможно определить операцию" + }, + new + { + Id = 2, + Code = 0, + Name = "Роторное бурение" + }, + new + { + Id = 3, + Code = 0, + Name = "Слайдирование" + }, + new + { + Id = 4, + Code = 0, + Name = "Подъем с проработкой" + }, + new + { + Id = 5, + Code = 0, + Name = "Спуск с проработкой" + }, + new + { + Id = 6, + Code = 0, + Name = "Подъем с промывкой" + }, + new + { + Id = 7, + Code = 0, + Name = "Спуск с промывкой" + }, + new + { + Id = 8, + Code = 0, + Name = "Спуск в скважину" + }, + new + { + Id = 9, + Code = 0, + Name = "Спуск с вращением" + }, + new + { + Id = 10, + Code = 0, + Name = "Подъем из скважины" + }, + new + { + Id = 11, + Code = 0, + Name = "Подъем с вращением" + }, + new + { + Id = 12, + Code = 0, + Name = "Промывка в покое" + }, + new + { + Id = 13, + Code = 0, + Name = "Промывка с вращением" + }, + new + { + Id = 14, + Code = 0, + Name = "Удержание в клиньях" + }, + new + { + Id = 15, + Code = 0, + Name = "Неподвижное состояние" + }, + new + { + Id = 16, + Code = 0, + Name = "Вращение без циркуляции" + }, + new + { + Id = 17, + Code = 0, + Name = "На поверхности" + }, + new + { + Id = 18, + Code = 0, + Name = "Проработка перед наращиванием" + }, + new + { + Id = 19, + Code = 0, + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 20, + Code = 0, + Name = "Промывка перед наращиванием" + }, + new + { + Id = 21, + Code = 0, + Name = "Статический замер телесистемы" + }, + new + { + Id = 1001, + Code = 0, + Name = "Бурение" + }, + new + { + Id = 1002, + Code = 0, + Name = "ГИС" + }, + new + { + Id = 1003, + Code = 0, + Name = "ГФР" + }, + new + { + Id = 1004, + Code = 0, + Name = "Монтаж ПВО" + }, + new + { + Id = 1005, + Code = 0, + Name = "Демонтаж ПВО" + }, + new + { + Id = 1006, + Code = 0, + Name = "Установка ФА" + }, + new + { + Id = 1007, + Code = 0, + Name = "Оборудование устья" + }, + new + { + Id = 1008, + Code = 0, + Name = "ОЗЦ" + }, + new + { + Id = 1011, + Code = 0, + Name = "Начало цикла строительства скважины" + }, + new + { + Id = 1012, + Code = 0, + Name = "Окончание цикла строительства скважины" + }, + new + { + Id = 1013, + Code = 0, + Name = "Опрессовка ПВО" + }, + new + { + Id = 1014, + Code = 0, + Name = "Опрессовка Ц.К." + }, + new + { + Id = 1015, + Code = 0, + Name = "Опрессовка ВЗД" + }, + new + { + Id = 1016, + Code = 0, + Name = "Перевод скв на другой тип промывочной жидкости" + }, + new + { + Id = 1017, + Code = 0, + Name = "Перезапись каротажа" + }, + new + { + Id = 1018, + Code = 0, + Name = "Перетяжка талевого каната" + }, + new + { + Id = 1019, + Code = 0, + Name = "Наращивание, промывка" + }, + new + { + Id = 1020, + Code = 0, + Name = "Подъем инструмента" + }, + new + { + Id = 1021, + Code = 0, + Name = "Подъем инструмента с промывкой" + }, + new + { + Id = 1022, + Code = 0, + Name = "Обратная проработка" + }, + new + { + Id = 1023, + Code = 0, + Name = "Сборка инструмента с мостков" + }, + new + { + Id = 1024, + Code = 0, + Name = "Подготовительные работы" + }, + new + { + Id = 1025, + Code = 0, + Name = "Сборка КНБК" + }, + new + { + Id = 1026, + Code = 0, + Name = "Разборка КНБК" + }, + new + { + Id = 1027, + Code = 0, + Name = "Промывка" + }, + new + { + Id = 1028, + Code = 0, + Name = "Промежуточная промывка" + }, + new + { + Id = 1029, + Code = 0, + Name = "Прокачка пачек" + }, + new + { + Id = 1030, + Code = 0, + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 1031, + Code = 0, + Name = "Ремонт" + }, + new + { + Id = 1032, + Code = 0, + Name = "Спуск инструмента" + }, + new + { + Id = 1033, + Code = 0, + Name = "Спуск инструмента с промывкой" + }, + new + { + Id = 1034, + Code = 0, + Name = "Прямая проработка" + }, + new + { + Id = 1035, + Code = 0, + Name = "Принудительная проработка" + }, + new + { + Id = 1037, + Code = 0, + Name = "Тех СПО-подъем" + }, + new + { + Id = 1038, + Code = 0, + Name = "Тех СПО-спуск" + }, + new + { + Id = 1039, + Code = 0, + Name = "Техническое обслуживание" + }, + new + { + Id = 1040, + Code = 0, + Name = "Цементаж" + }, + new + { + Id = 1041, + Code = 0, + Name = "Шаблонировка ствола" + }, + new + { + Id = 1042, + Code = 0, + Name = "Геологическое осложнение" + }, + new + { + Id = 1043, + Code = 0, + Name = "НПВ" + }, + new + { + Id = 1044, + Code = 0, + Name = "ВМР" + }, + new + { + Id = 1045, + Code = 0, + Name = "Прочее" + }, + new + { + Id = 1046, + Code = 0, + Name = "Спуск КНБК" + }, + new + { + Id = 1047, + Code = 0, + Name = "Подъем КНБК" + }, + new + { + Id = 1048, + Code = 0, + Name = "Спуск ОК" + }, + new + { + Id = 1050, + Code = 0, + Name = "Промывка при спуске ОК" + }, + new + { + Id = 1051, + Code = 0, + Name = "Замер ТС" + }, + new + { + Id = 1052, + Code = 0, + Name = "Тех. отстой" + }, + new + { + Id = 1053, + Code = 0, + Name = "Циркуляция и Обработка БР" + }, + new + { + Id = 1054, + Code = 0, + Name = "Срезка ствола" + }, + new + { + Id = 1055, + Code = 0, + Name = "Вспомогательные работы" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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.HasKey("Id"); + + b.ToTable("t_well_section_type"); + + b.HasComment("конструкция секции скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол" + }, + new + { + Id = 2, + Caption = "Направление" + }, + new + { + Id = 3, + Caption = "Кондуктор" + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна" + }, + new + { + Id = 5, + Caption = "Транспортный ствол" + }, + new + { + Id = 6, + Caption = "Хвостовик" + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2" + }, + new + { + Id = 8, + Caption = "Направление 2" + }, + new + { + Id = 9, + Caption = "Кондуктор 2" + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2" + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2" + }, + new + { + Id = 12, + Caption = "Хвостовик 2" + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3" + }, + new + { + Id = 14, + Caption = "Направление 3" + }, + new + { + Id = 15, + Caption = "Кондуктор 3" + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3" + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3" + }, + new + { + Id = 18, + Caption = "Хвостовик 3" + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4" + }, + new + { + Id = 20, + Caption = "Направление 4" + }, + new + { + Id = 21, + Caption = "Кондуктор 4" + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4" + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4" + }, + new + { + Id = 24, + Caption = "Хвостовик 4" + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5" + }, + new + { + Id = 26, + Caption = "Направление 5" + }, + new + { + Id = 27, + Caption = "Кондуктор 5" + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5" + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5" + }, + new + { + Id = 30, + Caption = "Хвостовик 5" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type"); + + b.HasComment("конструкция скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillParams", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("DrillParamsCollection") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_drill_params_t_well_section_type_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType"); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("DrillParamsCollection"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20220728053614_UserSettings_rename_idUser.cs b/AsbCloudDb/Migrations/20220728053614_UserSettings_rename_idUser.cs new file mode 100644 index 00000000..68664845 --- /dev/null +++ b/AsbCloudDb/Migrations/20220728053614_UserSettings_rename_idUser.cs @@ -0,0 +1,49 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + public partial class UserSettings_rename_idUser : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_t_user_settings_t_user_idUser", + table: "t_user_settings"); + + migrationBuilder.RenameColumn( + name: "idUser", + table: "t_user_settings", + newName: "id_user"); + + migrationBuilder.AddForeignKey( + name: "FK_t_user_settings_t_user_id_user", + table: "t_user_settings", + column: "id_user", + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_t_user_settings_t_user_id_user", + table: "t_user_settings"); + + migrationBuilder.RenameColumn( + name: "id_user", + table: "t_user_settings", + newName: "idUser"); + + migrationBuilder.AddForeignKey( + name: "FK_t_user_settings_t_user_idUser", + table: "t_user_settings", + column: "idUser", + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index 6565372c..7b7bc79a 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -3876,7 +3876,7 @@ namespace AsbCloudDb.Migrations { b.Property("IdUser") .HasColumnType("integer") - .HasColumnName("idUser"); + .HasColumnName("id_user"); b.Property("Key") .HasMaxLength(255) diff --git a/AsbCloudDb/Model/UserSetting.cs b/AsbCloudDb/Model/UserSetting.cs index 335da9c0..091907e8 100644 --- a/AsbCloudDb/Model/UserSetting.cs +++ b/AsbCloudDb/Model/UserSetting.cs @@ -9,7 +9,7 @@ namespace AsbCloudDb.Model [Table("t_user_settings"), Comment("настройки интерфейса пользователя")] public class UserSetting { - [Column("idUser")] + [Column("id_user")] public int IdUser { get; set; } [Column("key"), Comment("Ключ настроек пользователя"), StringLength(255)] From 800cf932ca9f2d90a0da31a6119ca495941360d3 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Wed, 3 Aug 2022 11:13:23 +0500 Subject: [PATCH 27/34] fix `nullable warnings`. --- AsbCloudApp/Data/DailyReport/BhaDto.cs | 4 +-- AsbCloudApp/Data/TimeDto.cs | 25 +++++++++++++++++++ .../Services/DailyReport/CellAddress.cs | 16 ++++++------ .../DailyReport/DailyReportService.cs | 2 +- .../Detectors/DetectorFlashing.cs | 2 +- 5 files changed, 37 insertions(+), 12 deletions(-) diff --git a/AsbCloudApp/Data/DailyReport/BhaDto.cs b/AsbCloudApp/Data/DailyReport/BhaDto.cs index d858bd8c..681ae8a8 100644 --- a/AsbCloudApp/Data/DailyReport/BhaDto.cs +++ b/AsbCloudApp/Data/DailyReport/BhaDto.cs @@ -31,12 +31,12 @@ public string SluiceFinish { get; set; } /// - /// Подьем КНБК. Время начала + /// Подъем КНБК. Время начала /// public string ClimbBegin { get; set; } /// - /// Подьем КНБК. Время окончания + /// Подъем КНБК. Время окончания /// public string ClimbFinish { get; set; } diff --git a/AsbCloudApp/Data/TimeDto.cs b/AsbCloudApp/Data/TimeDto.cs index 6bb4b1e5..91d0fc5f 100644 --- a/AsbCloudApp/Data/TimeDto.cs +++ b/AsbCloudApp/Data/TimeDto.cs @@ -120,5 +120,30 @@ namespace AsbCloudApp.Data /// public int CompareTo(TimeDto other) => TotalSeconds - other.TotalSeconds; + + public override bool Equals(object obj) + { + if (ReferenceEquals(this, obj)) + { + return true; + } + + if (obj is null) + { + return false; + } + + if (obj is TimeDto objTime) + { + return objTime == this; + } + + return false; + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } } } diff --git a/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs b/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs index cff2f920..92ec113f 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/CellAddress.cs @@ -136,12 +136,12 @@ namespace AsbCloudInfrastructure.Services.DailyReport return sb.ToString(); } - public bool Equals(IXLAddress x, IXLAddress y) - => x.ColumnNumber == y.ColumnNumber && - x.RowNumber == y.RowNumber && - x.FixedColumn == y.FixedColumn && - x.FixedRow == y.FixedRow && - x.Worksheet == y.Worksheet; + public bool Equals(IXLAddress? x, IXLAddress? y) + => x?.ColumnNumber == y?.ColumnNumber && + x?.RowNumber == y?.RowNumber && + x?.FixedColumn == y?.FixedColumn && + x?.FixedRow == y?.FixedRow && + x?.Worksheet == y?.Worksheet; public override int GetHashCode() => base.GetHashCode(); @@ -149,10 +149,10 @@ namespace AsbCloudInfrastructure.Services.DailyReport public int GetHashCode([DisallowNull] IXLAddress obj) => obj.GetHashCode(); - public bool Equals(IXLAddress other) + public bool Equals(IXLAddress? other) => Equals(this, other); - public override bool Equals(object obj) + public override bool Equals(object? obj) { if (ReferenceEquals(this, obj)) { diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs index d29c4b34..a59cfc93 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs @@ -108,7 +108,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport private async Task MakeDefaultDailyReportAsync(int idWell, DateTime date, CancellationToken token) { - var well = await wellService.GetAsync(idWell, token); + var well = await wellService.GetOrDefaultAsync(idWell, token); var dto = new DailyReportDto() { Head = new HeadDto() diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs index 51efbf3a..844b975b 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs @@ -2,7 +2,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors { - +#nullable enable /// /// Промывка перед наращиванием /// From 6f83e8c7cc4d3e67d240e45a7ffff1baba6c38c5 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Thu, 4 Aug 2022 15:04:55 +0500 Subject: [PATCH 28/34] ControllerBase. Add BadRequestBuilder and extentionMethod. --- AsbCloudWebApi/Extentions.cs | 57 ++++++++++++++++++- .../Middlewares/PermissionsMiddlware.cs | 1 + 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/AsbCloudWebApi/Extentions.cs b/AsbCloudWebApi/Extentions.cs index 17a950fb..1179c25e 100644 --- a/AsbCloudWebApi/Extentions.cs +++ b/AsbCloudWebApi/Extentions.cs @@ -1,7 +1,9 @@ using AsbCloudApp.Data; +using System.Collections.Generic; +using System.Linq; using System.Security.Claims; -namespace AsbCloudWebApi +namespace Microsoft.AspNetCore.Mvc { public static class Extentions { @@ -26,5 +28,58 @@ namespace AsbCloudWebApi ? uid : null; } + + public static IActionResult MakeBadRequest(this ControllerBase controller, string paramName, params string[] errors) + { + return controller.BadRequest(new + { + name = paramName, + errors, + }); + } + + public static BadRequestBuilder BadRequestBuilder(this ControllerBase controller, string paramName, params string[] errors) + => new BadRequestBuilder(paramName, errors); + } + + public class BadRequestBuilder + { + private readonly Dictionary> body; + + private List GetOrCreateNew(string paramName) + { + List par; + if (body.ContainsKey(paramName)) + par = body[paramName]; + else + { + par = new List(); + body[paramName] = par; + } + return par; + } + + public BadRequestBuilder(string paramName, params string[] errors) + { + body = new(); + body[paramName] = new List(errors); + } + + public BadRequestBuilder Add(string paramName, params string[] errors) + { + var par = GetOrCreateNew(paramName); + par.AddRange(errors); + return this; + } + + public BadRequestObjectResult Build() + { + var o = body.Select(e => new { name = e.Key, errors = e.Value.ToArray() }); + + return new BadRequestObjectResult(o); + } + + public static implicit operator BadRequestObjectResult(BadRequestBuilder d) => d.Build(); } } + diff --git a/AsbCloudWebApi/Middlewares/PermissionsMiddlware.cs b/AsbCloudWebApi/Middlewares/PermissionsMiddlware.cs index 43492bda..5373cf64 100644 --- a/AsbCloudWebApi/Middlewares/PermissionsMiddlware.cs +++ b/AsbCloudWebApi/Middlewares/PermissionsMiddlware.cs @@ -1,6 +1,7 @@ using AsbCloudApp.Services; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using System; using System.Threading.Tasks; From d2b98d3a774df9ee49fa8fe0e665e4ca558860bc Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Thu, 4 Aug 2022 15:06:17 +0500 Subject: [PATCH 29/34] Add internal DetectedOperationExportService. Add DetectedOperation statistics --- .../DetectedOperationDrillersStatDto.cs} | 19 +-- .../DetectedOperationDto.cs | 2 +- .../DetectedOperationListDto.cs | 22 ++++ .../DetectedOperationStatDto.cs | 60 +++++++++ .../Requests/DetectedOperationRequest.cs | 6 +- .../Services/IDetectedOperationService.cs | 10 +- .../DetectedOperationExportService.cs | 117 +++++++++++++++++ .../DetectedOperationService.cs | 122 +++++++++++++++--- .../SAUB/DetectedOperationController.cs | 62 +++++++++ .../Controllers/WellOperationController.cs | 1 - 10 files changed, 376 insertions(+), 45 deletions(-) rename AsbCloudApp/Data/{DetectedOperationListDto.cs => DetectedOperation/DetectedOperationDrillersStatDto.cs} (66%) rename AsbCloudApp/Data/{ => DetectedOperation}/DetectedOperationDto.cs (98%) create mode 100644 AsbCloudApp/Data/DetectedOperation/DetectedOperationListDto.cs create mode 100644 AsbCloudApp/Data/DetectedOperation/DetectedOperationStatDto.cs create mode 100644 AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs diff --git a/AsbCloudApp/Data/DetectedOperationListDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDrillersStatDto.cs similarity index 66% rename from AsbCloudApp/Data/DetectedOperationListDto.cs rename to AsbCloudApp/Data/DetectedOperation/DetectedOperationDrillersStatDto.cs index a18f6e87..65cce4aa 100644 --- a/AsbCloudApp/Data/DetectedOperationListDto.cs +++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDrillersStatDto.cs @@ -1,12 +1,10 @@ -using System.Collections.Generic; - -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data.DetectedOperation { #nullable enable /// /// Статистика по операциям бурильщика /// - public class DetectedOperationStatDto + public class DetectedOperationDrillersStatDto { /// /// Бурильщик @@ -38,18 +36,5 @@ namespace AsbCloudApp.Data /// public double? Loss { get; set; } } - - /// - /// Автоматически определяемая операция - /// - public class DetectedOperationListDto - { - /// - /// Список всех операций - /// - public IEnumerable Operations { get; set; } - - public IEnumerable Stats { get; set; } - } #nullable disable } diff --git a/AsbCloudApp/Data/DetectedOperationDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs similarity index 98% rename from AsbCloudApp/Data/DetectedOperationDto.cs rename to AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs index 59b28043..add539e4 100644 --- a/AsbCloudApp/Data/DetectedOperationDto.cs +++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs @@ -1,6 +1,6 @@ using System; -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data.DetectedOperation { #nullable enable /// diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationListDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationListDto.cs new file mode 100644 index 00000000..c52b2860 --- /dev/null +++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationListDto.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; + +namespace AsbCloudApp.Data.DetectedOperation +{ + + /// + /// Автоматически определяемая операция + /// + public class DetectedOperationListDto + { + /// + /// Список всех операций + /// + public IEnumerable Operations { get; set; } + + /// + /// Статистика по бурильщикам + /// + public IEnumerable Stats { get; set; } + } +#nullable disable +} diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationStatDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationStatDto.cs new file mode 100644 index 00000000..aebe2f46 --- /dev/null +++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationStatDto.cs @@ -0,0 +1,60 @@ +namespace AsbCloudApp.Data.DetectedOperation +{ +#nullable enable + /// + /// Статистика по операциям например за период. + /// + public class DetectedOperationStatDto + { + /// + /// Id названия/описания операции + /// + public int IdCategory { get; set; } + + /// + /// Название операции + /// + public string Category { get; set; } = string.Empty; + + /// + /// Количество операций + /// + public int Count { get; set; } + + /// + /// Среднее по ключевому показателю + /// + public double ValueAverage { get; set; } + + /// + /// Мин по ключевому показателю + /// + public double ValueMin { get; set; } + + /// + /// Макс по ключевому показателю + /// + public double ValueMax { get; set; } + + /// + /// Суммарное время операций, мин + /// + public double MinutesTotal { get; set; } + + /// + /// Мин продолжительность операции, мин + /// + public double MinutesMin { get; set; } + + /// + /// Макс продолжительность операции, мин + /// + public double MinutesMax { get; set; } + + /// + /// Средняя продолжительность операции, мин + /// + public double MinutesAverage { get; set; } + } +#nullable disable +} diff --git a/AsbCloudApp/Requests/DetectedOperationRequest.cs b/AsbCloudApp/Requests/DetectedOperationRequest.cs index 6d54a801..a6097b9c 100644 --- a/AsbCloudApp/Requests/DetectedOperationRequest.cs +++ b/AsbCloudApp/Requests/DetectedOperationRequest.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Requests @@ -15,10 +16,9 @@ namespace AsbCloudApp.Requests public int IdWell { get; set; } /// - /// категория операций + /// категории операций /// - [Required] - public int IdCategory { get; set; } + public IEnumerable IdsCategories { get; set; } /// /// Больше или равно дате diff --git a/AsbCloudApp/Services/IDetectedOperationService.cs b/AsbCloudApp/Services/IDetectedOperationService.cs index eb932c53..3d077443 100644 --- a/AsbCloudApp/Services/IDetectedOperationService.cs +++ b/AsbCloudApp/Services/IDetectedOperationService.cs @@ -1,15 +1,21 @@ using AsbCloudApp.Data; +using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Requests; using System.Collections.Generic; +using System.IO; using System.Threading; using System.Threading.Tasks; namespace AsbCloudApp.Services { +#nullable enable public interface IDetectedOperationService { - Task> GetCategoriesAsync(int? idWell, CancellationToken token); - Task GetAsync(DetectedOperationRequest request, CancellationToken token); + Task?> GetCategoriesAsync(int? idWell, CancellationToken token); + Task GetAsync(DetectedOperationRequest request, CancellationToken token); Task DeleteAsync(DetectedOperationRequest request, CancellationToken token); + Task?> GetOperationsStatAsync(DetectedOperationRequest request, CancellationToken token); + Task ExportAsync(IEnumerable idsWells, CancellationToken token); } +#nullable disable } diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs new file mode 100644 index 00000000..ffca6b9f --- /dev/null +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs @@ -0,0 +1,117 @@ +using AsbCloudApp.Data; +using AsbCloudApp.Services; +using AsbCloudDb.Model; +using ClosedXML.Excel; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.DetectOperations +{ + internal class DetectedOperationExportService + { + private readonly IAsbCloudDbContext db; + private readonly IWellService wellService; + + public DetectedOperationExportService(IAsbCloudDbContext db, IWellService wellService) + { + this.db = db; + this.wellService = wellService; + } + + public async Task ExportAsync(IEnumerable idsWells, CancellationToken token) + { + using var workbook = new XLWorkbook(XLEventTracking.Disabled); + + await AddSheetsAsync(workbook, idsWells, token); + + MemoryStream memoryStream = new MemoryStream(); + workbook.SaveAs(memoryStream, new SaveOptions { }); + memoryStream.Seek(0, SeekOrigin.Begin); + return memoryStream; + } + + private async Task AddSheetsAsync(XLWorkbook workbook, IEnumerable idsWells, CancellationToken token) + { + if(!idsWells.Any()) + return; + + var wells = idsWells.Select(i => wellService.GetOrDefault(i)) + .Where(w => w is not null && w.IdTelemetry is not null); + + if (!wells.Any()) + return; + + var idsTelemetries = wells.Select(w => w.IdTelemetry); + if (!idsTelemetries.Any()) + return; + + var operations = await db.DetectedOperations + .Include(o => o.OperationCategory) + .AsNoTracking() + .Where(o => idsTelemetries.Contains(o.IdTelemetry)) + .OrderBy(o => o.IdTelemetry) + .ThenBy(o => o.DateStart) + .ToListAsync(token); + + var groups = operations.GroupBy(o => o.IdTelemetry); + + foreach (var well in wells) + { + var ops = groups.FirstOrDefault(g => g.Key == well.IdTelemetry) + ?.ToList(); + + if(ops?.Any() != true) + continue; + + var sheetName = $"{well.Cluster}_{well.Caption}" + .Replace('.','_'); + + var sheet = workbook.AddWorksheet(sheetName); + AddHeader(sheet); + const int headerHeight = 1; + for(var i = 0; i< ops.Count; i++ ) + AddRow(sheet, ops[i], well, i + 1 + headerHeight); + } + } + + private static void AddHeader(IXLWorksheet sheet) + { + var rowNumber = 1; + sheet.Cell(rowNumber, 1).Value = "Name"; + sheet.Column(1).Width = 34; + + sheet.Cell(rowNumber, 2).Value = "DateStart"; + sheet.Column(2).Width = 17; + + sheet.Cell(rowNumber, 3).Value = "DateEnd"; + sheet.Column(3).Width = 17; + + sheet.Cell(rowNumber, 4).Value = "DepthStart"; + sheet.Column(4).Width = 9; + + sheet.Cell(rowNumber, 5).Value = "DepthEnd"; + sheet.Column(5).Width = 9; + + sheet.Cell(rowNumber, 6).Value = "KeyValue"; + sheet.Column(6).Width = 9; + + sheet.SheetView.FreezeRows(rowNumber); + } + + private static void AddRow(IXLWorksheet sheet, DetectedOperation operation, WellDto well, int rowNumber) + { + var timezoneoffsetHours = well.Timezone.Hours; + sheet.Cell(rowNumber, 1).Value = operation.OperationCategory.Name; + sheet.Cell(rowNumber, 2).Value = operation.DateStart.ToRemoteDateTime(timezoneoffsetHours); + sheet.Cell(rowNumber, 3).Value = operation.DateEnd.ToRemoteDateTime(timezoneoffsetHours); + sheet.Cell(rowNumber, 4).Value = operation.DepthStart; + sheet.Cell(rowNumber, 5).Value = operation.DepthEnd; + sheet.Cell(rowNumber, 6).Value = operation.Value; + } + } +} diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs index 60ea4fcc..067d7e73 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs @@ -1,4 +1,5 @@ using AsbCloudApp.Data; +using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudDb; @@ -7,12 +8,14 @@ using Mapster; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace AsbCloudInfrastructure.Services.DetectOperations { +#nullable enable public class DetectedOperationService : IDetectedOperationService { public const int IdOperationRotor = 1; @@ -33,27 +36,50 @@ namespace AsbCloudInfrastructure.Services.DetectOperations this.scheduleService = scheduleService; } - public async Task GetAsync(DetectedOperationRequest request, CancellationToken token) + public async Task GetAsync(DetectedOperationRequest request, CancellationToken token) + { + var dtos = await GetOperationsAsync(request, token); + if (dtos?.Any() != true) + return null; + + var stats = GetOperationsDrillersStat(dtos); + var result = new DetectedOperationListDto + { + Operations = dtos, + Stats = stats + }; + return result; + } + + private async Task?> GetOperationsAsync(DetectedOperationRequest request, CancellationToken token) { var well = await wellService.GetOrDefaultAsync(request.IdWell, token); if (well?.IdTelemetry is null || well.Timezone is null) return null; var query = BuildQuery(well, request) - .AsNoTracking(); + ?.AsNoTracking(); + + if (query is null) + return null; var data = await query.ToListAsync(token); var operationValues = await operationValueService.GetByIdWellAsync(request.IdWell, token); var schedules = await scheduleService.GetByIdWellAsync(request.IdWell, token); var dtos = data.Select(o => Convert(o, well, operationValues, schedules)); - var groups = dtos.GroupBy(o => o.Driller); + return dtos; + } - var stats = new List(groups.Count()); + private static IEnumerable GetOperationsDrillersStat(IEnumerable operations) + { + var groups = operations.GroupBy(o => o.Driller); + + var stats = new List(groups.Count()); foreach (var group in groups) { var itemsWithTarget = group.Where(i => i.OperationValue is not null); - var stat = new DetectedOperationStatDto + var stat = new DetectedOperationDrillersStatDto { Driller = group.Key, AverageValue = group.Sum(e => e.Value) / group.Count(), @@ -62,20 +88,62 @@ namespace AsbCloudInfrastructure.Services.DetectOperations if (itemsWithTarget.Any()) { var itemsOutOfTarget = itemsWithTarget.Where(o => !IsTargetOk(o)); - stat.AverageTargetValue = itemsWithTarget.Average(e => e.OperationValue.TargetValue); + stat.AverageTargetValue = itemsWithTarget.Average(e => e.OperationValue?.TargetValue); stat.Efficiency = 100d * itemsOutOfTarget.Count() / itemsWithTarget.Count(); stat.Loss = itemsOutOfTarget.Sum(DeltaToTarget); } stats.Add(stat); } + return stats; + } - var result = new DetectedOperationListDto - { - Operations = dtos, - Stats = stats - }; - return result; + public async Task?> GetOperationsStatAsync(DetectedOperationRequest request, CancellationToken token) + { + var well = await wellService.GetOrDefaultAsync(request.IdWell, token); + if (well?.IdTelemetry is null || well.Timezone is null) + return null; + + var query = BuildQuery(well, request) + ?.AsNoTracking(); + + if (query is null) + return null; + + var entities = await query + .Select(o => new { + o.IdCategory, + DurationMinutes = (o.DateEnd - o.DateStart).TotalMinutes, + o.Value, + }) + .ToListAsync(token); + + if (!entities.Any()) + return null; + + var operationValues = await operationValueService.GetByIdWellAsync(request.IdWell, token); + var categories = await query + .Select(o => new {o.IdCategory, o.OperationCategory.Name }) + .Distinct() + .ToDictionaryAsync(c=>c.IdCategory, c=>c.Name, token); + + var dtos = entities + .GroupBy(o => o.IdCategory) + .OrderBy(g => g.Key) + .Select(g => new DetectedOperationStatDto{ + IdCategory = g.Key, + Category = categories[g.Key], + Count = g.Count(), + MinutesAverage = g.Average(o => o.DurationMinutes), + MinutesMin = g.Min(o => o.DurationMinutes), + MinutesMax = g.Max(o => o.DurationMinutes), + MinutesTotal = g.Sum(o => o.DurationMinutes), + ValueAverage = g.Average(o => o.Value), + ValueMax = g.Max(o => o.Value), + ValueMin = g.Min(o => o.Value), + }); + + return dtos; } public async Task DeleteAsync(DetectedOperationRequest request, CancellationToken token) @@ -85,6 +153,10 @@ namespace AsbCloudInfrastructure.Services.DetectOperations return 0; var query = BuildQuery(well, request); + + if (query is null) + return 0; + db.DetectedOperations.RemoveRange(query); return await db.SaveChangesAsync(token); } @@ -93,10 +165,10 @@ namespace AsbCloudInfrastructure.Services.DetectOperations { return (op.IdCategory) switch { - IdOperationRotor => op.Value > op.OperationValue.TargetValue, - IdOperationSlide => op.Value > op.OperationValue.TargetValue, - IdOperationSlipsTime => op.Value > op.OperationValue.TargetValue, - _ => op.Value > op.OperationValue.TargetValue, + IdOperationRotor => op.Value > op.OperationValue?.TargetValue, + IdOperationSlide => op.Value > op.OperationValue?.TargetValue, + IdOperationSlipsTime => op.Value > op.OperationValue?.TargetValue, + _ => op.Value > op.OperationValue?.TargetValue, }; } @@ -106,12 +178,12 @@ namespace AsbCloudInfrastructure.Services.DetectOperations { IdOperationRotor => 0, IdOperationSlide => 0, - IdOperationSlipsTime => op.Value - op.OperationValue.TargetValue, + IdOperationSlipsTime => op.Value - op.OperationValue?.TargetValue??0, _ => 0, }; } - private IQueryable BuildQuery(WellDto well, DetectedOperationRequest request) + private IQueryable? BuildQuery(WellDto well, DetectedOperationRequest request) { if (well?.IdTelemetry is null || well.Timezone is null) return null; @@ -122,7 +194,8 @@ namespace AsbCloudInfrastructure.Services.DetectOperations if (request is not null) { - query = query.Where(o => request.IdCategory == o.IdCategory); + if (request.IdsCategories?.Any() == true) + query = query.Where(o => request.IdsCategories.Contains(o.IdCategory)); if (request.GtDate is not null) query = query.Where(o => o.DateStart >= request.GtDate.Value.ToUtcDateTimeOffset(well.Timezone.Hours)); @@ -182,9 +255,9 @@ namespace AsbCloudInfrastructure.Services.DetectOperations return dto; } - public async Task> GetCategoriesAsync(int? idWell, CancellationToken token) + public async Task?> GetCategoriesAsync(int? idWell, CancellationToken token) { - IQueryable query = null; + IQueryable query; if(idWell is null) { query = db.WellOperationCategories; @@ -209,5 +282,12 @@ namespace AsbCloudInfrastructure.Services.DetectOperations .ToArrayAsync(token); return result; } + + public Task ExportAsync(IEnumerable idsWells, CancellationToken token) + { + var exportService = new DetectedOperationExportService(db, wellService); + return exportService.ExportAsync(idsWells, token); + } } +#nullable disable } diff --git a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs index d077c837..b4b7c098 100644 --- a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs @@ -1,10 +1,12 @@ using AsbCloudApp.Data; +using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Requests; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -61,6 +63,25 @@ namespace AsbCloudWebApi.Controllers.SAUB return Ok(result); } + /// + /// Получить статистику по фильтрованному списку операций по телеметрии САУБ + /// + /// + /// + /// + [HttpGet("stat")] + [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] + public async Task GetStatAsync( + [FromQuery] DetectedOperationRequest request, + CancellationToken token = default) + { + if (!await UserHasAccesToWellAsync(request.IdWell, token)) + return Forbid(); + + var result = await detectedOperationService.GetOperationsStatAsync(request, token); + return Ok(result); + } + /// /// Удалить операции. /// Удаленные операции будут определены повторно сервисом автоматизированного определения операций. @@ -92,5 +113,46 @@ namespace AsbCloudWebApi.Controllers.SAUB return true; return false; } + + /// + /// Создает excel файл с операциями по скважине + /// + /// id скважины + /// + /// Токен отмены задачи + /// Запрашиваемый файл + [HttpGet] + [Route("export")] + [Permission] + [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)] + public async Task ExportAsync(int? idWell, int? idCluster, CancellationToken token = default) + { + if (idCluster is null && idWell is null) + return this.MakeBadRequest(nameof(idWell), $"One of {nameof(idWell)} or {nameof(idCluster)} mast be set."); + + int? idCompany = User.GetCompanyId(); + + if (idCompany is null) + return Forbid(); + + IEnumerable idsWells; + if (idCluster is not null) + { + var companyWells = await wellService.GetWellsByCompanyAsync((int)idCompany, token); + idsWells = companyWells.Where(w => w.IdCluster == idCluster) + .Select(w=>w.Id); + } + else + { + if (!await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, + (int)idWell, token).ConfigureAwait(false)) + return Forbid(); + idsWells = new List { (int)idWell }; + } + + var stream = await detectedOperationService.ExportAsync(idsWells, token); + var fileName = "operations.xlsx"; + return File(stream, "application/octet-stream", fileName); + } } } diff --git a/AsbCloudWebApi/Controllers/WellOperationController.cs b/AsbCloudWebApi/Controllers/WellOperationController.cs index e73bb7f0..96f01ea8 100644 --- a/AsbCloudWebApi/Controllers/WellOperationController.cs +++ b/AsbCloudWebApi/Controllers/WellOperationController.cs @@ -268,7 +268,6 @@ namespace AsbCloudWebApi.Controllers return File(stream, "application/octet-stream", fileName); } - /// /// Создает excel файл с "сетевым графиком" /// From b826962ed195d0b1db7e00898cc1448bfc888cbd Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 5 Aug 2022 15:58:40 +0500 Subject: [PATCH 30/34] Edit operation detectors. --- .../Detectors/DetectorStaticSurveying.cs | 15 ++++++--------- .../OperationDetectionBackgroundService.cs | 2 +- .../Статический замер телесистемы.md | 9 +++++---- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorStaticSurveying.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorStaticSurveying.cs index 73f30e06..35b3a903 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorStaticSurveying.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorStaticSurveying.cs @@ -20,10 +20,10 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors return false; var delta = point0.WellDepth - point0.BitDepth; - if (delta > 2.5d) + if (delta > 2.5d || delta < 0.8d) return false; - if (point0.RotorSpeed > 15) + if (point0.RotorSpeed > 30) return false; if (ContainsDeviation(telemetry, t => t.BlockPosition, position, 60, 0.03)) @@ -40,21 +40,18 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors var point0 = telemetry[position]; var delta = point0.WellDepth - point0.BitDepth; - if (delta > 2.5d) + if (delta > 2.5d || delta < 0.8d) return true; - if (point0.RotorSpeed > 15) + if (point0.RotorSpeed > 30) return true; - if (RisesFromBegin(telemetry, t => t.Pressure, position, 10, 10)) + if (RisesFromBegin(telemetry, t => t.Pressure, position, 10, 5)) return true; - if (ContainsDeviation(telemetry, t => t.BlockPosition, position, 10, 0.03)) + if (ContainsDeviation(telemetry, t => t.BlockPosition, position, 10, 0.05)) return false; - //if (DeviatesFromBegin(telemetry, t => t.Pressure, position, 60, 10)) - // return false; - return false; } diff --git a/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs b/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs index 4ebe2000..4f815cc8 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs @@ -25,7 +25,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations new DetectorDevelopment(), new DetectorTemplating(), new DetectorSlipsTime(), - //new DetectorStaticSurveying(), + new DetectorStaticSurveying(), new DetectorFlashing(), }; diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Статический замер телесистемы.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Статический замер телесистемы.md index b837f59b..3f7a9488 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Статический замер телесистемы.md +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Статический замер телесистемы.md @@ -6,16 +6,17 @@ Признак начала операции = ( давление > 15 атм ) И + ( расстояние от долота до забоя > 0.8м ) И ( расстояние от долота до забоя < 2.5м ) И - ( обороты ротора < 15 об/м ) И + ( обороты ротора < 30 об/м ) И ( движение тал.блока в течении 60 сек изменяется менее чем на 3 см ) И ( давление за следующие 60 сек изменяется менее чем на 10 атм ) Признак окончания операции = ( расстояние от долота до забоя > 2.5м ) ИЛИ - ( обороты ротора > 15 об/м ) ИЛИ - ( давление за следующие 10 сек вырастет на 10 атм ) ИЛИ - ( движение тал.блока в течении 60 сек изменяется более чем на 3 см ) + ( обороты ротора > 30 об/м ) ИЛИ + ( давление за следующие 10 сек вырастет на 5 атм ) ИЛИ + ( движение тал.блока в течении 10 сек изменяется более чем на 3 см ) ## Ключевой параметр Продолжительность операции. From ff357f2794996f01d8510f2e683a4331125cfab4 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 5 Aug 2022 17:16:11 +0500 Subject: [PATCH 31/34] doc AsbCloudApp --- AsbCloudApp/Comparators/ComparerIId.cs | 2 +- .../DetectedOperation/DetectedOperationDto.cs | 4 +- AsbCloudApp/Data/TimeDto.cs | 2 + AsbCloudApp/Services/IAuthService.cs | 35 ++++++++++++++++ .../Services/IBackgroundWorkerService.cs | 30 +++++++++++++- AsbCloudApp/Services/IClusterService.cs | 41 +++++++++++++++++++ AsbCloudApp/Services/IDailyReportService.cs | 6 ++- .../Services/IDetectedOperationService.cs | 38 +++++++++++++++++ .../DetectedOperationServiceTest.cs | 2 +- 9 files changed, 154 insertions(+), 6 deletions(-) diff --git a/AsbCloudApp/Comparators/ComparerIId.cs b/AsbCloudApp/Comparators/ComparerIId.cs index 5ea883ec..7dbf5cb5 100644 --- a/AsbCloudApp/Comparators/ComparerIId.cs +++ b/AsbCloudApp/Comparators/ComparerIId.cs @@ -9,7 +9,7 @@ namespace AsbCloudApp.Comparators /// public class ComparerIId : IComparer, IEqualityComparer { - private static readonly ComparerIId instance = new ComparerIId(); + private static readonly ComparerIId instance = new (); private ComparerIId() { } /// diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs index add539e4..62837213 100644 --- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs +++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs @@ -52,12 +52,12 @@ namespace AsbCloudApp.Data.DetectedOperation /// /// название/описание операции /// - public WellOperationCategoryDto OperationCategory { get; set; } + public WellOperationCategoryDto OperationCategory { get; set; } = null!; /// /// Пользователь панели оператора /// - public string TelemetryUserName { get; set; } + public string? TelemetryUserName { get; set; } /// /// Бурильщик diff --git a/AsbCloudApp/Data/TimeDto.cs b/AsbCloudApp/Data/TimeDto.cs index 91d0fc5f..faf99427 100644 --- a/AsbCloudApp/Data/TimeDto.cs +++ b/AsbCloudApp/Data/TimeDto.cs @@ -121,6 +121,7 @@ namespace AsbCloudApp.Data public int CompareTo(TimeDto other) => TotalSeconds - other.TotalSeconds; + /// public override bool Equals(object obj) { if (ReferenceEquals(this, obj)) @@ -141,6 +142,7 @@ namespace AsbCloudApp.Data return false; } + /// public override int GetHashCode() { return base.GetHashCode(); diff --git a/AsbCloudApp/Services/IAuthService.cs b/AsbCloudApp/Services/IAuthService.cs index 783eb8e0..34030c24 100644 --- a/AsbCloudApp/Services/IAuthService.cs +++ b/AsbCloudApp/Services/IAuthService.cs @@ -5,14 +5,49 @@ using System.Threading.Tasks; namespace AsbCloudApp.Services { + /// + /// Сервис авторизации + /// public interface IAuthService { + /// + /// Смена пароля пользователю + /// + /// + /// + /// int ChangePassword(int idUser, string newPassword); + + /// + /// Смена пароля пользователю + /// + /// + /// + /// int ChangePassword(string userLogin, string newPassword); + + /// + /// Авторизация + /// + /// + /// + /// токен отмены задачи + /// Task LoginAsync(string login, string password, CancellationToken token = default); + /// + /// Обновление токена авторизации + /// + /// + /// string Refresh(ClaimsPrincipal user); + + /// + /// Регистрация нового пользователя + /// + /// + /// int Register(UserRegistrationDto userDto); } } \ No newline at end of file diff --git a/AsbCloudApp/Services/IBackgroundWorkerService.cs b/AsbCloudApp/Services/IBackgroundWorkerService.cs index c65fd4f5..2ccc47ab 100644 --- a/AsbCloudApp/Services/IBackgroundWorkerService.cs +++ b/AsbCloudApp/Services/IBackgroundWorkerService.cs @@ -4,19 +4,47 @@ using System.Threading.Tasks; namespace AsbCloudApp.Services { + /// + /// Сервис выстраивает очередь из фоновых задач. Ограничивает количество одновременно выполняющихся задач. + /// public interface IBackgroundWorkerService { + /// + /// Проверка, есть ли задача в очереди + /// + /// идентификатор задачи + /// bool Contains(string id); /// /// Добавляет в очередь задач новую задачу /// - /// id задачи в очереди + /// идентификатор задачи /// делегат /// id задачи в очереди string Enqueue(string id, Func func); + + /// + /// Добавляет в очередь задач новую задачу + /// + /// + /// string Enqueue(Func func); + + /// + /// Добавляет в очередь задач новую задачу + /// + /// идентификатор задачи + /// + /// + /// string Enqueue(string id, Func func, Func onError); + + /// + /// Пробуем удалить задачу по идентификатору + /// + /// + /// bool TryRemove(string id); } } \ No newline at end of file diff --git a/AsbCloudApp/Services/IClusterService.cs b/AsbCloudApp/Services/IClusterService.cs index 66952f21..5a77d46d 100644 --- a/AsbCloudApp/Services/IClusterService.cs +++ b/AsbCloudApp/Services/IClusterService.cs @@ -5,16 +5,57 @@ using System.Threading.Tasks; namespace AsbCloudApp.Services { + //TODO: remove unused methods + + /// + /// Сервис информации о кустах + /// public interface IClusterService { + /// + /// список месторождений + /// + /// + /// + /// Task> GetDepositsAsync(int idCompany, CancellationToken token); + + /// + /// Список кустов с заполненными параметрами бурения + /// + /// + /// + /// Task> GetDepositsDrillParamsAsync(int idCompany, CancellationToken token = default); + + /// + /// Список кустов месторождения доступных компании + /// + /// + /// + /// + /// Task> GetClustersAsync(int idCompany, int depositId, CancellationToken token); + + /// + /// Список кустов доступных компании + /// + /// + /// + /// Task> GetClustersAsync(int idCompany, CancellationToken token); + + /// + /// Список скважин доступных компании + /// + /// + /// + /// + /// Task> GetWellsAsync(int idCompany, int clusterId, CancellationToken token); } diff --git a/AsbCloudApp/Services/IDailyReportService.cs b/AsbCloudApp/Services/IDailyReportService.cs index ba9f58a7..28bc72fc 100644 --- a/AsbCloudApp/Services/IDailyReportService.cs +++ b/AsbCloudApp/Services/IDailyReportService.cs @@ -7,8 +7,12 @@ using System.Threading.Tasks; namespace AsbCloudApp.Services { + /// + /// Суточный рапорт (сводка) + /// public interface IDailyReportService - { + { + Task> GetListAsync(int idWell, DateTime? v1, DateTime? v2, CancellationToken cancellationToken); Task GetOrGenerateAsync(int idWell, DateTime date, CancellationToken token); Task AddAsync(int idWell, DailyReportDto dto, CancellationToken token = default); diff --git a/AsbCloudApp/Services/IDetectedOperationService.cs b/AsbCloudApp/Services/IDetectedOperationService.cs index 3d077443..0a0bd999 100644 --- a/AsbCloudApp/Services/IDetectedOperationService.cs +++ b/AsbCloudApp/Services/IDetectedOperationService.cs @@ -9,12 +9,50 @@ using System.Threading.Tasks; namespace AsbCloudApp.Services { #nullable enable + /// + /// Сервис автоматически определенных по телеметрии операций + /// public interface IDetectedOperationService { + /// + /// Список названий операций. + /// Если указан idWell, то возвращается список названий операций найденных на указанной скважине. + /// + /// + /// + /// Task?> GetCategoriesAsync(int? idWell, CancellationToken token); + + /// + /// Получить автоматически определенные по телеметрии операции с анализом по бурильщикам + /// + /// + /// + /// Task GetAsync(DetectedOperationRequest request, CancellationToken token); + + /// + /// Удалить операции + /// + /// + /// + /// Task DeleteAsync(DetectedOperationRequest request, CancellationToken token); + + /// + /// Статистика по операциям + /// + /// + /// + /// Task?> GetOperationsStatAsync(DetectedOperationRequest request, CancellationToken token); + + /// + /// Выгрузка в Excel + /// + /// + /// + /// Task ExportAsync(IEnumerable idsWells, CancellationToken token); } #nullable disable diff --git a/AsbCloudWebApi.Tests/ServicesTests/DetectedOperationServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/DetectedOperationServiceTest.cs index e169049d..03bcff27 100644 --- a/AsbCloudWebApi.Tests/ServicesTests/DetectedOperationServiceTest.cs +++ b/AsbCloudWebApi.Tests/ServicesTests/DetectedOperationServiceTest.cs @@ -131,7 +131,7 @@ namespace AsbCloudWebApi.Tests.ServicesTests request = new DetectedOperationRequest { IdWell = 1, - IdCategory = 1 + IdsCategories = new int[] { 1 }, }; AsbCloudInfrastructure.DependencyInjection.MapsterSetup(); } From fb12919d85608d663e91b957affcd0e9152a8215 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 5 Aug 2022 17:16:34 +0500 Subject: [PATCH 32/34] Split operation flash. --- ...220805120222_Add_new_operation.Designer.cs | 6136 +++++++++++++++++ .../20220805120222_Add_new_operation.cs | 25 + .../AsbCloudDbContextModelSnapshot.cs | 100 +- AsbCloudDb/Model/AsbCloudDbContext.cs | 1 + .../Detectors/DetectorFlashing.cs | 6 +- .../DetectorFlashingBeforeConnection.cs | 55 + .../OperationDetectionBackgroundService.cs | 1 + .../Specifications/Промывка.md | 26 + 8 files changed, 6300 insertions(+), 50 deletions(-) create mode 100644 AsbCloudDb/Migrations/20220805120222_Add_new_operation.Designer.cs create mode 100644 AsbCloudDb/Migrations/20220805120222_Add_new_operation.cs create mode 100644 AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashingBeforeConnection.cs create mode 100644 AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка.md diff --git a/AsbCloudDb/Migrations/20220805120222_Add_new_operation.Designer.cs b/AsbCloudDb/Migrations/20220805120222_Add_new_operation.Designer.cs new file mode 100644 index 00000000..a9b17a0f --- /dev/null +++ b/AsbCloudDb/Migrations/20220805120222_Add_new_operation.Designer.cs @@ -0,0 +1,6136 @@ +// +using System; +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("20220805120222_Add_new_operation")] + partial class Add_new_operation + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "6.0.1") + .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") + .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") + .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") + .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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недрапользователь" + }, + new + { + Id = 2, + Caption = "Буровой подрядчик" + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport.DailyReport", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date") + .HasComment("Дата отчёта"); + + b.Property("Info") + .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") + .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") + .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("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.DrillFlowChart", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellOperationCategory") + .HasColumnType("integer") + .HasColumnName("id_operation_category") + .HasComment("Id типа операции"); + + b.Property("LastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_update") + .HasComment("Дата последнего изменения"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellOperationCategory"); + + b.ToTable("t_drill_flow_chart"); + + 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.DrillParams", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadAvg") + .HasColumnType("double precision") + .HasColumnName("axial_load_avg") + .HasComment("Средняя нагрузка"); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowAvg") + .HasColumnType("double precision") + .HasColumnName("flow_avg") + .HasComment("Средний расход"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Id с типом секции скважины"); + + b.Property("PressureAvg") + .HasColumnType("double precision") + .HasColumnName("pressure_avg") + .HasComment("Среднее давление"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_avg") + .HasComment("Средние обороты на ВСП"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_avg") + .HasComment("Средний момент на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_drill_params"); + + b.HasComment("Режим бурения в секции (диапазоны параметров бурения)"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .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 = "Программы цементирования обсадных колонн" + }); + }); + + 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") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("PublishInfo") + .HasColumnType("jsonb") + .HasColumnName("publish_info") + .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.Measure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .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") + .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.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") + .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 = 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" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("IdCompany", "IdWell"); + + b.HasIndex("IdWell"); + + b.ToTable("t_relation_company_well"); + + b.HasComment("отношение скважин и компаний"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part"); + + b.HasComment("Отношение пользователей и частей ПБ"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission"); + + b.HasComment("Отношение ролей пользователей и разрешений доступа"); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role"); + + b.HasComment("Отношение ролей к ролям"); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role"); + + b.HasComment("Отношение пользователей и ролей"); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property"); + + b.HasComment("Отчеты с данными по буровым"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule"); + + b.HasComment("График работы бурильщика"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest"); + + b.HasComment("Запросы на изменение уставок панели оператора"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry"); + + b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub"); + + b.HasComment("набор основных данных по SAUB"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToView("mw_telemetry_datas_saub_stat"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("BreakAngleK") + .HasColumnType("real") + .HasColumnName("break_angle_k") + .HasComment("Коэффициент для расчёта за какой угол нужно тормозить"); + + b.Property("BreakAngleLeft") + .HasColumnType("real") + .HasColumnName("break_angle_left") + .HasComment("Угол торможения влево при работе по моменту"); + + b.Property("EncoderResolution") + .HasColumnType("real") + .HasColumnName("encoder_resolution") + .HasComment("Разрешение энкодера"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PidMuxTorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("pid_mux_torque_left_limit") + .HasComment(" Момент при котором определяется ехать назад по моменту или по скорости"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("Ratio") + .HasColumnType("real") + .HasColumnName("ratio") + .HasComment(" Коэффициент редукции редуктора"); + + b.Property("ReverseKTorque") + .HasColumnType("real") + .HasColumnName("reverse_k_torque") + .HasComment("Коэффициент на который умножается момент, для того чтобы система поняла что мы движемся в обратную сторону"); + + b.Property("ReverseSpeedSpZeroTime") + .HasColumnType("smallint") + .HasColumnName("reverse_speed_sp_zero_time") + .HasComment("Время выдачи сигнала нулевой скорости на при смене направления"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("RotorTorqueAvg") + .HasColumnType("real") + .HasColumnName("rotor_torque_avg") + .HasComment("Момент в роторе средний"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.Property("TopDriveSpeed") + .HasColumnType("real") + .HasColumnName("top_drive_speed") + .HasComment("Скорость СВП"); + + b.Property("TopDriveSpeedErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_err"); + + b.Property("TopDriveSpeedMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_max") + .HasComment("верхний предел"); + + b.Property("TopDriveSpeedMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_min") + .HasComment("нижний предел"); + + b.Property("TopDriveSpeedOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_offset") + .HasComment("смещение"); + + b.Property("TopDriveSpeedSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from") + .HasComment("Заданная скорость c СВП"); + + b.Property("TopDriveSpeedSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_from_err"); + + b.Property("TopDriveSpeedSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_max"); + + b.Property("TopDriveSpeedSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_min"); + + b.Property("TopDriveSpeedSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_offset"); + + b.Property("TopDriveSpeedSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to") + .HasComment("Задание скорости на СВП"); + + b.Property("TopDriveSpeedSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_to_err"); + + b.Property("TopDriveSpeedSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_max"); + + b.Property("TopDriveSpeedSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_min"); + + b.Property("TopDriveSpeedSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_offset"); + + b.Property("TopDriveTorque") + .HasColumnType("real") + .HasColumnName("top_drive_torque") + .HasComment("Момент СВП"); + + b.Property("TopDriveTorqueErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_err"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_max"); + + b.Property("TopDriveTorqueMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_min"); + + b.Property("TopDriveTorqueOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_offset"); + + b.Property("TopDriveTorqueSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from") + .HasComment("Заданный момент c СВП"); + + b.Property("TopDriveTorqueSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_from_err"); + + b.Property("TopDriveTorqueSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_max"); + + b.Property("TopDriveTorqueSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_min"); + + b.Property("TopDriveTorqueSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_offset"); + + b.Property("TopDriveTorqueSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to") + .HasComment("Задание момента на СВП"); + + b.Property("TopDriveTorqueSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_to_err"); + + b.Property("TopDriveTorqueSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_max"); + + b.Property("TopDriveTorqueSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_min"); + + b.Property("TopDriveTorqueSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_offset"); + + b.Property("TorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("torque_left_limit") + .HasComment("Ограничение крутящего момента влево"); + + b.Property("TorqueRampTime") + .HasColumnType("real") + .HasColumnName("torque_ramp_time") + .HasComment("Время нарастания момента"); + + b.Property("TorqueRightLimit") + .HasColumnType("real") + .HasColumnName("torque_right_limit") + .HasComment("Ограничение крутящего момента вправо"); + + b.Property("TorqueStarting") + .HasColumnType("real") + .HasColumnName("torque_starting") + .HasComment("Страгивающий момент"); + + b.Property("TurnLeftOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_angle") + .HasComment("Доворот по градусам единожды влево"); + + b.Property("TurnLeftOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_revols") + .HasComment("Доворот по оборотам единожды влево"); + + b.Property("TurnLeftOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_torque") + .HasComment("Доворот по моменту единожды влево"); + + b.Property("TurnRightOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_angle") + .HasComment("Доворот по градусам единожды вправо"); + + b.Property("TurnRightOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_revols") + .HasComment("Доворот по оборотам единожды вправо"); + + b.Property("TurnRightOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_torque") + .HasComment("Доворот по моменту единожды вправо"); + + b.Property("UnlockBySectorOut") + .HasColumnType("real") + .HasColumnName("unlock_by_sector_out") + .HasComment(" Градус отклонения от сектора для автоматического сброса блокировки"); + + b.Property("Ver") + .HasColumnType("real") + .HasColumnName("ver") + .HasComment("Версия ПО ПЛК"); + + b.Property("W2800") + .HasColumnType("smallint") + .HasColumnName("w2800") + .HasComment("Установка нуля энкодера"); + + b.Property("W2808") + .HasColumnType("smallint") + .HasColumnName("w2808") + .HasComment("Неисправность энкодера"); + + b.Property("W2810") + .HasColumnType("smallint") + .HasColumnName("w2810") + .HasComment(" автоматический сброс блокировки"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin"); + + b.HasComment("набор основных данных по SpinMaster"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event"); + + b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message"); + + b.HasComment("Сообщения на буровых"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user"); + + b.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n100 - удален"); + + b.Property("Login") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user"); + + b.HasComment("Пользователи облака"); + + b.HasData( + new + { + Id = 1, + IdCompany = 1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role"); + + b.HasComment("Роли пользователей в системе"); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings"); + + b.HasComment("настройки интерфейса пользователя"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well"); + + b.HasComment("скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite"); + + b.HasComment("Композитная скважина"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation"); + + b.HasComment("Данные по операциям на скважине"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("integer") + .HasColumnName("code") + .HasComment("Код операции"); + + b.Property("Name") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.ToTable("t_well_operation_category"); + + b.HasComment("Справочник операций на скважине"); + + b.HasData( + new + { + Id = 1, + Code = 0, + Name = "Невозможно определить операцию" + }, + new + { + Id = 2, + Code = 0, + Name = "Роторное бурение" + }, + new + { + Id = 3, + Code = 0, + Name = "Слайдирование" + }, + new + { + Id = 4, + Code = 0, + Name = "Подъем с проработкой" + }, + new + { + Id = 5, + Code = 0, + Name = "Спуск с проработкой" + }, + new + { + Id = 6, + Code = 0, + Name = "Подъем с промывкой" + }, + new + { + Id = 7, + Code = 0, + Name = "Спуск с промывкой" + }, + new + { + Id = 8, + Code = 0, + Name = "Спуск в скважину" + }, + new + { + Id = 9, + Code = 0, + Name = "Спуск с вращением" + }, + new + { + Id = 10, + Code = 0, + Name = "Подъем из скважины" + }, + new + { + Id = 11, + Code = 0, + Name = "Подъем с вращением" + }, + new + { + Id = 12, + Code = 0, + Name = "Промывка в покое" + }, + new + { + Id = 13, + Code = 0, + Name = "Промывка с вращением" + }, + new + { + Id = 14, + Code = 0, + Name = "Удержание в клиньях" + }, + new + { + Id = 15, + Code = 0, + Name = "Неподвижное состояние" + }, + new + { + Id = 16, + Code = 0, + Name = "Вращение без циркуляции" + }, + new + { + Id = 17, + Code = 0, + Name = "На поверхности" + }, + new + { + Id = 18, + Code = 0, + Name = "Проработка перед наращиванием" + }, + new + { + Id = 19, + Code = 0, + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 20, + Code = 0, + Name = "Промывка перед наращиванием" + }, + new + { + Id = 21, + Code = 0, + Name = "Статический замер телесистемы" + }, + new + { + Id = 22, + Code = 0, + Name = "Промывка" + }, + new + { + Id = 1001, + Code = 0, + Name = "Бурение" + }, + new + { + Id = 1002, + Code = 0, + Name = "ГИС" + }, + new + { + Id = 1003, + Code = 0, + Name = "ГФР" + }, + new + { + Id = 1004, + Code = 0, + Name = "Монтаж ПВО" + }, + new + { + Id = 1005, + Code = 0, + Name = "Демонтаж ПВО" + }, + new + { + Id = 1006, + Code = 0, + Name = "Установка ФА" + }, + new + { + Id = 1007, + Code = 0, + Name = "Оборудование устья" + }, + new + { + Id = 1008, + Code = 0, + Name = "ОЗЦ" + }, + new + { + Id = 1011, + Code = 0, + Name = "Начало цикла строительства скважины" + }, + new + { + Id = 1012, + Code = 0, + Name = "Окончание цикла строительства скважины" + }, + new + { + Id = 1013, + Code = 0, + Name = "Опрессовка ПВО" + }, + new + { + Id = 1014, + Code = 0, + Name = "Опрессовка Ц.К." + }, + new + { + Id = 1015, + Code = 0, + Name = "Опрессовка ВЗД" + }, + new + { + Id = 1016, + Code = 0, + Name = "Перевод скв на другой тип промывочной жидкости" + }, + new + { + Id = 1017, + Code = 0, + Name = "Перезапись каротажа" + }, + new + { + Id = 1018, + Code = 0, + Name = "Перетяжка талевого каната" + }, + new + { + Id = 1019, + Code = 0, + Name = "Наращивание, промывка" + }, + new + { + Id = 1020, + Code = 0, + Name = "Подъем инструмента" + }, + new + { + Id = 1021, + Code = 0, + Name = "Подъем инструмента с промывкой" + }, + new + { + Id = 1022, + Code = 0, + Name = "Обратная проработка" + }, + new + { + Id = 1023, + Code = 0, + Name = "Сборка инструмента с мостков" + }, + new + { + Id = 1024, + Code = 0, + Name = "Подготовительные работы" + }, + new + { + Id = 1025, + Code = 0, + Name = "Сборка КНБК" + }, + new + { + Id = 1026, + Code = 0, + Name = "Разборка КНБК" + }, + new + { + Id = 1027, + Code = 0, + Name = "Промывка" + }, + new + { + Id = 1028, + Code = 0, + Name = "Промежуточная промывка" + }, + new + { + Id = 1029, + Code = 0, + Name = "Прокачка пачек" + }, + new + { + Id = 1030, + Code = 0, + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 1031, + Code = 0, + Name = "Ремонт" + }, + new + { + Id = 1032, + Code = 0, + Name = "Спуск инструмента" + }, + new + { + Id = 1033, + Code = 0, + Name = "Спуск инструмента с промывкой" + }, + new + { + Id = 1034, + Code = 0, + Name = "Прямая проработка" + }, + new + { + Id = 1035, + Code = 0, + Name = "Принудительная проработка" + }, + new + { + Id = 1037, + Code = 0, + Name = "Тех СПО-подъем" + }, + new + { + Id = 1038, + Code = 0, + Name = "Тех СПО-спуск" + }, + new + { + Id = 1039, + Code = 0, + Name = "Техническое обслуживание" + }, + new + { + Id = 1040, + Code = 0, + Name = "Цементаж" + }, + new + { + Id = 1041, + Code = 0, + Name = "Шаблонировка ствола" + }, + new + { + Id = 1042, + Code = 0, + Name = "Геологическое осложнение" + }, + new + { + Id = 1043, + Code = 0, + Name = "НПВ" + }, + new + { + Id = 1044, + Code = 0, + Name = "ВМР" + }, + new + { + Id = 1045, + Code = 0, + Name = "Прочее" + }, + new + { + Id = 1046, + Code = 0, + Name = "Спуск КНБК" + }, + new + { + Id = 1047, + Code = 0, + Name = "Подъем КНБК" + }, + new + { + Id = 1048, + Code = 0, + Name = "Спуск ОК" + }, + new + { + Id = 1050, + Code = 0, + Name = "Промывка при спуске ОК" + }, + new + { + Id = 1051, + Code = 0, + Name = "Замер ТС" + }, + new + { + Id = 1052, + Code = 0, + Name = "Тех. отстой" + }, + new + { + Id = 1053, + Code = 0, + Name = "Циркуляция и Обработка БР" + }, + new + { + Id = 1054, + Code = 0, + Name = "Срезка ствола" + }, + new + { + Id = 1055, + Code = 0, + Name = "Вспомогательные работы" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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.HasKey("Id"); + + b.ToTable("t_well_section_type"); + + b.HasComment("конструкция секции скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол" + }, + new + { + Id = 2, + Caption = "Направление" + }, + new + { + Id = 3, + Caption = "Кондуктор" + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна" + }, + new + { + Id = 5, + Caption = "Транспортный ствол" + }, + new + { + Id = 6, + Caption = "Хвостовик" + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2" + }, + new + { + Id = 8, + Caption = "Направление 2" + }, + new + { + Id = 9, + Caption = "Кондуктор 2" + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2" + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2" + }, + new + { + Id = 12, + Caption = "Хвостовик 2" + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3" + }, + new + { + Id = 14, + Caption = "Направление 3" + }, + new + { + Id = 15, + Caption = "Кондуктор 3" + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3" + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3" + }, + new + { + Id = 18, + Caption = "Хвостовик 3" + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4" + }, + new + { + Id = 20, + Caption = "Направление 4" + }, + new + { + Id = 21, + Caption = "Кондуктор 4" + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4" + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4" + }, + new + { + Id = 24, + Caption = "Хвостовик 4" + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5" + }, + new + { + Id = 26, + Caption = "Направление 5" + }, + new + { + Id = 27, + Caption = "Кондуктор 5" + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5" + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5" + }, + new + { + Id = 30, + Caption = "Хвостовик 5" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type"); + + b.HasComment("конструкция скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillParams", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("DrillParamsCollection") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_drill_params_t_well_section_type_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType"); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("DrillParamsCollection"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20220805120222_Add_new_operation.cs b/AsbCloudDb/Migrations/20220805120222_Add_new_operation.cs new file mode 100644 index 00000000..abf95ab0 --- /dev/null +++ b/AsbCloudDb/Migrations/20220805120222_Add_new_operation.cs @@ -0,0 +1,25 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + public partial class Add_new_operation : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.InsertData( + table: "t_well_operation_category", + columns: new[] { "id", "code", "name" }, + values: new object[] { 22, 0, "Промывка" }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 22); + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index 30c47abf..e03ae336 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -60,7 +60,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdDeposit"); - b.ToTable("t_cluster", (string)null); + b.ToTable("t_cluster"); b.HasComment("Кусты"); }); @@ -89,7 +89,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdCompanyType"); - b.ToTable("t_company", (string)null); + b.ToTable("t_company"); b.HasData( new @@ -116,7 +116,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_company_type", (string)null); + b.ToTable("t_company_type"); b.HasData( new @@ -136,7 +136,7 @@ namespace AsbCloudDb.Migrations }); }); - modelBuilder.Entity("AsbCloudDb.Model.DailyReportDB.DailyReport", b => + modelBuilder.Entity("AsbCloudDb.Model.DailyReport.DailyReport", b => { b.Property("IdWell") .HasColumnType("integer") @@ -156,7 +156,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdWell", "StartDate") .HasName("t_id_well_date_start_pk"); - b.ToTable("t_daily_report", (string)null); + b.ToTable("t_daily_report"); b.HasComment("Ежедневные отчёты"); }); @@ -190,7 +190,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_deposit", (string)null); + b.ToTable("t_deposit"); b.HasComment("Месторождение"); }); @@ -249,7 +249,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdTelemetry"); - b.ToTable("t_detected_operation", (string)null); + b.ToTable("t_detected_operation"); b.HasComment("автоматически определенные операции по телеметрии"); }); @@ -286,7 +286,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_driller", (string)null); + b.ToTable("t_driller"); b.HasComment("Бурильщик"); }); @@ -381,7 +381,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellOperationCategory"); - b.ToTable("t_drill_flow_chart", (string)null); + b.ToTable("t_drill_flow_chart"); b.HasComment("Параметры коридоров бурения (диапазоны параметров бурения)"); }); @@ -410,7 +410,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell", "IdFileCategory") .IsUnique(); - b.ToTable("t_drilling_program_part", (string)null); + b.ToTable("t_drilling_program_part"); b.HasComment("части программ бурения"); }); @@ -525,7 +525,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellSectionType"); - b.ToTable("t_drill_params", (string)null); + b.ToTable("t_drill_params"); b.HasComment("Режим бурения в секции (диапазоны параметров бурения)"); }); @@ -551,7 +551,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_file_category", (string)null); + b.ToTable("t_file_category"); b.HasComment("Категории файлов"); @@ -725,7 +725,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_file_info", (string)null); + b.ToTable("t_file_info"); b.HasComment("Файлы всех категорий"); }); @@ -776,7 +776,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdUser"); - b.ToTable("t_file_mark", (string)null); + b.ToTable("t_file_mark"); b.HasComment("Действия с файлами."); }); @@ -821,7 +821,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_measure", (string)null); + b.ToTable("t_measure"); b.HasComment("Таблица c данными для вкладки 'Последние данные'"); }); @@ -847,7 +847,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_measure_category", (string)null); + b.ToTable("t_measure_category"); b.HasComment("Категория последних данных"); @@ -918,7 +918,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_operationvalue", (string)null); + b.ToTable("t_operationvalue"); b.HasComment("Целевые/нормативные показатели операции"); }); @@ -946,7 +946,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_permission", (string)null); + b.ToTable("t_permission"); b.HasComment("Разрешения на доступ к данным"); @@ -1663,7 +1663,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_relation_company_well", (string)null); + b.ToTable("t_relation_company_well"); b.HasComment("отношение скважин и компаний"); }); @@ -1688,7 +1688,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdDrillingProgramPart"); - b.ToTable("t_relation_user_drilling_program_part", (string)null); + b.ToTable("t_relation_user_drilling_program_part"); b.HasComment("Отношение пользователей и частей ПБ"); }); @@ -1707,7 +1707,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdPermission"); - b.ToTable("t_relation_user_role_permission", (string)null); + b.ToTable("t_relation_user_role_permission"); b.HasComment("Отношение ролей пользователей и разрешений доступа"); @@ -2289,7 +2289,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdInclude"); - b.ToTable("t_relation_user_role_user_role", (string)null); + b.ToTable("t_relation_user_role_user_role"); b.HasComment("Отношение ролей к ролям"); @@ -2580,7 +2580,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdUserRole"); - b.ToTable("t_relation_user_user_role", (string)null); + b.ToTable("t_relation_user_user_role"); b.HasComment("Отношение пользователей и ролей"); @@ -2636,7 +2636,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_report_property", (string)null); + b.ToTable("t_report_property"); b.HasComment("Отчеты с данными по буровым"); }); @@ -2687,7 +2687,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_schedule", (string)null); + b.ToTable("t_schedule"); b.HasComment("График работы бурильщика"); }); @@ -2741,7 +2741,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_setpoints_rquest", (string)null); + b.ToTable("t_setpoints_rquest"); b.HasComment("Запросы на изменение уставок панели оператора"); }); @@ -2774,7 +2774,7 @@ namespace AsbCloudDb.Migrations b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); - b.ToTable("t_telemetry", (string)null); + b.ToTable("t_telemetry"); b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); }); @@ -2977,7 +2977,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "DateTime"); - b.ToTable("t_telemetry_data_saub", (string)null); + b.ToTable("t_telemetry_data_saub"); b.HasComment("набор основных данных по SAUB"); }); @@ -3318,7 +3318,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "DateTime"); - b.ToTable("t_telemetry_data_spin", (string)null); + b.ToTable("t_telemetry_data_spin"); b.HasComment("набор основных данных по SpinMaster"); }); @@ -3343,7 +3343,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "IdEvent"); - b.ToTable("t_telemetry_event", (string)null); + b.ToTable("t_telemetry_event"); b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); }); @@ -3403,7 +3403,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdTelemetry"); - b.ToTable("t_telemetry_message", (string)null); + b.ToTable("t_telemetry_message"); b.HasComment("Сообщения на буровых"); }); @@ -3439,7 +3439,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "IdUser"); - b.ToTable("t_telemetry_user", (string)null); + b.ToTable("t_telemetry_user"); b.HasComment("Пользователи панели САУБ. Для сообщений."); }); @@ -3516,7 +3516,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("Login") .IsUnique(); - b.ToTable("t_user", (string)null); + b.ToTable("t_user"); b.HasComment("Пользователи облака"); @@ -3553,7 +3553,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_user_role", (string)null); + b.ToTable("t_user_role"); b.HasComment("Роли пользователей в системе"); @@ -3949,7 +3949,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellType"); - b.ToTable("t_well", (string)null); + b.ToTable("t_well"); b.HasComment("скважины"); }); @@ -3977,7 +3977,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellSrc"); - b.ToTable("t_well_composite", (string)null); + b.ToTable("t_well_composite"); b.HasComment("Композитная скважина"); }); @@ -4053,7 +4053,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellSectionType"); - b.ToTable("t_well_operation", (string)null); + b.ToTable("t_well_operation"); b.HasComment("Данные по операциям на скважине"); }); @@ -4079,7 +4079,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_well_operation_category", (string)null); + b.ToTable("t_well_operation_category"); b.HasComment("Справочник операций на скважине"); @@ -4211,6 +4211,12 @@ namespace AsbCloudDb.Migrations Name = "Статический замер телесистемы" }, new + { + Id = 22, + Code = 0, + Name = "Промывка" + }, + new { Id = 1001, Code = 0, @@ -4536,7 +4542,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_well_section_type", (string)null); + b.ToTable("t_well_section_type"); b.HasComment("конструкция секции скважины"); @@ -4711,7 +4717,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_well_type", (string)null); + b.ToTable("t_well_type"); b.HasComment("конструкция скважины"); @@ -4932,7 +4938,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_1", (string)null); + b.ToTable("t_telemetry_wits_1"); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => @@ -5020,7 +5026,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_50", (string)null); + b.ToTable("t_telemetry_wits_50"); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => @@ -5072,7 +5078,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_60", (string)null); + b.ToTable("t_telemetry_wits_60"); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => @@ -5128,7 +5134,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_61", (string)null); + b.ToTable("t_telemetry_wits_61"); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => @@ -5216,7 +5222,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_7", (string)null); + b.ToTable("t_telemetry_wits_7"); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => @@ -5420,7 +5426,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_8", (string)null); + b.ToTable("t_telemetry_wits_8"); }); modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => @@ -5444,7 +5450,7 @@ namespace AsbCloudDb.Migrations b.Navigation("CompanyType"); }); - modelBuilder.Entity("AsbCloudDb.Model.DailyReportDB.DailyReport", b => + modelBuilder.Entity("AsbCloudDb.Model.DailyReport.DailyReport", b => { b.HasOne("AsbCloudDb.Model.Well", "Well") .WithMany() diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index ae2bac70..00310175 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -686,6 +686,7 @@ namespace AsbCloudDb.Model new WellOperationCategory {Id = 19, Name = "Шаблонировка перед наращиванием", Code = 0 }, new WellOperationCategory {Id = 20, Name = "Промывка перед наращиванием", Code = 0 }, new WellOperationCategory {Id = 21, Name = "Статический замер телесистемы", Code = 0 }, + new WellOperationCategory {Id = 22, Name = "Промывка", Code = 0 }, // Операции ручного ввода new WellOperationCategory {Id = 1001, Name = "Бурение", Code = 0 }, diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs index 844b975b..cc9766a4 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs @@ -4,12 +4,12 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors { #nullable enable /// - /// Промывка перед наращиванием + /// Промывка /// internal class DetectorFlashing : DetectorAbstract { public DetectorFlashing() - : base(20) { } + : base(22) { } protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end) => CalcDeltaMinutes(telemetry, begin, end); @@ -28,7 +28,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors if (point0.Pressure < 15) return false; - if (point0.BlockPosition > 3) + if (point0.BlockPosition < 3) return false; return true; diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashingBeforeConnection.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashingBeforeConnection.cs new file mode 100644 index 00000000..57fab828 --- /dev/null +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashingBeforeConnection.cs @@ -0,0 +1,55 @@ +using AsbCloudDb.Model; + +namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors +{ +#nullable enable + /// + /// Промывка перед наращиванием + /// + internal class DetectorFlashingBeforeConnection : DetectorAbstract + { + public DetectorFlashingBeforeConnection() + : base(20) { } + + protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end) + => CalcDeltaMinutes(telemetry, begin, end); + + protected override bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation) + { + if (!((previousOperation?.IdCategory == 2) || + (previousOperation?.IdCategory == 3))) + return false; + + var point0 = telemetry[position]; + var delta = point0.WellDepth - point0.BitDepth; + if (delta > 0.05d) + return false; + + if (point0.Pressure < 15) + return false; + + if (point0.BlockPosition > 3) + return false; + + return true; + } + + protected override bool DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation) + { + var point0 = telemetry[position]; + var delta = point0.WellDepth - point0.BitDepth; + if ((delta > 0.03d ) + && (point0.Pressure > 15) + && ContainsDeviationApprox(telemetry, t=>t.BlockPosition, position, 60, 0.03)) + return true; + + return false; + } + + protected override bool IsValid(DetectableTelemetry[] telemetry, int begin, int end) + => IsValidByWellDepthDoesNotChange(telemetry, begin, end); + } + +#nullable disable +} + diff --git a/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs b/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs index 4f815cc8..9124e6d8 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/OperationDetectionBackgroundService.cs @@ -26,6 +26,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations new DetectorTemplating(), new DetectorSlipsTime(), new DetectorStaticSurveying(), + new DetectorFlashingBeforeConnection(), new DetectorFlashing(), }; diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка.md new file mode 100644 index 00000000..ad2cec9e --- /dev/null +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка.md @@ -0,0 +1,26 @@ +# Алгоритм определения промывки + +## Описание + +Промывка – операция, во время которой после добуривания очередной трубы происходит снижение осевой нагрузки и дифференциального давления, талевый блок остается условно неподвижным. + +Проработка перед наращиванием определяется как время между: +- окончанием операции бурения (ротор/ слайд/ ручное бурение) +- началом операции проработки/ шаблонировки перед наращивании + +## Метод определения + + Признак начала операции = + ( предыдущая операция == бурение в роторе или слайде) + ( расстояние от долота до забоя < 0,05м ) И + ( давление > 15 атм ) И + ( положение блока > 3м ) + + Признак окончания операции = + ( расстояние от долота до забоя > 0.03м ) И + ( давление > 15 атм ) И + ( высота блока изменяется больше чем на 0.03м в течении 60 сек с начала операции); + + +## Ключевой параметр +Продолжительность операции. From 4a8e15d8a19c2e4af751ba8659de7e29af795c3a Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 5 Aug 2022 17:52:42 +0500 Subject: [PATCH 33/34] doc --- .../Services/IDrillFlowChartService.cs | 10 ++ AsbCloudApp/Services/IDrillerService.cs | 3 + .../Services/IDrillingProgramService.cs | 90 +++++++++++ AsbCloudApp/Services/IEmailService.cs | 16 ++ AsbCloudApp/Services/IEventService.cs | 10 ++ AsbCloudApp/Services/IFileService.cs | 143 ++++++++++++++++++ AsbCloudApp/Services/IFileShareService.cs | 18 +++ AsbCloudApp/Services/IMeasureService.cs | 56 +++++++ 8 files changed, 346 insertions(+) diff --git a/AsbCloudApp/Services/IDrillFlowChartService.cs b/AsbCloudApp/Services/IDrillFlowChartService.cs index 693cab85..54e98b71 100644 --- a/AsbCloudApp/Services/IDrillFlowChartService.cs +++ b/AsbCloudApp/Services/IDrillFlowChartService.cs @@ -6,8 +6,18 @@ using System.Threading.Tasks; namespace AsbCloudApp.Services { + /// + /// + /// public interface IDrillFlowChartService : ICrudWellRelatedService { + /// + /// . + /// + /// + /// + /// + /// Task> GetAllAsync(int idWell, DateTime updateFrom, CancellationToken token = default); } diff --git a/AsbCloudApp/Services/IDrillerService.cs b/AsbCloudApp/Services/IDrillerService.cs index 505eba3f..79de46c4 100644 --- a/AsbCloudApp/Services/IDrillerService.cs +++ b/AsbCloudApp/Services/IDrillerService.cs @@ -2,6 +2,9 @@ namespace AsbCloudApp.Services { + /// + /// Сервис добавления бурильщиков + /// public interface IDrillerService : ICrudService { diff --git a/AsbCloudApp/Services/IDrillingProgramService.cs b/AsbCloudApp/Services/IDrillingProgramService.cs index e17b6481..ee24d34e 100644 --- a/AsbCloudApp/Services/IDrillingProgramService.cs +++ b/AsbCloudApp/Services/IDrillingProgramService.cs @@ -5,19 +5,109 @@ using System.Threading.Tasks; namespace AsbCloudApp.Services { + /// + /// Программа бурения + /// public interface IDrillingProgramService { + /// + /// Получить пользователей доступных для назначения в публикаторы или акцепторы + /// + /// + /// + /// Task> GetAvailableUsers(int idWell, CancellationToken token = default); + + /// + /// Части программы бурения + /// + /// + /// Task> GetCategoriesAsync(CancellationToken token = default); + + /// + /// Состояние программы бурения + /// + /// + /// + /// + /// Task GetStateAsync(int idWell, int idUser, CancellationToken token = default); + + /// + /// Загрузить файл + /// + /// + /// + /// + /// + /// + /// + /// Task AddFile(int idWell, int idFileCategory, int idUser, string fileFullName, System.IO.Stream fileStream, CancellationToken token = default); + + /// + /// Добавить часть программы бурения + /// + /// + /// + /// + /// Task AddPartsAsync(int idWell, IEnumerable idFileCategories, CancellationToken token = default); + + /// + /// Удалить часть программы бурения + /// + /// + /// + /// + /// Task RemovePartsAsync(int idWell, IEnumerable idFileCategories, CancellationToken token = default); + + /// + /// Назначить пользователю роль + /// + /// + /// + /// + /// + /// + /// Task AddUserAsync(int idWell, int idFileCategory, int idUser, int idUserRole, CancellationToken token = default); + + /// + /// Удалить пользователя + /// + /// + /// + /// + /// + /// + /// Task RemoveUserAsync(int idWell, int idFileCategory, int idUser, int idUserRole, CancellationToken token = default); + + /// + /// Добавить или изменить отметку для файла (согласование/отклонение) + /// + /// + /// + /// + /// Task AddOrReplaceFileMarkAsync(FileMarkDto fileMarkDto, int idUser, CancellationToken token); + + /// + /// Удалить отметку с файла + /// + /// + /// + /// Task MarkAsDeletedFileMarkAsync(int idFileMark, CancellationToken token); + + /// + /// Сбросить ошибку формирования + /// + /// void ClearError(int idWell); } } \ No newline at end of file diff --git a/AsbCloudApp/Services/IEmailService.cs b/AsbCloudApp/Services/IEmailService.cs index a196ca03..f1c065f6 100644 --- a/AsbCloudApp/Services/IEmailService.cs +++ b/AsbCloudApp/Services/IEmailService.cs @@ -2,9 +2,25 @@ namespace AsbCloudApp.Services { + /// + /// Сервис отправки сообщений + /// public interface IEmailService { + /// + /// добавить сообщение на отправку нескольким пользователям + /// + /// + /// + /// void EnqueueSend(IEnumerable addresses, string subject, string htmlBody); + + /// + /// добавить сообщение на отправку одному пользователю + /// + /// + /// + /// void EnqueueSend(string address, string subject, string htmlBody); } } diff --git a/AsbCloudApp/Services/IEventService.cs b/AsbCloudApp/Services/IEventService.cs index 937eb24a..4adf287c 100644 --- a/AsbCloudApp/Services/IEventService.cs +++ b/AsbCloudApp/Services/IEventService.cs @@ -5,8 +5,18 @@ using System.Threading.Tasks; namespace AsbCloudApp.Services { + /// + /// Сервис сохранения списка сообщений от панелей + /// public interface IEventService { + /// + /// Сохранить. Добавить или заменить. + /// + /// + /// + /// + /// Task UpsertAsync(string uid, IEnumerable dtos, CancellationToken token = default); } diff --git a/AsbCloudApp/Services/IFileService.cs b/AsbCloudApp/Services/IFileService.cs index 86c9c2e3..23f0ee88 100644 --- a/AsbCloudApp/Services/IFileService.cs +++ b/AsbCloudApp/Services/IFileService.cs @@ -7,35 +7,178 @@ using System.Threading.Tasks; namespace AsbCloudApp.Services { + //TODO: refactor IFileService + + /// + /// Сервис доступа к файлам + /// public interface IFileService { + /// + /// Директория хранения файлов + /// string RootPath { get; } + /// + /// получить url Google drive + /// + /// + /// + /// + /// + /// Task GetSharedUrlAsync(int idFileInfo, int idUser, IFileShareService fileShareService, CancellationToken token); + + /// + /// получить url Google drive + /// + /// + /// + /// + /// + /// Task GetSharedUrlAsync(FileInfoDto dto, int idUser, IFileShareService fileShareService, CancellationToken token = default); + /// + /// Сохранить файл + /// + /// + /// + /// + /// + /// + /// + /// Task SaveAsync(int idWell, int? idUser, int idCategory, string fileFullName, Stream fileStream, CancellationToken token = default); + /// + /// Получить список файлов в контейнере + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// Task> GetInfosAsync(int idWell, int idCategory, string companyName = default, string fileName = default, DateTime begin = default, DateTime end = default, int skip = 0, int take = 32, CancellationToken token = default); + /// + /// Инфо о файле + /// + /// + /// + /// Task GetInfoAsync(int idFile, CancellationToken token); + /// + /// Пометить файл как удаленный + /// + /// + /// + /// Task MarkAsDeletedAsync(int idFile, CancellationToken token = default); + + /// + /// Получить файлы определенной категории + /// + /// + /// + /// + /// Task> GetInfosByCategoryAsync(int idWell, int idCategory, CancellationToken token = default); + + /// + /// удалить файл + /// + /// + /// + /// Task DeleteAsync(int id, CancellationToken token); + + /// + /// удалить файлы + /// + /// + /// + /// Task DeleteAsync(IEnumerable ids, CancellationToken token); + + /// + /// получить путь для скачивания + /// + /// + /// string GetUrl(FileInfoDto fileInfo); + + /// + /// получить путь для скачивания + /// + /// + /// string GetUrl(int idFile); + + /// + /// получить путь для скачивания + /// + /// + /// + /// + /// + /// string GetUrl(int idWell, int idCategory, int idFile, string dotExtention); + + /// + /// добавить метку на файл + /// + /// + /// + /// + /// Task CreateFileMarkAsync(FileMarkDto fileMarkDto, int idUser, CancellationToken token); + + /// + /// пометить метку файла как удаленную + /// + /// + /// + /// Task MarkFileMarkAsDeletedAsync(int idMark, CancellationToken token); + + /// + /// переместить файл + /// + /// + /// + /// + /// + /// + /// + /// Task MoveAsync(int idWell, int? idUser, int idCategory, string destinationFileName, string srcFileFullName, CancellationToken token = default); + + /// + /// получить инфо о файле по метке + /// + /// + /// + /// Task GetByMarkId(int idMark, CancellationToken token); + + /// + /// пометить метки файлов как удаленные + /// + /// + /// + /// Task MarkFileMarkAsDeletedAsync(IEnumerable idsMarks, CancellationToken token); } } diff --git a/AsbCloudApp/Services/IFileShareService.cs b/AsbCloudApp/Services/IFileShareService.cs index 051e8d96..98ce3ab7 100644 --- a/AsbCloudApp/Services/IFileShareService.cs +++ b/AsbCloudApp/Services/IFileShareService.cs @@ -3,11 +3,29 @@ using System.Threading.Tasks; namespace AsbCloudApp.Services { + //TODO: + + /// + /// Google disk + /// public interface IFileShareService { + /// + /// + /// + /// + /// + /// + /// Task PublishFileToCloudAsync(string filePath, string originalName, CancellationToken token); + /// + /// + /// + /// + /// + /// Task DeleteFileAsync(string sharedFileId, CancellationToken token = default); } diff --git a/AsbCloudApp/Services/IMeasureService.cs b/AsbCloudApp/Services/IMeasureService.cs index ea8b930b..f7fff368 100644 --- a/AsbCloudApp/Services/IMeasureService.cs +++ b/AsbCloudApp/Services/IMeasureService.cs @@ -5,14 +5,70 @@ using System.Threading.Tasks; namespace AsbCloudApp.Services { + /// + /// Сервис хранения результатов лабораторных анализов и измерений + /// public interface IMeasureService { + /// + /// Категории измерений + /// + /// + /// Task> GetCategoriesAsync(CancellationToken token); + + /// + /// Последние измерения по категории + /// + /// + /// + /// + /// Task GetLastAsync(int idWell, int idCategory, CancellationToken token); + + /// + /// История измерений по категории + /// + /// + /// + /// + /// Task> GetHisoryAsync(int idWell, int? idCategory, CancellationToken token); + + /// + /// Добавить измерение + /// + /// + /// + /// + /// Task InsertAsync(int idWell, MeasureDto data, CancellationToken token); + + /// + /// Редактировать + /// + /// + /// + /// + /// Task UpdateAsync(int idWell, MeasureDto data, CancellationToken token); + + /// + /// Пометить удаленным + /// + /// + /// + /// + /// Task MarkAsDeleteAsync(int idWell, int idData, CancellationToken token); + + /// + /// Удалить + /// + /// + /// + /// + /// Task DeleteAsync(int idWell, int idData, CancellationToken token); } } From 623a64fa250f444f588a1101b1ed6d14cf06f374 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Mon, 8 Aug 2022 16:45:20 +0500 Subject: [PATCH 34/34] Rafactor DB context default data. Modify WellOperation table (and defaults) --- AsbCloudApp/Data/WellOperationCategoryDto.cs | 16 +- ...Mod_structure_of_WellOperation.Designer.cs | 6294 +++++++++++++++++ ...08114310_Mod_structure_of_WellOperation.cs | 550 ++ .../AsbCloudDbContextModelSnapshot.cs | 158 + AsbCloudDb/Model/AsbCloudDbContext.cs | 494 +- AsbCloudDb/Model/DefaultData/DefaultData.cs | 31 + AsbCloudDb/Model/DefaultData/EntityFiller.cs | 18 + .../Model/DefaultData/EntityFillerCompany.cs | 10 + .../DefaultData/EntityFillerCompanyType.cs | 11 + .../DefaultData/EntityFillerFileCategory.cs | 32 + .../EntityFillerMeasureCategory.cs | 11 + .../DefaultData/EntityFillerPermission.cs | 127 + .../EntityFillerRelationUserRolePermission.cs | 58 + .../EntityFillerRelationUserRoleUserRole.cs | 32 + .../EntityFillerRelationUserUserRole.cs | 10 + .../Model/DefaultData/EntityFillerUser.cs | 15 + .../Model/DefaultData/EntityFillerUserRole.cs | 60 + .../EntityFillerWellOperationCategory.cs | 84 + .../EntityFillerWellSectionType.cs | 43 + .../Model/DefaultData/EntityFillerWellType.cs | 11 + AsbCloudDb/Model/DefaultData/IEntityFiller.cs | 9 + AsbCloudDb/Model/WellOperationCategory.cs | 5 + 22 files changed, 7591 insertions(+), 488 deletions(-) create mode 100644 AsbCloudDb/Migrations/20220808114310_Mod_structure_of_WellOperation.Designer.cs create mode 100644 AsbCloudDb/Migrations/20220808114310_Mod_structure_of_WellOperation.cs create mode 100644 AsbCloudDb/Model/DefaultData/DefaultData.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFiller.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerCompany.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerCompanyType.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerFileCategory.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerMeasureCategory.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerPermission.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRolePermission.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRoleUserRole.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerRelationUserUserRole.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerUser.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerUserRole.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerWellOperationCategory.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerWellSectionType.cs create mode 100644 AsbCloudDb/Model/DefaultData/EntityFillerWellType.cs create mode 100644 AsbCloudDb/Model/DefaultData/IEntityFiller.cs diff --git a/AsbCloudApp/Data/WellOperationCategoryDto.cs b/AsbCloudApp/Data/WellOperationCategoryDto.cs index 6238f97a..fda6c4ee 100644 --- a/AsbCloudApp/Data/WellOperationCategoryDto.cs +++ b/AsbCloudApp/Data/WellOperationCategoryDto.cs @@ -1,4 +1,6 @@ -namespace AsbCloudApp.Data +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data { /// /// DTO категория операции @@ -17,5 +19,17 @@ /// код операции /// public int Code { get; set; } + + /// + /// Название ключевого показателя операции + /// + [StringLength(32)] + public string KeyValueName { get; set; } + + /// + /// Единицы измерения ключевого показателя операции + /// + [StringLength(16)] + public string KeyValueUnits { get; set; } } } diff --git a/AsbCloudDb/Migrations/20220808114310_Mod_structure_of_WellOperation.Designer.cs b/AsbCloudDb/Migrations/20220808114310_Mod_structure_of_WellOperation.Designer.cs new file mode 100644 index 00000000..19698a02 --- /dev/null +++ b/AsbCloudDb/Migrations/20220808114310_Mod_structure_of_WellOperation.Designer.cs @@ -0,0 +1,6294 @@ +// +using System; +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("20220808114310_Mod_structure_of_WellOperation")] + partial class Mod_structure_of_WellOperation + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "6.0.1") + .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") + .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") + .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") + .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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недрапользователь" + }, + new + { + Id = 2, + Caption = "Буровой подрядчик" + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport.DailyReport", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date") + .HasComment("Дата отчёта"); + + b.Property("Info") + .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") + .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") + .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("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.DrillFlowChart", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellOperationCategory") + .HasColumnType("integer") + .HasColumnName("id_operation_category") + .HasComment("Id типа операции"); + + b.Property("LastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_update") + .HasComment("Дата последнего изменения"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellOperationCategory"); + + b.ToTable("t_drill_flow_chart"); + + 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.DrillParams", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadAvg") + .HasColumnType("double precision") + .HasColumnName("axial_load_avg") + .HasComment("Средняя нагрузка"); + + b.Property("AxialLoadMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_max") + .HasComment("Максимальная нагрузка"); + + b.Property("AxialLoadMin") + .HasColumnType("double precision") + .HasColumnName("axial_load_min") + .HasComment("Минимальная нагрузка"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина окончания интервала"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Стартовая глубина"); + + b.Property("FlowAvg") + .HasColumnType("double precision") + .HasColumnName("flow_avg") + .HasComment("Средний расход"); + + b.Property("FlowMax") + .HasColumnType("double precision") + .HasColumnName("flow_max") + .HasComment("Максимальный расход"); + + b.Property("FlowMin") + .HasColumnType("double precision") + .HasColumnName("flow_min") + .HasComment("Минимальный расход"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("well_id") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Id с типом секции скважины"); + + b.Property("PressureAvg") + .HasColumnType("double precision") + .HasColumnName("pressure_avg") + .HasComment("Среднее давление"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление"); + + b.Property("PressureMin") + .HasColumnType("double precision") + .HasColumnName("pressure_min") + .HasComment("Минимальное давление"); + + b.Property("RotorSpeedAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_avg") + .HasComment("Средние обороты на ВСП"); + + b.Property("RotorSpeedMax") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_max") + .HasComment("Максимальные обороты на ВСП"); + + b.Property("RotorSpeedMin") + .HasColumnType("double precision") + .HasColumnName("rotor_speed_min") + .HasComment("Минимальные обороты на ВСП"); + + b.Property("RotorTorqueAvg") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_avg") + .HasComment("Средний момент на ВСП"); + + b.Property("RotorTorqueMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_max") + .HasComment("Максимальный момент на ВСП"); + + b.Property("RotorTorqueMin") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_min") + .HasComment("Минимальный момент на ВСП"); + + b.HasKey("Id"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_drill_params"); + + b.HasComment("Режим бурения в секции (диапазоны параметров бурения)"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .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 = "Программы цементирования обсадных колонн" + }); + }); + + 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") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("PublishInfo") + .HasColumnType("jsonb") + .HasColumnName("publish_info") + .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.Measure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .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") + .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.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") + .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 = 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" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("IdCompany", "IdWell"); + + b.HasIndex("IdWell"); + + b.ToTable("t_relation_company_well"); + + b.HasComment("отношение скважин и компаний"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part"); + + b.HasComment("Отношение пользователей и частей ПБ"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission"); + + b.HasComment("Отношение ролей пользователей и разрешений доступа"); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role"); + + b.HasComment("Отношение ролей к ролям"); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role"); + + b.HasComment("Отношение пользователей и ролей"); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property"); + + b.HasComment("Отчеты с данными по буровым"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule"); + + b.HasComment("График работы бурильщика"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest"); + + b.HasComment("Запросы на изменение уставок панели оператора"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry"); + + b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub"); + + b.HasComment("набор основных данных по SAUB"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToView("mw_telemetry_datas_saub_stat"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("BreakAngleK") + .HasColumnType("real") + .HasColumnName("break_angle_k") + .HasComment("Коэффициент для расчёта за какой угол нужно тормозить"); + + b.Property("BreakAngleLeft") + .HasColumnType("real") + .HasColumnName("break_angle_left") + .HasComment("Угол торможения влево при работе по моменту"); + + b.Property("EncoderResolution") + .HasColumnType("real") + .HasColumnName("encoder_resolution") + .HasComment("Разрешение энкодера"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PidMuxTorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("pid_mux_torque_left_limit") + .HasComment(" Момент при котором определяется ехать назад по моменту или по скорости"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("Ratio") + .HasColumnType("real") + .HasColumnName("ratio") + .HasComment(" Коэффициент редукции редуктора"); + + b.Property("ReverseKTorque") + .HasColumnType("real") + .HasColumnName("reverse_k_torque") + .HasComment("Коэффициент на который умножается момент, для того чтобы система поняла что мы движемся в обратную сторону"); + + b.Property("ReverseSpeedSpZeroTime") + .HasColumnType("smallint") + .HasColumnName("reverse_speed_sp_zero_time") + .HasComment("Время выдачи сигнала нулевой скорости на при смене направления"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("RotorTorqueAvg") + .HasColumnType("real") + .HasColumnName("rotor_torque_avg") + .HasComment("Момент в роторе средний"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.Property("TopDriveSpeed") + .HasColumnType("real") + .HasColumnName("top_drive_speed") + .HasComment("Скорость СВП"); + + b.Property("TopDriveSpeedErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_err"); + + b.Property("TopDriveSpeedMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_max") + .HasComment("верхний предел"); + + b.Property("TopDriveSpeedMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_min") + .HasComment("нижний предел"); + + b.Property("TopDriveSpeedOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_offset") + .HasComment("смещение"); + + b.Property("TopDriveSpeedSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from") + .HasComment("Заданная скорость c СВП"); + + b.Property("TopDriveSpeedSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_from_err"); + + b.Property("TopDriveSpeedSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_max"); + + b.Property("TopDriveSpeedSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_min"); + + b.Property("TopDriveSpeedSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_from_offset"); + + b.Property("TopDriveSpeedSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to") + .HasComment("Задание скорости на СВП"); + + b.Property("TopDriveSpeedSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_speed_sp_to_err"); + + b.Property("TopDriveSpeedSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_max"); + + b.Property("TopDriveSpeedSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_min"); + + b.Property("TopDriveSpeedSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_speed_sp_to_offset"); + + b.Property("TopDriveTorque") + .HasColumnType("real") + .HasColumnName("top_drive_torque") + .HasComment("Момент СВП"); + + b.Property("TopDriveTorqueErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_err"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_max"); + + b.Property("TopDriveTorqueMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_min"); + + b.Property("TopDriveTorqueOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_offset"); + + b.Property("TopDriveTorqueSpFrom") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from") + .HasComment("Заданный момент c СВП"); + + b.Property("TopDriveTorqueSpFromErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_from_err"); + + b.Property("TopDriveTorqueSpFromMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_max"); + + b.Property("TopDriveTorqueSpFromMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_min"); + + b.Property("TopDriveTorqueSpFromOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_from_offset"); + + b.Property("TopDriveTorqueSpTo") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to") + .HasComment("Задание момента на СВП"); + + b.Property("TopDriveTorqueSpToErr") + .HasColumnType("smallint") + .HasColumnName("top_drive_torque_sp_to_err"); + + b.Property("TopDriveTorqueSpToMax") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_max"); + + b.Property("TopDriveTorqueSpToMin") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_min"); + + b.Property("TopDriveTorqueSpToOffset") + .HasColumnType("real") + .HasColumnName("top_drive_torque_sp_to_offset"); + + b.Property("TorqueLeftLimit") + .HasColumnType("real") + .HasColumnName("torque_left_limit") + .HasComment("Ограничение крутящего момента влево"); + + b.Property("TorqueRampTime") + .HasColumnType("real") + .HasColumnName("torque_ramp_time") + .HasComment("Время нарастания момента"); + + b.Property("TorqueRightLimit") + .HasColumnType("real") + .HasColumnName("torque_right_limit") + .HasComment("Ограничение крутящего момента вправо"); + + b.Property("TorqueStarting") + .HasColumnType("real") + .HasColumnName("torque_starting") + .HasComment("Страгивающий момент"); + + b.Property("TurnLeftOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_angle") + .HasComment("Доворот по градусам единожды влево"); + + b.Property("TurnLeftOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_revols") + .HasComment("Доворот по оборотам единожды влево"); + + b.Property("TurnLeftOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_left_once_by_torque") + .HasComment("Доворот по моменту единожды влево"); + + b.Property("TurnRightOnceByAngle") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_angle") + .HasComment("Доворот по градусам единожды вправо"); + + b.Property("TurnRightOnceByRevols") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_revols") + .HasComment("Доворот по оборотам единожды вправо"); + + b.Property("TurnRightOnceByTorque") + .HasColumnType("real") + .HasColumnName("turn_right_once_by_torque") + .HasComment("Доворот по моменту единожды вправо"); + + b.Property("UnlockBySectorOut") + .HasColumnType("real") + .HasColumnName("unlock_by_sector_out") + .HasComment(" Градус отклонения от сектора для автоматического сброса блокировки"); + + b.Property("Ver") + .HasColumnType("real") + .HasColumnName("ver") + .HasComment("Версия ПО ПЛК"); + + b.Property("W2800") + .HasColumnType("smallint") + .HasColumnName("w2800") + .HasComment("Установка нуля энкодера"); + + b.Property("W2808") + .HasColumnType("smallint") + .HasColumnName("w2808") + .HasComment("Неисправность энкодера"); + + b.Property("W2810") + .HasColumnType("smallint") + .HasColumnName("w2810") + .HasComment(" автоматический сброс блокировки"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin"); + + b.HasComment("набор основных данных по SpinMaster"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event"); + + b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message"); + + b.HasComment("Сообщения на буровых"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user"); + + b.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n100 - удален"); + + b.Property("Login") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user"); + + b.HasComment("Пользователи облака"); + + b.HasData( + new + { + Id = 1, + IdCompany = 1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role"); + + b.HasComment("Роли пользователей в системе"); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings"); + + b.HasComment("настройки интерфейса пользователя"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well"); + + b.HasComment("скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite"); + + b.HasComment("Композитная скважина"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation"); + + b.HasComment("Данные по операциям на скважине"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("integer") + .HasColumnName("code") + .HasComment("Код операции"); + + b.Property("KeyValueName") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .HasColumnName("key_value_name") + .HasComment("Название ключевого показателя операции"); + + b.Property("KeyValueUnits") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("key_value_units") + .HasComment("Единицы измерения ключевого показателя операции"); + + b.Property("Name") + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.ToTable("t_well_operation_category"); + + b.HasComment("Справочник операций на скважине"); + + b.HasData( + new + { + Id = 1, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Невозможно определить операцию" + }, + new + { + Id = 2, + Code = 0, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Роторное бурение" + }, + new + { + Id = 3, + Code = 0, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Слайдирование" + }, + new + { + Id = 4, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Подъем с проработкой" + }, + new + { + Id = 5, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Спуск с проработкой" + }, + new + { + Id = 6, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Подъем с промывкой" + }, + new + { + Id = 7, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Спуск с промывкой" + }, + new + { + Id = 8, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Спуск в скважину" + }, + new + { + Id = 9, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Спуск с вращением" + }, + new + { + Id = 10, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Подъем из скважины" + }, + new + { + Id = 11, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Подъем с вращением" + }, + new + { + Id = 12, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Промывка в покое" + }, + new + { + Id = 13, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Промывка с вращением" + }, + new + { + Id = 14, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 15, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Неподвижное состояние" + }, + new + { + Id = 16, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Вращение без циркуляции" + }, + new + { + Id = 17, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "На поверхности" + }, + new + { + Id = 18, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Проработка перед наращиванием" + }, + new + { + Id = 19, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 20, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 21, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Статический замер телесистемы" + }, + new + { + Id = 22, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 1001, + Code = 0, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 1002, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 1003, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "ГФР" + }, + new + { + Id = 1004, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 1005, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 1006, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Установка ФА" + }, + new + { + Id = 1007, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 1008, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 1011, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Начало цикла строительства скважины" + }, + new + { + Id = 1012, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Окончание цикла строительства скважины" + }, + new + { + Id = 1013, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 1014, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Опрессовка Ц.К." + }, + new + { + Id = 1015, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Опрессовка ВЗД" + }, + new + { + Id = 1016, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Перевод скв на другой тип промывочной жидкости" + }, + new + { + Id = 1017, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Перезапись каротажа" + }, + new + { + Id = 1018, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 1019, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Наращивание, промывка" + }, + new + { + Id = 1020, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 1021, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Подъем инструмента с промывкой" + }, + new + { + Id = 1022, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Обратная проработка" + }, + new + { + Id = 1023, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Сборка инструмента с мостков" + }, + new + { + Id = 1024, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Подготовительные работы" + }, + new + { + Id = 1025, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 1026, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 1027, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 1028, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Промежуточная промывка" + }, + new + { + Id = 1029, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Прокачка пачек" + }, + new + { + Id = 1030, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 1031, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 1032, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 1033, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Спуск инструмента с промывкой" + }, + new + { + Id = 1034, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Прямая проработка" + }, + new + { + Id = 1035, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Принудительная проработка" + }, + new + { + Id = 1037, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Тех СПО-подъем" + }, + new + { + Id = 1038, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Тех СПО-спуск" + }, + new + { + Id = 1039, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Техническое обслуживание" + }, + new + { + Id = 1040, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Цементаж" + }, + new + { + Id = 1041, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Шаблонировка ствола" + }, + new + { + Id = 1042, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Геологическое осложнение" + }, + new + { + Id = 1043, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "НПВ" + }, + new + { + Id = 1044, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 1045, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Прочее" + }, + new + { + Id = 1046, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 1047, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 1048, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 1050, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 1051, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Замер ТС" + }, + new + { + Id = 1052, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Тех. отстой" + }, + new + { + Id = 1053, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Циркуляция и Обработка БР" + }, + new + { + Id = 1054, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Срезка ствола" + }, + new + { + Id = 1055, + Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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.HasKey("Id"); + + b.ToTable("t_well_section_type"); + + b.HasComment("конструкция секции скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол" + }, + new + { + Id = 2, + Caption = "Направление" + }, + new + { + Id = 3, + Caption = "Кондуктор" + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна" + }, + new + { + Id = 5, + Caption = "Транспортный ствол" + }, + new + { + Id = 6, + Caption = "Хвостовик" + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2" + }, + new + { + Id = 8, + Caption = "Направление 2" + }, + new + { + Id = 9, + Caption = "Кондуктор 2" + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2" + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2" + }, + new + { + Id = 12, + Caption = "Хвостовик 2" + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3" + }, + new + { + Id = 14, + Caption = "Направление 3" + }, + new + { + Id = 15, + Caption = "Кондуктор 3" + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3" + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3" + }, + new + { + Id = 18, + Caption = "Хвостовик 3" + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4" + }, + new + { + Id = 20, + Caption = "Направление 4" + }, + new + { + Id = 21, + Caption = "Кондуктор 4" + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4" + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4" + }, + new + { + Id = 24, + Caption = "Хвостовик 4" + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5" + }, + new + { + Id = 26, + Caption = "Направление 5" + }, + new + { + Id = 27, + Caption = "Кондуктор 5" + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5" + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5" + }, + new + { + Id = 30, + Caption = "Хвостовик 5" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type"); + + b.HasComment("конструкция скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillParams", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("DrillParamsCollection") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_drill_params_t_well_section_type_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType"); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("DrillParamsCollection"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20220808114310_Mod_structure_of_WellOperation.cs b/AsbCloudDb/Migrations/20220808114310_Mod_structure_of_WellOperation.cs new file mode 100644 index 00000000..0717691a --- /dev/null +++ b/AsbCloudDb/Migrations/20220808114310_Mod_structure_of_WellOperation.cs @@ -0,0 +1,550 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + public partial class Mod_structure_of_WellOperation : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "key_value_name", + table: "t_well_operation_category", + type: "character varying(32)", + maxLength: 32, + nullable: true, + comment: "Название ключевого показателя операции"); + + migrationBuilder.AddColumn( + name: "key_value_units", + table: "t_well_operation_category", + type: "character varying(16)", + maxLength: 16, + nullable: true, + comment: "Единицы измерения ключевого показателя операции"); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 2, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "МСП", "м/ч" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 3, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "МСП", "м/ч" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 6, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 7, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 8, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 9, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 10, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 11, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 12, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 13, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 14, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 15, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 16, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 17, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 18, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 19, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 20, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 21, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 22, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1001, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "МСП", "м/ч" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1002, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1003, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1004, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1005, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1006, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1007, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1008, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1011, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1012, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1013, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1014, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1015, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1016, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1017, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1018, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1019, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1020, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1021, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1022, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1023, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1024, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1025, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1026, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1027, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1028, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1029, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1030, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1031, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1032, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1033, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1034, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1035, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1037, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1038, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1039, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1040, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1041, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1042, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1043, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1044, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1045, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1046, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1047, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1048, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1050, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1051, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1052, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1053, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1054, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 1055, + columns: new[] { "key_value_name", "key_value_units" }, + values: new object[] { "Продолжительность", "мин" }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "key_value_name", + table: "t_well_operation_category"); + + migrationBuilder.DropColumn( + name: "key_value_units", + table: "t_well_operation_category"); + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index e03ae336..e31e280d 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -4072,6 +4072,18 @@ namespace AsbCloudDb.Migrations .HasColumnName("code") .HasComment("Код операции"); + b.Property("KeyValueName") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .HasColumnName("key_value_name") + .HasComment("Название ключевого показателя операции"); + + b.Property("KeyValueUnits") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("key_value_units") + .HasComment("Единицы измерения ключевого показателя операции"); + b.Property("Name") .HasColumnType("text") .HasColumnName("name") @@ -4088,438 +4100,584 @@ namespace AsbCloudDb.Migrations { Id = 1, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Невозможно определить операцию" }, new { Id = 2, Code = 0, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", Name = "Роторное бурение" }, new { Id = 3, Code = 0, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", Name = "Слайдирование" }, new { Id = 4, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Подъем с проработкой" }, new { Id = 5, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Спуск с проработкой" }, new { Id = 6, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Подъем с промывкой" }, new { Id = 7, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Спуск с промывкой" }, new { Id = 8, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Спуск в скважину" }, new { Id = 9, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Спуск с вращением" }, new { Id = 10, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Подъем из скважины" }, new { Id = 11, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Подъем с вращением" }, new { Id = 12, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Промывка в покое" }, new { Id = 13, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Промывка с вращением" }, new { Id = 14, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Удержание в клиньях" }, new { Id = 15, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Неподвижное состояние" }, new { Id = 16, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Вращение без циркуляции" }, new { Id = 17, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "На поверхности" }, new { Id = 18, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Проработка перед наращиванием" }, new { Id = 19, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Шаблонировка перед наращиванием" }, new { Id = 20, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Промывка перед наращиванием" }, new { Id = 21, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Статический замер телесистемы" }, new { Id = 22, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Промывка" }, new { Id = 1001, Code = 0, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", Name = "Бурение" }, new { Id = 1002, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "ГИС" }, new { Id = 1003, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "ГФР" }, new { Id = 1004, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Монтаж ПВО" }, new { Id = 1005, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Демонтаж ПВО" }, new { Id = 1006, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Установка ФА" }, new { Id = 1007, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Оборудование устья" }, new { Id = 1008, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "ОЗЦ" }, new { Id = 1011, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Начало цикла строительства скважины" }, new { Id = 1012, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Окончание цикла строительства скважины" }, new { Id = 1013, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Опрессовка ПВО" }, new { Id = 1014, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Опрессовка Ц.К." }, new { Id = 1015, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Опрессовка ВЗД" }, new { Id = 1016, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Перевод скв на другой тип промывочной жидкости" }, new { Id = 1017, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Перезапись каротажа" }, new { Id = 1018, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Перетяжка талевого каната" }, new { Id = 1019, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Наращивание, промывка" }, new { Id = 1020, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Подъем инструмента" }, new { Id = 1021, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Подъем инструмента с промывкой" }, new { Id = 1022, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Обратная проработка" }, new { Id = 1023, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Сборка инструмента с мостков" }, new { Id = 1024, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Подготовительные работы" }, new { Id = 1025, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Сборка КНБК" }, new { Id = 1026, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Разборка КНБК" }, new { Id = 1027, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Промывка" }, new { Id = 1028, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Промежуточная промывка" }, new { Id = 1029, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Прокачка пачек" }, new { Id = 1030, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Разбуривание тех.оснастки" }, new { Id = 1031, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Ремонт" }, new { Id = 1032, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Спуск инструмента" }, new { Id = 1033, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Спуск инструмента с промывкой" }, new { Id = 1034, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Прямая проработка" }, new { Id = 1035, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Принудительная проработка" }, new { Id = 1037, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Тех СПО-подъем" }, new { Id = 1038, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Тех СПО-спуск" }, new { Id = 1039, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Техническое обслуживание" }, new { Id = 1040, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Цементаж" }, new { Id = 1041, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Шаблонировка ствола" }, new { Id = 1042, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Геологическое осложнение" }, new { Id = 1043, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "НПВ" }, new { Id = 1044, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "ВМР" }, new { Id = 1045, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Прочее" }, new { Id = 1046, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Спуск КНБК" }, new { Id = 1047, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Подъем КНБК" }, new { Id = 1048, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Спуск ОК" }, new { Id = 1050, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Промывка при спуске ОК" }, new { Id = 1051, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Замер ТС" }, new { Id = 1052, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Тех. отстой" }, new { Id = 1053, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Циркуляция и Обработка БР" }, new { Id = 1054, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Срезка ствола" }, new { Id = 1055, Code = 0, + KeyValueName = "Продолжительность", + KeyValueUnits = "мин", Name = "Вспомогательные работы" }); }); diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index 00310175..6e07649f 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -1,5 +1,4 @@ using Microsoft.EntityFrameworkCore; -using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -343,7 +342,13 @@ namespace AsbCloudDb.Model .HasJsonConversion(); }); - FillData(modelBuilder); + + modelBuilder.Entity(entity => + { + entity.HasKey(nameof(UserSetting.IdUser), nameof(UserSetting.Key)); + }); + + DefaultData.DefaultContextData.Fill(modelBuilder); } public Task RefreshMaterializedViewAsync(CancellationToken token) @@ -360,491 +365,6 @@ namespace AsbCloudDb.Model return Database.ExecuteSqlRawAsync(sql, token); } - private static void FillData(ModelBuilder modelBuilder) - { - modelBuilder.Entity(entity => - { - entity.HasData(new List{ - new UserRole{ Id = 1, Caption = "root", IdType = 1}, - new UserRole{ Id = 1100, Caption = "admin_cluster.view", IdType = 1}, - new UserRole{ Id = 1101, Caption = "admin_cluster.edit", IdType = 1}, - new UserRole{ Id = 1102, Caption = "admin_company.view", IdType = 1}, - new UserRole{ Id = 1103, Caption = "admin_company.edit", IdType = 1}, - new UserRole{ Id = 1104, Caption = "admin_company_type.view", IdType = 1}, - new UserRole{ Id = 1105, Caption = "admin_company_type.edit", IdType = 1}, - new UserRole{ Id = 1106, Caption = "admin_deposit.view", IdType = 1}, - new UserRole{ Id = 1107, Caption = "admin_deposit.edit", IdType = 1}, - new UserRole{ Id = 1108, Caption = "admin_permission.view", IdType = 1}, - new UserRole{ Id = 1109, Caption = "admin_permission.edit", IdType = 1}, - new UserRole{ Id = 1110, Caption = "admin_role.view", IdType = 1}, - new UserRole{ Id = 1111, Caption = "admin_role.edit", IdType = 1}, - new UserRole{ Id = 1112, Caption = "admin_telemetry.view", IdType = 1}, - new UserRole{ Id = 1113, Caption = "admin_user.view", IdType = 1}, - new UserRole{ Id = 1114, Caption = "admin_user.edit", IdType = 1}, - new UserRole{ Id = 1115, Caption = "admin_visit_log.view", IdType = 1}, - new UserRole{ Id = 1116, Caption = "admin_well.view", IdType = 1}, - new UserRole{ Id = 1117, Caption = "admin_well.edit", IdType = 1}, - new UserRole{ Id = 1200, Caption = "archive.view", IdType = 1}, - new UserRole{ Id = 1201, Caption = "cluster.view", IdType = 1}, - new UserRole{ Id = 1202, Caption = "composite.view", IdType = 1}, - new UserRole{ Id = 1203, Caption = "composite.edit", IdType = 1}, - new UserRole{ Id = 1204, Caption = "deposit.view", IdType = 1}, - new UserRole{ Id = 1205, Caption = "document.view", IdType = 1}, - new UserRole{ Id = 1206, Caption = "drillProcessFlow.view", IdType = 1}, - new UserRole{ Id = 1207, Caption = "drillProcessFlow.edit", IdType = 1}, - new UserRole{ Id = 1208, Caption = "measure.view", IdType = 1}, - new UserRole{ Id = 1209, Caption = "measure.edit", IdType = 1}, - new UserRole{ Id = 1210, Caption = "message.view", IdType = 1}, - new UserRole{ Id = 1211, Caption = "operations.view", IdType = 1}, - new UserRole{ Id = 1212, Caption = "operations.edit", IdType = 1}, - new UserRole{ Id = 1213, Caption = "params.view", IdType = 1}, - new UserRole{ Id = 1214, Caption = "params.edit", IdType = 1}, - new UserRole{ Id = 1215, Caption = "report.view", IdType = 1}, - new UserRole{ Id = 1216, Caption = "report.edit", IdType = 1}, - new UserRole{ Id = 1217, Caption = "setpoints.view", IdType = 1}, - new UserRole{ Id = 1218, Caption = "setpoints.edit", IdType = 1}, - new UserRole{ Id = 1219, Caption = "telemetry.view", IdType = 1}, - new UserRole{ Id = 1220, Caption = "telemetryAnalysis.view", IdType = 1}, - new UserRole{ Id = 1221, Caption = "well.view", IdType = 1}, - new UserRole{ Id = 1500, Caption = "Просмотр всего", IdType = 1}, - new UserRole{ Id = 1501, Caption = "file.edit", IdType = 1}, - new UserRole{ Id = 1502, Caption = "drillingProgram.edit", IdType = 1}, - new UserRole{ Id = 2000, Caption = "Заказчик", IdType = 0}, - new UserRole{ Id = 2001, Caption = "Супервайзер", IdType = 0}, - new UserRole{ Id = 2002, Caption = "Буровой подрядчик", IdType = 0}, - new UserRole{ Id = 2003, Caption = "Растворщик", IdType = 0}, - new UserRole{ Id = 2004, Caption = "Телеметрист", IdType = 0}, - new UserRole{ Id = 2005, Caption = "Долотный сервис", IdType = 0}, - new UserRole{ Id = 2006, Caption = "ГТИ", IdType = 0}, - new UserRole{ Id = 2007, Caption = "Цементирование", IdType = 0}, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasData(new List - { - new RelationUserRoleUserRole{ Id = 1101, IdInclude = 1100 }, - new RelationUserRoleUserRole{ Id = 1103, IdInclude = 1102 }, - new RelationUserRoleUserRole{ Id = 1105, IdInclude = 1104 }, - new RelationUserRoleUserRole{ Id = 1107, IdInclude = 1106 }, - new RelationUserRoleUserRole{ Id = 1109, IdInclude = 1108 }, - new RelationUserRoleUserRole{ Id = 1111, IdInclude = 1110 }, - new RelationUserRoleUserRole{ Id = 1114, IdInclude = 1113 }, - new RelationUserRoleUserRole{ Id = 1117, IdInclude = 1116 }, - new RelationUserRoleUserRole{ Id = 1203, IdInclude = 1202 }, - new RelationUserRoleUserRole{ Id = 1207, IdInclude = 1206 }, - new RelationUserRoleUserRole{ Id = 1209, IdInclude = 1208 }, - new RelationUserRoleUserRole{ Id = 1212, IdInclude = 1211 }, - new RelationUserRoleUserRole{ Id = 1214, IdInclude = 1213 }, - new RelationUserRoleUserRole{ Id = 1216, IdInclude = 1215 }, - new RelationUserRoleUserRole{ Id = 1218, IdInclude = 1217 }, - new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1200}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1201}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1202}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1204}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1205}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1206}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1208}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1210}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1211}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1213}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1215}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1217}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1219}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1220}, new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1221}, - new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1500 },new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1501 },new RelationUserRoleUserRole{ Id = 2000, IdInclude = 1502 }, - new RelationUserRoleUserRole{ Id = 2001, IdInclude = 1500 },new RelationUserRoleUserRole{ Id = 2001, IdInclude = 1501 },new RelationUserRoleUserRole{ Id = 2001, IdInclude = 1502 }, - new RelationUserRoleUserRole{ Id = 2002, IdInclude = 1500 },new RelationUserRoleUserRole{ Id = 2002, IdInclude = 1501 },new RelationUserRoleUserRole{ Id = 2002, IdInclude = 1502 }, - new RelationUserRoleUserRole{ Id = 2003, IdInclude = 1500 },new RelationUserRoleUserRole{ Id = 2003, IdInclude = 1501 },new RelationUserRoleUserRole{ Id = 2003, IdInclude = 1502 }, - new RelationUserRoleUserRole{ Id = 2004, IdInclude = 1500 },new RelationUserRoleUserRole{ Id = 2004, IdInclude = 1501 },new RelationUserRoleUserRole{ Id = 2004, IdInclude = 1502 }, - new RelationUserRoleUserRole{ Id = 2005, IdInclude = 1500 },new RelationUserRoleUserRole{ Id = 2005, IdInclude = 1501 },new RelationUserRoleUserRole{ Id = 2005, IdInclude = 1502 }, - new RelationUserRoleUserRole{ Id = 2006, IdInclude = 1500 },new RelationUserRoleUserRole{ Id = 2006, IdInclude = 1501 },new RelationUserRoleUserRole{ Id = 2006, IdInclude = 1502 }, - new RelationUserRoleUserRole{ Id = 2007, IdInclude = 1500 },new RelationUserRoleUserRole{ Id = 2007, IdInclude = 1501 },new RelationUserRoleUserRole{ Id = 2007, IdInclude = 1502 }, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasData(new List - { - new Permission{ Id = 100, Name="AdminCluster.delete", Description="Разрешение удалять админ. Кусты"}, - new Permission{ Id = 101, Name="AdminCluster.edit", Description="Разрешение редактировать админ. Кусты"}, - new Permission{ Id = 102, Name="AdminCluster.get", Description="Разрешение просматривать админ. Кусты"}, - new Permission{ Id = 103, Name="AdminCompany.delete", Description="Разрешение удалять админ. Компании"}, - new Permission{ Id = 104, Name="AdminCompany.edit", Description="Разрешение редактировать админ. Компании"}, - new Permission{ Id = 105, Name="AdminCompany.get", Description="Разрешение просматривать админ. Компании"}, - new Permission{ Id = 106, Name="AdminCompanyType.delete", Description="Разрешение удалять админ. Типы компаний"}, - new Permission{ Id = 107, Name="AdminCompanyType.edit", Description="Разрешение редактировать админ. Типы компаний"}, - new Permission{ Id = 108, Name="AdminCompanyType.get", Description="Разрешение просматривать админ. Типы компаний"}, - new Permission{ Id = 109, Name="AdminDeposit.delete", Description="Разрешение удалять админ. Месторождения"}, - new Permission{ Id = 110, Name="AdminDeposit.edit", Description="Разрешение редактировать админ. Месторождения"}, - new Permission{ Id = 111, Name="AdminDeposit.get", Description="Разрешение просматривать админ. Месторождения"}, - new Permission{ Id = 112, Name="AdminPermission.delete", Description="Разрешение удалять админ. Разрешения"}, - new Permission{ Id = 113, Name="AdminPermission.edit", Description="Разрешение редактировать админ. Разрешения"}, - new Permission{ Id = 114, Name="AdminPermission.get", Description="Разрешение просматривать админ. Разрешения"}, - new Permission{ Id = 115, Name="AdminTelemetry.delete", Description="Разрешение удалять админ. Телеметрию"}, - new Permission{ Id = 116, Name="AdminTelemetry.edit", Description="Разрешение редактировать админ. Телеметрию"}, - new Permission{ Id = 117, Name="AdminTelemetry.get", Description="Разрешение просматривать админ. Телеметрию"}, - new Permission{ Id = 118, Name="AdminUser.delete", Description="Разрешение удалять админ. Пользователей"}, - new Permission{ Id = 119, Name="AdminUser.edit", Description="Разрешение редактировать админ. Пользователей"}, - new Permission{ Id = 120, Name="AdminUser.get", Description="Разрешение просматривать админ. Пользователей"}, - new Permission{ Id = 121, Name="AdminUserRole.delete", Description="Разрешение удалять админ. Роли пользователей"}, - new Permission{ Id = 122, Name="AdminUserRole.edit", Description="Разрешение редактировать админ. Роли пользователей"}, - new Permission{ Id = 123, Name="AdminUserRole.get", Description="Разрешение просматривать админ. Роли пользователей"}, - new Permission{ Id = 124, Name="AdminWell.delete", Description="Разрешение удалять админ. Скважины"}, - new Permission{ Id = 125, Name="AdminWell.edit", Description="Разрешение редактировать админ. Скважины"}, - new Permission{ Id = 126, Name="AdminWell.get", Description="Разрешение просматривать админ. Скважины"}, - new Permission{ Id = 200, Name="Auth.edit", Description="Разрешение редактировать 0"}, - new Permission{ Id = 201, Name="Auth.get", Description="Разрешение просматривать 0"}, - new Permission{ Id = 202, Name="Cluster.get", Description="Разрешение просматривать Кусты"}, - new Permission{ Id = 203, Name="Deposit.get", Description="Разрешение просматривать Месторождения"}, - new Permission{ Id = 204, Name="DrillFlowChart.delete", Description="Разрешение удалять РТК"}, - new Permission{ Id = 205, Name="DrillFlowChart.edit", Description="Разрешение редактировать РТК"}, - new Permission{ Id = 206, Name="DrillFlowChart.get", Description="Разрешение просматривать РТК"}, - new Permission{ Id = 207, Name="DrillingProgram.delete", Description="Разрешение удалять Программу бурения"}, - new Permission{ Id = 208, Name="DrillingProgram.edit", Description="Разрешение редактировать Программу бурения"}, - new Permission{ Id = 209, Name="DrillingProgram.get", Description="Разрешение просматривать Программу бурения"}, - new Permission{ Id = 210, Name="DrillParams.delete", Description="Разрешение удалять Режимы бурения"}, - new Permission{ Id = 211, Name="DrillParams.edit", Description="Разрешение редактировать Режимы бурения"}, - new Permission{ Id = 212, Name="DrillParams.get", Description="Разрешение просматривать Режимы бурения"}, - new Permission{ Id = 213, Name="File.delete", Description="Разрешение удалять Файлы"}, - new Permission{ Id = 214, Name="File.edit", Description="Разрешение редактировать Файлы"}, - new Permission{ Id = 215, Name="File.get", Description="Разрешение просматривать Файлы"}, - new Permission{ Id = 216, Name="Measure.delete", Description="Разрешение удалять Измерения"}, - new Permission{ Id = 217, Name="Measure.edit", Description="Разрешение редактировать Измерения"}, - new Permission{ Id = 218, Name="Measure.get", Description="Разрешение просматривать Измерения"}, - new Permission{ Id = 219, Name="Message.get", Description="Разрешение просматривать Сообщения телеметрии"}, - new Permission{ Id = 220, Name="OperationStat.get", Description="Разрешение просматривать Статистику по операциям"}, - new Permission{ Id = 221, Name="Report.edit", Description="Разрешение редактировать Рапорта"}, - new Permission{ Id = 222, Name="Report.get", Description="Разрешение просматривать Рапорта"}, - new Permission{ Id = 223, Name="RequestTracker.get", Description="Разрешение просматривать админ. Системная статистика"}, - new Permission{ Id = 224, Name="Setpoints.delete", Description="Разрешение удалять Рекомендации уставок"}, - new Permission{ Id = 225, Name="Setpoints.edit", Description="Разрешение редактировать Рекомендации уставок"}, - new Permission{ Id = 226, Name="Setpoints.get", Description="Разрешение просматривать Рекомендации уставок"}, - new Permission{ Id = 227, Name="Telemetry.edit", Description="Разрешение редактировать Телеметрии"}, - new Permission{ Id = 228, Name="TelemetryAnalytics.get", Description="Разрешение просматривать Анализ телеметрии"}, - new Permission{ Id = 229, Name="TelemetryDataSaub.edit", Description="Разрешение редактировать Данные телеметрии по САУБ"}, - new Permission{ Id = 230, Name="TelemetryDataSaub.get", Description="Разрешение просматривать Данные телеметрии по САУБ"}, - new Permission{ Id = 231, Name="TelemetryDataSpin.edit", Description="Разрешение редактировать Данные телеметрии по SpinMaster"}, - new Permission{ Id = 232, Name="TelemetryDataSpin.get", Description="Разрешение просматривать Данные телеметрии по SpinMaster"}, - new Permission{ Id = 233, Name="Well.edit", Description="Разрешение редактировать Скважины"}, - new Permission{ Id = 234, Name="Well.get", Description="Разрешение просматривать Скважины"}, - new Permission{ Id = 235, Name="WellComposite.edit", Description="Разрешение редактировать Композитные скважины"}, - new Permission{ Id = 236, Name="WellComposite.get", Description="Разрешение просматривать Композитные скважины"}, - new Permission{ Id = 237, Name="WellOperation.delete", Description="Разрешение удалять Операции по скважинам"}, - new Permission{ Id = 238, Name="WellOperation.edit", Description="Разрешение редактировать Операции по скважинам"}, - new Permission{ Id = 239, Name="WellOperation.get", Description="Разрешение просматривать Операции по скважинам"}, - new Permission{ Id = 240, Name="File.edit1", Description="Разрешение редактировать Файлы категории 1 (Растворный сервис)"}, - new Permission{ Id = 241, Name="File.edit2", Description="Разрешение редактировать Файлы категории 2 (Цементирование)"}, - new Permission{ Id = 242, Name="File.edit3", Description="Разрешение редактировать Файлы категории 3 (ННБ)"}, - new Permission{ Id = 243, Name="File.edit4", Description="Разрешение редактировать Файлы категории 4 (ГТИ)"}, - new Permission{ Id = 244, Name="File.edit5", Description="Разрешение редактировать Файлы категории 5 (Документы по скважине)"}, - new Permission{ Id = 245, Name="File.edit6", Description="Разрешение редактировать Файлы категории 6 (Супервайзер)"}, - new Permission{ Id = 246, Name="File.edit7", Description="Разрешение редактировать Файлы категории 7 (Мастер)"}, - new Permission{ Id = 247, Name="File.edit8", Description="Разрешение редактировать Файлы категории 8 (Долотный сервис)"}, - new Permission{ Id = 248, Name="File.edit9", Description="Разрешение редактировать Файлы категории 9 (Буровой подрядчик)"}, - new Permission{ Id = 249, Name="File.edit10", Description="Разрешение редактировать Файлы категории 10 (Сервис по заканчиванию скважины)"}, - new Permission{ Id = 250, Name="File.edit11", Description="Разрешение редактировать Файлы категории 11 (Рапорт)"}, - new Permission{ Id = 251, Name="File.edit12", Description="Разрешение редактировать Файлы категории 12"}, - new Permission{ Id = 252, Name="File.edit13", Description="Разрешение редактировать Файлы категории 12"}, - new Permission{ Id = 253, Name="File.edit14", Description="Разрешение редактировать Файлы категории 13"}, - new Permission{ Id = 254, Name="File.edit15", Description="Разрешение редактировать Файлы категории 14"}, - new Permission{ Id = 255, Name="File.edit16", Description="Разрешение редактировать Файлы категории 15"}, - new Permission{ Id = 256, Name="File.edit17", Description="Разрешение редактировать Файлы категории 16"}, - new Permission{ Id = 257, Name="File.edit18", Description="Разрешение редактировать Файлы категории 17"}, - new Permission{ Id = 258, Name="File.edit19", Description="Разрешение редактировать Файлы категории 18"}, - new Permission{ Id = 259, Name="File.edit20", Description="Разрешение редактировать Файлы категории 19"}, - new Permission{ Id = 260, Name="File.edit21", Description="Разрешение редактировать Файлы категории 20"}, - new Permission{ Id = 261, Name="File.edit22", Description="Разрешение редактировать Файлы категории 21"}, - new Permission{ Id = 262, Name="File.edit23", Description="Разрешение редактировать Файлы категории 22"}, - new Permission{ Id = 263, Name="File.edit24", Description="Разрешение редактировать Файлы категории 23"}, - new Permission{ Id = 264, Name="File.edit25", Description="Разрешение редактировать Файлы категории 24"}, - new Permission{ Id = 265, Name="File.edit26", Description="Разрешение редактировать Файлы категории 25"}, - new Permission{ Id = 266, Name="File.edit27", Description="Разрешение редактировать Файлы категории 26"}, - new Permission{ Id = 267, Name="File.edit28", Description="Разрешение редактировать Файлы категории 27"}, - new Permission{ Id = 268, Name="File.edit29", Description="Разрешение редактировать Файлы категории 28"}, - new Permission{ Id = 269, Name="File.edit30", Description="Разрешение редактировать Файлы категории 29"}, - - new Permission{ Id = 380, Name="Driller.get", Description="Разрешение просматривать список бурильщиков"}, - new Permission{ Id = 381, Name="Driller.edit", Description="Разрешение редактировать бурильщика"}, - new Permission{ Id = 382, Name="Driller.delete", Description="Разрешение удалять бурильщик"}, - new Permission{ Id = 383, Name="Schedule.get", Description="Разрешение просматривать графики бурильщиков"}, - new Permission{ Id = 384, Name="Schedule.edit", Description="Разрешение редактировать график бурильщика"}, - new Permission{ Id = 385, Name="Schedule.delete", Description="Разрешение удалять график бурильщика"}, - new Permission{ Id = 386, Name="DailyReport.get", Description="Разрешение просматривать суточный рапорт"}, - new Permission{ Id = 387, Name="DailyReport.edit", Description="Разрешение редактировать суточный рапорт"}, - new Permission{ Id = 388, Name="DetectedOperation.get", Description="Разрешение просматривать авто. определенные операции"}, - - new Permission{ Id = 389, Name="OperationValue.get", Description="Разрешение просматривать целевые значения"}, - new Permission{ Id = 390, Name="OperationValue.edit", Description="Разрешение редактировать целевые значения"}, - new Permission{ Id = 391, Name="OperationValue.delete", Description="Разрешение удалять целевые значения"}, - - new Permission{ Id = 400, Name="WitsInfo.get", Description="Разрешение просматривать инфо по wits параметрам"}, - new Permission{ Id = 401, Name="WitsRecord1.get", Description="Разрешение просматривать WITS record 1"}, - new Permission{ Id = 407, Name="WitsRecord7.get", Description="Разрешение просматривать WITS record 7"}, - new Permission{ Id = 408, Name="WitsRecord8.get", Description="Разрешение просматривать WITS record 8"}, - new Permission{ Id = 450, Name="WitsRecord50.get", Description="Разрешение просматривать WITS record 50"}, - new Permission{ Id = 460, Name="WitsRecord60.get", Description="Разрешение просматривать WITS record 60"}, - new Permission{ Id = 461, Name="WitsRecord61.get", Description="Разрешение просматривать WITS record 61"}, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasData(new List - { - new RelationUserRolePermission{ IdUserRole = 1100, IdPermission = 102}, new RelationUserRolePermission{ IdUserRole = 1100, IdPermission = 111}, - new RelationUserRolePermission{ IdUserRole = 1101, IdPermission = 101}, new RelationUserRolePermission{ IdUserRole = 1101, IdPermission = 100}, - new RelationUserRolePermission{ IdUserRole = 1102, IdPermission = 105}, new RelationUserRolePermission{ IdUserRole = 1102, IdPermission = 108}, - new RelationUserRolePermission{ IdUserRole = 1103, IdPermission = 104}, new RelationUserRolePermission{ IdUserRole = 1103, IdPermission = 103}, - new RelationUserRolePermission{ IdUserRole = 1104, IdPermission = 108}, - new RelationUserRolePermission{ IdUserRole = 1105, IdPermission = 107}, new RelationUserRolePermission{ IdUserRole = 1105, IdPermission = 106}, - new RelationUserRolePermission{ IdUserRole = 1106, IdPermission = 111}, - new RelationUserRolePermission{ IdUserRole = 1107, IdPermission = 110}, new RelationUserRolePermission{ IdUserRole = 1107, IdPermission = 109}, - new RelationUserRolePermission{ IdUserRole = 1108, IdPermission = 114}, - new RelationUserRolePermission{ IdUserRole = 1109, IdPermission = 113}, new RelationUserRolePermission{ IdUserRole = 1109, IdPermission = 112}, - new RelationUserRolePermission{ IdUserRole = 1110, IdPermission = 123}, new RelationUserRolePermission{ IdUserRole = 1110, IdPermission = 114}, - new RelationUserRolePermission{ IdUserRole = 1111, IdPermission = 122}, new RelationUserRolePermission{ IdUserRole = 1111, IdPermission = 121}, - new RelationUserRolePermission{ IdUserRole = 1112, IdPermission = 117}, - new RelationUserRolePermission{ IdUserRole = 1113, IdPermission = 105}, new RelationUserRolePermission{ IdUserRole = 1113, IdPermission = 123}, new RelationUserRolePermission{ IdUserRole = 1113, IdPermission = 120}, - new RelationUserRolePermission{ IdUserRole = 1114, IdPermission = 119}, new RelationUserRolePermission{ IdUserRole = 1114, IdPermission = 118}, new RelationUserRolePermission{ IdUserRole = 1114, IdPermission = 200}, - new RelationUserRolePermission{ IdUserRole = 1115, IdPermission = 223}, - new RelationUserRolePermission{ IdUserRole = 1116, IdPermission = 105}, new RelationUserRolePermission{ IdUserRole = 1116, IdPermission = 102}, new RelationUserRolePermission{ IdUserRole = 1116, IdPermission = 117}, new RelationUserRolePermission{ IdUserRole = 1116, IdPermission = 126}, - new RelationUserRolePermission{ IdUserRole = 1117, IdPermission = 125}, new RelationUserRolePermission{ IdUserRole = 1117, IdPermission = 124}, - new RelationUserRolePermission{ IdUserRole = 1200, IdPermission = 203}, new RelationUserRolePermission{ IdUserRole = 1200, IdPermission = 230}, - new RelationUserRolePermission{ IdUserRole = 1201, IdPermission = 202}, new RelationUserRolePermission{ IdUserRole = 1201, IdPermission = 203}, new RelationUserRolePermission{ IdUserRole = 1201, IdPermission = 220}, - new RelationUserRolePermission{ IdUserRole = 1202, IdPermission = 203}, new RelationUserRolePermission{ IdUserRole = 1202, IdPermission = 220}, new RelationUserRolePermission{ IdUserRole = 1202, IdPermission = 236}, new RelationUserRolePermission{ IdUserRole = 1202, IdPermission = 212}, - new RelationUserRolePermission{ IdUserRole = 1203, IdPermission = 235}, - new RelationUserRolePermission{ IdUserRole = 1204, IdPermission = 202}, new RelationUserRolePermission{ IdUserRole = 1204, IdPermission = 203}, - new RelationUserRolePermission{ IdUserRole = 1205, IdPermission = 215}, - new RelationUserRolePermission{ IdUserRole = 1206, IdPermission = 203}, new RelationUserRolePermission{ IdUserRole = 1206, IdPermission = 206}, - new RelationUserRolePermission{ IdUserRole = 1207, IdPermission = 205}, - new RelationUserRolePermission{ IdUserRole = 1208, IdPermission = 218}, - new RelationUserRolePermission{ IdUserRole = 1209, IdPermission = 217}, - new RelationUserRolePermission{ IdUserRole = 1210, IdPermission = 203}, new RelationUserRolePermission{ IdUserRole = 1210, IdPermission = 230}, new RelationUserRolePermission{ IdUserRole = 1210, IdPermission = 219}, - new RelationUserRolePermission{ IdUserRole = 1211, IdPermission = 203}, new RelationUserRolePermission{ IdUserRole = 1211, IdPermission = 220}, new RelationUserRolePermission{ IdUserRole = 1211, IdPermission = 239}, - new RelationUserRolePermission{ IdUserRole = 1212, IdPermission = 238}, new RelationUserRolePermission{ IdUserRole = 1212, IdPermission = 237}, - new RelationUserRolePermission{ IdUserRole = 1213, IdPermission = 203}, new RelationUserRolePermission{ IdUserRole = 1213, IdPermission = 239}, new RelationUserRolePermission{ IdUserRole = 1213, IdPermission = 212}, - new RelationUserRolePermission{ IdUserRole = 1214, IdPermission = 211}, new RelationUserRolePermission{ IdUserRole = 1214, IdPermission = 210}, - new RelationUserRolePermission{ IdUserRole = 1215, IdPermission = 203}, new RelationUserRolePermission{ IdUserRole = 1215, IdPermission = 222}, - new RelationUserRolePermission{ IdUserRole = 1216, IdPermission = 221}, - new RelationUserRolePermission{ IdUserRole = 1217, IdPermission = 226}, - new RelationUserRolePermission{ IdUserRole = 1218, IdPermission = 225}, new RelationUserRolePermission{ IdUserRole = 1218, IdPermission = 224}, - new RelationUserRolePermission{ IdUserRole = 1219, IdPermission = 203}, new RelationUserRolePermission{ IdUserRole = 1219, IdPermission = 206}, new RelationUserRolePermission{ IdUserRole = 1219, IdPermission = 230}, new RelationUserRolePermission{ IdUserRole = 1219, IdPermission = 232}, - new RelationUserRolePermission{ IdUserRole = 1220, IdPermission = 203}, new RelationUserRolePermission{ IdUserRole = 1220, IdPermission = 228}, - new RelationUserRolePermission{ IdUserRole = 1221, IdPermission = 202}, new RelationUserRolePermission{ IdUserRole = 1221, IdPermission = 203}, new RelationUserRolePermission{ IdUserRole = 1221, IdPermission = 220}, new RelationUserRolePermission{ IdUserRole = 1221, IdPermission = 234}, - new RelationUserRolePermission{ IdUserRole = 1501, IdPermission = 214}, new RelationUserRolePermission{ IdUserRole = 1501, IdPermission = 213}, - new RelationUserRolePermission{ IdUserRole = 1502, IdPermission = 207}, new RelationUserRolePermission{ IdUserRole = 1502, IdPermission = 208}, - new RelationUserRolePermission{ IdUserRole = 2000, IdPermission = 205}, new RelationUserRolePermission{ IdUserRole = 2000, IdPermission = 204}, new RelationUserRolePermission{ IdUserRole = 2000, IdPermission = 245}, - new RelationUserRolePermission{ IdUserRole = 2001, IdPermission = 244}, new RelationUserRolePermission{ IdUserRole = 2001, IdPermission = 245}, - new RelationUserRolePermission{ IdUserRole = 2002, IdPermission = 244}, new RelationUserRolePermission{ IdUserRole = 2002, IdPermission = 246}, new RelationUserRolePermission{ IdUserRole = 2002, IdPermission = 237}, new RelationUserRolePermission{ IdUserRole = 2002, IdPermission = 238}, - new RelationUserRolePermission{ IdUserRole = 2003, IdPermission = 240}, new RelationUserRolePermission{ IdUserRole = 2003, IdPermission = 217}, new RelationUserRolePermission{ IdUserRole = 2003, IdPermission = 216}, - new RelationUserRolePermission{ IdUserRole = 2004, IdPermission = 242}, new RelationUserRolePermission{ IdUserRole = 2004, IdPermission = 217}, new RelationUserRolePermission{ IdUserRole = 2004, IdPermission = 216}, new RelationUserRolePermission{ IdUserRole = 2004, IdPermission = 205}, new RelationUserRolePermission{ IdUserRole = 2004, IdPermission = 204}, - new RelationUserRolePermission{ IdUserRole = 2005, IdPermission = 247}, new RelationUserRolePermission{ IdUserRole = 2005, IdPermission = 205}, new RelationUserRolePermission{ IdUserRole = 2005, IdPermission = 204}, - new RelationUserRolePermission{ IdUserRole = 2006, IdPermission = 243}, new RelationUserRolePermission{ IdUserRole = 2006, IdPermission = 205}, new RelationUserRolePermission{ IdUserRole = 2006, IdPermission = 204}, - new RelationUserRolePermission{ IdUserRole = 2007, IdPermission = 241}, new RelationUserRolePermission{ IdUserRole = 2007, IdPermission = 205}, new RelationUserRolePermission{ IdUserRole = 2007, IdPermission = 204}, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasData(new List{ - new User{ - Id = 1, - IdCompany = 1, - Login = "dev", - PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072", - Name = "Разработчик", - }, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasData(new List{ - new RelationUserUserRole { IdUser = 1, IdUserRole = 1, }, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasData(new List{ - new Company{ Id = 1, Caption = "ООО \"АСБ\"", IdCompanyType = 3}, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasData(new List { - // Автоматически определяемые операции - new WellOperationCategory {Id = 1, Name = "Невозможно определить операцию", Code = 0}, - new WellOperationCategory {Id = 2, Name = "Роторное бурение", Code = 0 }, - new WellOperationCategory {Id = 3, Name = "Слайдирование", Code = 0 }, - new WellOperationCategory {Id = 4, Name = "Подъем с проработкой", Code = 0 }, - new WellOperationCategory {Id = 5, Name = "Спуск с проработкой", Code = 0 }, - new WellOperationCategory {Id = 6, Name = "Подъем с промывкой", Code = 0 }, - new WellOperationCategory {Id = 7, Name = "Спуск с промывкой", Code = 0 }, - new WellOperationCategory {Id = 8, Name = "Спуск в скважину", Code = 0 }, - new WellOperationCategory {Id = 9, Name = "Спуск с вращением", Code = 0 }, - new WellOperationCategory {Id = 10, Name = "Подъем из скважины", Code = 0 }, - new WellOperationCategory {Id = 11, Name = "Подъем с вращением", Code = 0 }, - new WellOperationCategory {Id = 12, Name = "Промывка в покое", Code = 0 }, - new WellOperationCategory {Id = 13, Name = "Промывка с вращением", Code = 0 }, - new WellOperationCategory {Id = 14, Name = "Удержание в клиньях", Code = 0 }, - new WellOperationCategory {Id = 15, Name = "Неподвижное состояние", Code = 0 }, - new WellOperationCategory {Id = 16, Name = "Вращение без циркуляции", Code = 0 }, - new WellOperationCategory {Id = 17, Name = "На поверхности", Code = 0 }, - new WellOperationCategory {Id = 18, Name = "Проработка перед наращиванием", Code = 0 }, - new WellOperationCategory {Id = 19, Name = "Шаблонировка перед наращиванием", Code = 0 }, - new WellOperationCategory {Id = 20, Name = "Промывка перед наращиванием", Code = 0 }, - new WellOperationCategory {Id = 21, Name = "Статический замер телесистемы", Code = 0 }, - new WellOperationCategory {Id = 22, Name = "Промывка", Code = 0 }, - - // Операции ручного ввода - new WellOperationCategory {Id = 1001, Name = "Бурение", Code = 0 }, - new WellOperationCategory {Id = 1002, Name = "ГИС", Code = 0 }, - new WellOperationCategory {Id = 1003, Name = "ГФР", Code = 0 }, - new WellOperationCategory {Id = 1004, Name = "Монтаж ПВО", Code = 0 }, - new WellOperationCategory {Id = 1005, Name = "Демонтаж ПВО", Code = 0 }, - new WellOperationCategory {Id = 1006, Name = "Установка ФА", Code = 0 }, - new WellOperationCategory {Id = 1007, Name = "Оборудование устья", Code = 0 }, - new WellOperationCategory {Id = 1008, Name = "ОЗЦ", Code = 0 }, - new WellOperationCategory {Id = 1011, Name = "Начало цикла строительства скважины", Code = 0 }, - new WellOperationCategory {Id = 1012, Name = "Окончание цикла строительства скважины", Code = 0 }, - new WellOperationCategory {Id = 1013, Name = "Опрессовка ПВО", Code = 0 }, - new WellOperationCategory {Id = 1014, Name = "Опрессовка Ц.К.", Code = 0 }, - new WellOperationCategory {Id = 1015, Name = "Опрессовка ВЗД", Code = 0 }, - new WellOperationCategory {Id = 1016, Name = "Перевод скв на другой тип промывочной жидкости", Code = 0 }, - new WellOperationCategory {Id = 1017, Name = "Перезапись каротажа", Code = 0 }, - new WellOperationCategory {Id = 1018, Name = "Перетяжка талевого каната", Code = 0 }, - new WellOperationCategory {Id = 1019, Name = "Наращивание, промывка", Code = 0 }, - new WellOperationCategory {Id = 1020, Name = "Подъем инструмента", Code = 0 }, - new WellOperationCategory {Id = 1021, Name = "Подъем инструмента с промывкой", Code = 0 }, - new WellOperationCategory {Id = 1022, Name = "Обратная проработка", Code = 0 }, - new WellOperationCategory {Id = 1023, Name = "Сборка инструмента с мостков", Code = 0 }, - new WellOperationCategory {Id = 1024, Name = "Подготовительные работы", Code = 0 }, - new WellOperationCategory {Id = 1025, Name = "Сборка КНБК", Code = 0 }, - new WellOperationCategory {Id = 1026, Name = "Разборка КНБК", Code = 0 }, - new WellOperationCategory {Id = 1027, Name = "Промывка", Code = 0 }, - new WellOperationCategory {Id = 1028, Name = "Промежуточная промывка", Code = 0 }, - new WellOperationCategory {Id = 1029, Name = "Прокачка пачек", Code = 0 }, - new WellOperationCategory {Id = 1030, Name = "Разбуривание тех.оснастки", Code = 0 }, - new WellOperationCategory {Id = 1031, Name = "Ремонт", Code = 0 }, - new WellOperationCategory {Id = 1032, Name = "Спуск инструмента", Code = 0 }, - new WellOperationCategory {Id = 1033, Name = "Спуск инструмента с промывкой", Code = 0 }, - new WellOperationCategory {Id = 1034, Name = "Прямая проработка", Code = 0 }, - new WellOperationCategory {Id = 1035, Name = "Принудительная проработка", Code = 0 }, - new WellOperationCategory {Id = 1037, Name = "Тех СПО-подъем", Code = 0 }, - new WellOperationCategory {Id = 1038, Name = "Тех СПО-спуск", Code = 0 }, - new WellOperationCategory {Id = 1039, Name = "Техническое обслуживание", Code = 0 }, - new WellOperationCategory {Id = 1040, Name = "Цементаж", Code = 0 }, - new WellOperationCategory {Id = 1041, Name = "Шаблонировка ствола", Code = 0 }, - new WellOperationCategory {Id = 1042, Name = "Геологическое осложнение", Code = 0 }, - new WellOperationCategory {Id = 1043, Name = "НПВ", Code = 0 }, - new WellOperationCategory {Id = 1044, Name = "ВМР", Code = 0 }, - new WellOperationCategory {Id = 1045, Name = "Прочее", Code = 0 }, - new WellOperationCategory {Id = 1046, Name = "Спуск КНБК", Code = 0 }, - new WellOperationCategory {Id = 1047, Name = "Подъем КНБК", Code = 0 }, - new WellOperationCategory {Id = 1048, Name = "Спуск ОК", Code = 0 }, - new WellOperationCategory {Id = 1050, Name = "Промывка при спуске ОК", Code = 0 }, - new WellOperationCategory {Id = 1051, Name = "Замер ТС", Code = 0 }, - new WellOperationCategory {Id = 1052, Name = "Тех. отстой", Code = 0 }, - new WellOperationCategory {Id = 1053, Name = "Циркуляция и Обработка БР", Code = 0 }, - new WellOperationCategory {Id = 1054, Name = "Срезка ствола", Code = 0 }, - new WellOperationCategory {Id = 1055, Name = "Вспомогательные работы", Code = 0 }, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasData(new List { - new FileCategory {Id = 1, Name = "Растворный сервис", ShortName = "fluidService"}, - new FileCategory {Id = 2, Name = "Цементирование", ShortName = "cement"}, - new FileCategory {Id = 3, Name = "ННБ", ShortName = "nnb"}, - new FileCategory {Id = 4, Name = "ГТИ", ShortName = "gti"}, - new FileCategory {Id = 5, Name = "Документы по скважине", ShortName = "wellDocuments"}, - new FileCategory {Id = 6, Name = "Супервайзер", ShortName = "supervisor"}, - new FileCategory {Id = 7, Name = "Мастер", ShortName = "master"}, - - new FileCategory {Id = 8, Name = "Долотный сервис", ShortName = "toolService"}, - new FileCategory {Id = 9, Name = "Буровой подрядчик", ShortName = "drillService"}, - new FileCategory {Id = 10, Name = "Сервис по заканчиванию скважины", ShortName = "closingService"}, - //new FileCategory {Id = 11, Name = "", ShortName = ""}, - - new FileCategory {Id = 12, Name = "Рапорт", ShortName = "report"}, - - new FileCategory {Id = 1000, Name = "Программа бурения"}, - new FileCategory {Id = 1001, Name = "Задание от геологов"}, - new FileCategory {Id = 1002, Name = "Профиль ствола скважины (ННБ)"}, - new FileCategory {Id = 1003, Name = "Технологические расчеты (ННБ)"}, - new FileCategory {Id = 1004, Name = "Долотная программа"}, - new FileCategory {Id = 1005, Name = "Программа по растворам"}, - new FileCategory {Id = 1006, Name = "Программа геофизических исследований"}, - new FileCategory {Id = 1007, Name = "Планы спусков обсадных колонн"}, - new FileCategory {Id = 1008, Name = "Программы цементирования обсадных колонн"}, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasData(new List{ - new WellSectionType{ Id = 1, Caption = "Пилотный ствол"}, - new WellSectionType{ Id = 2, Caption = "Направление"}, - new WellSectionType{ Id = 3, Caption = "Кондуктор"}, - new WellSectionType{ Id = 4, Caption = "Эксплуатационная колонна"}, - new WellSectionType{ Id = 5, Caption = "Транспортный ствол"}, - new WellSectionType{ Id = 6, Caption = "Хвостовик"}, - - new WellSectionType{ Id = 7, Caption = "Пилотный ствол 2"}, - new WellSectionType{ Id = 8, Caption = "Направление 2"}, - new WellSectionType{ Id = 9, Caption = "Кондуктор 2"}, - new WellSectionType{ Id = 10, Caption = "Эксплуатационная колонна 2"}, - new WellSectionType{ Id = 11, Caption = "Транспортный ствол 2"}, - new WellSectionType{ Id = 12, Caption = "Хвостовик 2"}, - - new WellSectionType{ Id = 13, Caption = "Пилотный ствол 3"}, - new WellSectionType{ Id = 14, Caption = "Направление 3"}, - new WellSectionType{ Id = 15, Caption = "Кондуктор 3"}, - new WellSectionType{ Id = 16, Caption = "Эксплуатационная колонна 3"}, - new WellSectionType{ Id = 17, Caption = "Транспортный ствол 3"}, - new WellSectionType{ Id = 18, Caption = "Хвостовик 3"}, - - new WellSectionType{ Id = 19, Caption = "Пилотный ствол 4"}, - new WellSectionType{ Id = 20, Caption = "Направление 4"}, - new WellSectionType{ Id = 21, Caption = "Кондуктор 4"}, - new WellSectionType{ Id = 22, Caption = "Эксплуатационная колонна 4"}, - new WellSectionType{ Id = 23, Caption = "Транспортный ствол 4"}, - new WellSectionType{ Id = 24, Caption = "Хвостовик 4"}, - - new WellSectionType{ Id = 25, Caption = "Пилотный ствол 5"}, - new WellSectionType{ Id = 26, Caption = "Направление 5"}, - new WellSectionType{ Id = 27, Caption = "Кондуктор 5"}, - new WellSectionType{ Id = 28, Caption = "Эксплуатационная колонна 5"}, - new WellSectionType{ Id = 29, Caption = "Транспортный ствол 5"}, - new WellSectionType{ Id = 30, Caption = "Хвостовик 5"}, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasData(new List { - new WellType{ Id = 1, Caption = "Наклонно-направленная"}, - new WellType{ Id = 2, Caption = "Горизонтальная"}, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasData(new List { - new MeasureCategory{ Id = 1, Name = "Показатели бурового раствора", ShortName = "Раствор"}, - new MeasureCategory{ Id = 2, Name = "Шламограмма", ShortName = "Шламограмма"}, - new MeasureCategory{ Id = 3, Name = "ННБ", ShortName = "ННБ"}, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasData(new List{ - new CompanyType{ Id = 1, Caption = "Недрапользователь", }, - new CompanyType{ Id = 2, Caption = "Буровой подрядчик", }, - new CompanyType{ Id = 3, Caption = "Сервис автоматизации бурения", }, - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(nameof(UserSetting.IdUser), nameof(UserSetting.Key)); - }); - } - public Task RefreshMaterializedViewAsync(string? mwName = null, CancellationToken token = default) where TEntity : class { throw new System.NotImplementedException(); diff --git a/AsbCloudDb/Model/DefaultData/DefaultData.cs b/AsbCloudDb/Model/DefaultData/DefaultData.cs new file mode 100644 index 00000000..bc405ecb --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/DefaultData.cs @@ -0,0 +1,31 @@ +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.DefaultData +{ + internal static class DefaultContextData + { + public static void Fill(ModelBuilder modelBuilder) + { + var fillers = new IEntityFiller[] + { + // Order does meter + new EntityFillerUserRole(), + new EntityFillerRelationUserRoleUserRole(), + new EntityFillerPermission(), + new EntityFillerRelationUserRolePermission(), + new EntityFillerUser(), + new EntityFillerRelationUserUserRole(), + new EntityFillerCompany(), + new EntityFillerWellOperationCategory(), + new EntityFillerFileCategory(), + new EntityFillerWellSectionType(), + new EntityFillerWellType(), + new EntityFillerMeasureCategory(), + new EntityFillerCompanyType(), + }; + + foreach (var filler in fillers) + filler.FillData(modelBuilder); + } + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFiller.cs b/AsbCloudDb/Model/DefaultData/EntityFiller.cs new file mode 100644 index 00000000..3087f15c --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFiller.cs @@ -0,0 +1,18 @@ +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.DefaultData +{ + internal abstract class EntityFiller : IEntityFiller + where TEntity : class + { + protected abstract TEntity[] GetData(); + + public void FillData(ModelBuilder modelBuilder) + { + modelBuilder.Entity(entity => + { + entity.HasData(GetData()); + }); + } + } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerCompany.cs b/AsbCloudDb/Model/DefaultData/EntityFillerCompany.cs new file mode 100644 index 00000000..c6c4584d --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerCompany.cs @@ -0,0 +1,10 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerCompany : EntityFiller + { + protected override Company[] GetData() => new Company[] + { + new (){ Id = 1, Caption = "ООО \"АСБ\"", IdCompanyType = 3}, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerCompanyType.cs b/AsbCloudDb/Model/DefaultData/EntityFillerCompanyType.cs new file mode 100644 index 00000000..42c15726 --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerCompanyType.cs @@ -0,0 +1,11 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerCompanyType : EntityFiller + { + protected override CompanyType[] GetData() => new CompanyType[] { + new (){ Id = 1, Caption = "Недрапользователь", }, + new (){ Id = 2, Caption = "Буровой подрядчик", }, + new (){ Id = 3, Caption = "Сервис автоматизации бурения", }, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerFileCategory.cs b/AsbCloudDb/Model/DefaultData/EntityFillerFileCategory.cs new file mode 100644 index 00000000..333d100d --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerFileCategory.cs @@ -0,0 +1,32 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerFileCategory: EntityFiller + { + protected override FileCategory[] GetData() => new FileCategory[]{ + 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 = 11, Name = "", ShortName = ""}, + + 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 = "Программы цементирования обсадных колонн"}, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerMeasureCategory.cs b/AsbCloudDb/Model/DefaultData/EntityFillerMeasureCategory.cs new file mode 100644 index 00000000..1dbb7dfc --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerMeasureCategory.cs @@ -0,0 +1,11 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerMeasureCategory : EntityFiller + { + protected override MeasureCategory[] GetData() => new MeasureCategory[] { + new (){ Id = 1, Name = "Показатели бурового раствора", ShortName = "Раствор"}, + new (){ Id = 2, Name = "Шламограмма", ShortName = "Шламограмма"}, + new (){ Id = 3, Name = "ННБ", ShortName = "ННБ"}, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerPermission.cs b/AsbCloudDb/Model/DefaultData/EntityFillerPermission.cs new file mode 100644 index 00000000..acce78e0 --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerPermission.cs @@ -0,0 +1,127 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerPermission : EntityFiller + { + protected override Permission[] GetData() => new Permission[]{ + new (){ Id = 100, Name="AdminCluster.delete", Description="Разрешение удалять админ. Кусты"}, + new (){ Id = 101, Name="AdminCluster.edit", Description="Разрешение редактировать админ. Кусты"}, + new (){ Id = 102, Name="AdminCluster.get", Description="Разрешение просматривать админ. Кусты"}, + new (){ Id = 103, Name="AdminCompany.delete", Description="Разрешение удалять админ. Компании"}, + new (){ Id = 104, Name="AdminCompany.edit", Description="Разрешение редактировать админ. Компании"}, + new (){ Id = 105, Name="AdminCompany.get", Description="Разрешение просматривать админ. Компании"}, + new (){ Id = 106, Name="AdminCompanyType.delete", Description="Разрешение удалять админ. Типы компаний"}, + new (){ Id = 107, Name="AdminCompanyType.edit", Description="Разрешение редактировать админ. Типы компаний"}, + new (){ Id = 108, Name="AdminCompanyType.get", Description="Разрешение просматривать админ. Типы компаний"}, + new (){ Id = 109, Name="AdminDeposit.delete", Description="Разрешение удалять админ. Месторождения"}, + new (){ Id = 110, Name="AdminDeposit.edit", Description="Разрешение редактировать админ. Месторождения"}, + new (){ Id = 111, Name="AdminDeposit.get", Description="Разрешение просматривать админ. Месторождения"}, + new (){ Id = 112, Name="AdminPermission.delete", Description="Разрешение удалять админ. Разрешения"}, + new (){ Id = 113, Name="AdminPermission.edit", Description="Разрешение редактировать админ. Разрешения"}, + new (){ Id = 114, Name="AdminPermission.get", Description="Разрешение просматривать админ. Разрешения"}, + new (){ Id = 115, Name="AdminTelemetry.delete", Description="Разрешение удалять админ. Телеметрию"}, + new (){ Id = 116, Name="AdminTelemetry.edit", Description="Разрешение редактировать админ. Телеметрию"}, + new (){ Id = 117, Name="AdminTelemetry.get", Description="Разрешение просматривать админ. Телеметрию"}, + new (){ Id = 118, Name="AdminUser.delete", Description="Разрешение удалять админ. Пользователей"}, + new (){ Id = 119, Name="AdminUser.edit", Description="Разрешение редактировать админ. Пользователей"}, + new (){ Id = 120, Name="AdminUser.get", Description="Разрешение просматривать админ. Пользователей"}, + new (){ Id = 121, Name="AdminUserRole.delete", Description="Разрешение удалять админ. Роли пользователей"}, + new (){ Id = 122, Name="AdminUserRole.edit", Description="Разрешение редактировать админ. Роли пользователей"}, + new (){ Id = 123, Name="AdminUserRole.get", Description="Разрешение просматривать админ. Роли пользователей"}, + new (){ Id = 124, Name="AdminWell.delete", Description="Разрешение удалять админ. Скважины"}, + new (){ Id = 125, Name="AdminWell.edit", Description="Разрешение редактировать админ. Скважины"}, + new (){ Id = 126, Name="AdminWell.get", Description="Разрешение просматривать админ. Скважины"}, + new (){ Id = 200, Name="Auth.edit", Description="Разрешение редактировать 0"}, + new (){ Id = 201, Name="Auth.get", Description="Разрешение просматривать 0"}, + new (){ Id = 202, Name="Cluster.get", Description="Разрешение просматривать Кусты"}, + new (){ Id = 203, Name="Deposit.get", Description="Разрешение просматривать Месторождения"}, + new (){ Id = 204, Name="DrillFlowChart.delete", Description="Разрешение удалять РТК"}, + new (){ Id = 205, Name="DrillFlowChart.edit", Description="Разрешение редактировать РТК"}, + new (){ Id = 206, Name="DrillFlowChart.get", Description="Разрешение просматривать РТК"}, + new (){ Id = 207, Name="DrillingProgram.delete", Description="Разрешение удалять Программу бурения"}, + new (){ Id = 208, Name="DrillingProgram.edit", Description="Разрешение редактировать Программу бурения"}, + new (){ Id = 209, Name="DrillingProgram.get", Description="Разрешение просматривать Программу бурения"}, + new (){ Id = 210, Name="DrillParams.delete", Description="Разрешение удалять Режимы бурения"}, + new (){ Id = 211, Name="DrillParams.edit", Description="Разрешение редактировать Режимы бурения"}, + new (){ Id = 212, Name="DrillParams.get", Description="Разрешение просматривать Режимы бурения"}, + new (){ Id = 213, Name="File.delete", Description="Разрешение удалять Файлы"}, + new (){ Id = 214, Name="File.edit", Description="Разрешение редактировать Файлы"}, + new (){ Id = 215, Name="File.get", Description="Разрешение просматривать Файлы"}, + new (){ Id = 216, Name="Measure.delete", Description="Разрешение удалять Измерения"}, + new (){ Id = 217, Name="Measure.edit", Description="Разрешение редактировать Измерения"}, + new (){ Id = 218, Name="Measure.get", Description="Разрешение просматривать Измерения"}, + new (){ Id = 219, Name="Message.get", Description="Разрешение просматривать Сообщения телеметрии"}, + new (){ Id = 220, Name="OperationStat.get", Description="Разрешение просматривать Статистику по операциям"}, + new (){ Id = 221, Name="Report.edit", Description="Разрешение редактировать Рапорта"}, + new (){ Id = 222, Name="Report.get", Description="Разрешение просматривать Рапорта"}, + new (){ Id = 223, Name="RequestTracker.get", Description="Разрешение просматривать админ. Системная статистика"}, + new (){ Id = 224, Name="Setpoints.delete", Description="Разрешение удалять Рекомендации уставок"}, + new (){ Id = 225, Name="Setpoints.edit", Description="Разрешение редактировать Рекомендации уставок"}, + new (){ Id = 226, Name="Setpoints.get", Description="Разрешение просматривать Рекомендации уставок"}, + new (){ Id = 227, Name="Telemetry.edit", Description="Разрешение редактировать Телеметрии"}, + new (){ Id = 228, Name="TelemetryAnalytics.get", Description="Разрешение просматривать Анализ телеметрии"}, + new (){ Id = 229, Name="TelemetryDataSaub.edit", Description="Разрешение редактировать Данные телеметрии по САУБ"}, + new (){ Id = 230, Name="TelemetryDataSaub.get", Description="Разрешение просматривать Данные телеметрии по САУБ"}, + new (){ Id = 231, Name="TelemetryDataSpin.edit", Description="Разрешение редактировать Данные телеметрии по SpinMaster"}, + new (){ Id = 232, Name="TelemetryDataSpin.get", Description="Разрешение просматривать Данные телеметрии по SpinMaster"}, + new (){ Id = 233, Name="Well.edit", Description="Разрешение редактировать Скважины"}, + new (){ Id = 234, Name="Well.get", Description="Разрешение просматривать Скважины"}, + new (){ Id = 235, Name="WellComposite.edit", Description="Разрешение редактировать Композитные скважины"}, + new (){ Id = 236, Name="WellComposite.get", Description="Разрешение просматривать Композитные скважины"}, + new (){ Id = 237, Name="WellOperation.delete", Description="Разрешение удалять Операции по скважинам"}, + new (){ Id = 238, Name="WellOperation.edit", Description="Разрешение редактировать Операции по скважинам"}, + new (){ Id = 239, Name="WellOperation.get", Description="Разрешение просматривать Операции по скважинам"}, + new (){ Id = 240, Name="File.edit1", Description="Разрешение редактировать Файлы категории 1 (Растворный сервис)"}, + new (){ Id = 241, Name="File.edit2", Description="Разрешение редактировать Файлы категории 2 (Цементирование)"}, + new (){ Id = 242, Name="File.edit3", Description="Разрешение редактировать Файлы категории 3 (ННБ)"}, + new (){ Id = 243, Name="File.edit4", Description="Разрешение редактировать Файлы категории 4 (ГТИ)"}, + new (){ Id = 244, Name="File.edit5", Description="Разрешение редактировать Файлы категории 5 (Документы по скважине)"}, + new (){ Id = 245, Name="File.edit6", Description="Разрешение редактировать Файлы категории 6 (Супервайзер)"}, + new (){ Id = 246, Name="File.edit7", Description="Разрешение редактировать Файлы категории 7 (Мастер)"}, + new (){ Id = 247, Name="File.edit8", Description="Разрешение редактировать Файлы категории 8 (Долотный сервис)"}, + new (){ Id = 248, Name="File.edit9", Description="Разрешение редактировать Файлы категории 9 (Буровой подрядчик)"}, + new (){ Id = 249, Name="File.edit10", Description="Разрешение редактировать Файлы категории 10 (Сервис по заканчиванию скважины)"}, + new (){ Id = 250, Name="File.edit11", Description="Разрешение редактировать Файлы категории 11 (Рапорт)"}, + new (){ Id = 251, Name="File.edit12", Description="Разрешение редактировать Файлы категории 12"}, + new (){ Id = 252, Name="File.edit13", Description="Разрешение редактировать Файлы категории 12"}, + new (){ Id = 253, Name="File.edit14", Description="Разрешение редактировать Файлы категории 13"}, + new (){ Id = 254, Name="File.edit15", Description="Разрешение редактировать Файлы категории 14"}, + new (){ Id = 255, Name="File.edit16", Description="Разрешение редактировать Файлы категории 15"}, + new (){ Id = 256, Name="File.edit17", Description="Разрешение редактировать Файлы категории 16"}, + new (){ Id = 257, Name="File.edit18", Description="Разрешение редактировать Файлы категории 17"}, + new (){ Id = 258, Name="File.edit19", Description="Разрешение редактировать Файлы категории 18"}, + new (){ Id = 259, Name="File.edit20", Description="Разрешение редактировать Файлы категории 19"}, + new (){ Id = 260, Name="File.edit21", Description="Разрешение редактировать Файлы категории 20"}, + new (){ Id = 261, Name="File.edit22", Description="Разрешение редактировать Файлы категории 21"}, + new (){ Id = 262, Name="File.edit23", Description="Разрешение редактировать Файлы категории 22"}, + new (){ Id = 263, Name="File.edit24", Description="Разрешение редактировать Файлы категории 23"}, + new (){ Id = 264, Name="File.edit25", Description="Разрешение редактировать Файлы категории 24"}, + new (){ Id = 265, Name="File.edit26", Description="Разрешение редактировать Файлы категории 25"}, + new (){ Id = 266, Name="File.edit27", Description="Разрешение редактировать Файлы категории 26"}, + new (){ Id = 267, Name="File.edit28", Description="Разрешение редактировать Файлы категории 27"}, + new (){ Id = 268, Name="File.edit29", Description="Разрешение редактировать Файлы категории 28"}, + new (){ Id = 269, Name="File.edit30", Description="Разрешение редактировать Файлы категории 29"}, + + new (){ Id = 380, Name="Driller.get", Description="Разрешение просматривать список бурильщиков"}, + new (){ Id = 381, Name="Driller.edit", Description="Разрешение редактировать бурильщика"}, + new (){ Id = 382, Name="Driller.delete", Description="Разрешение удалять бурильщик"}, + new (){ Id = 383, Name="Schedule.get", Description="Разрешение просматривать графики бурильщиков"}, + new (){ Id = 384, Name="Schedule.edit", Description="Разрешение редактировать график бурильщика"}, + new (){ Id = 385, Name="Schedule.delete", Description="Разрешение удалять график бурильщика"}, + new (){ Id = 386, Name="DailyReport.get", Description="Разрешение просматривать суточный рапорт"}, + new (){ Id = 387, Name="DailyReport.edit", Description="Разрешение редактировать суточный рапорт"}, + new (){ Id = 388, Name="DetectedOperation.get", Description="Разрешение просматривать авто. определенные операции"}, + + new (){ Id = 389, Name="OperationValue.get", Description="Разрешение просматривать целевые значения"}, + new (){ Id = 390, Name="OperationValue.edit", Description="Разрешение редактировать целевые значения"}, + new (){ Id = 391, Name="OperationValue.delete", Description="Разрешение удалять целевые значения"}, + + new (){ Id = 400, Name="WitsInfo.get", Description="Разрешение просматривать инфо по wits параметрам"}, + new (){ Id = 401, Name="WitsRecord1.get", Description="Разрешение просматривать WITS record 1"}, + new (){ Id = 407, Name="WitsRecord7.get", Description="Разрешение просматривать WITS record 7"}, + new (){ Id = 408, Name="WitsRecord8.get", Description="Разрешение просматривать WITS record 8"}, + new (){ Id = 450, Name="WitsRecord50.get", Description="Разрешение просматривать WITS record 50"}, + new (){ Id = 460, Name="WitsRecord60.get", Description="Разрешение просматривать WITS record 60"}, + new (){ Id = 461, Name="WitsRecord61.get", Description="Разрешение просматривать WITS record 61"}, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRolePermission.cs b/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRolePermission.cs new file mode 100644 index 00000000..453b24fc --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRolePermission.cs @@ -0,0 +1,58 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerRelationUserRolePermission: EntityFiller + { + protected override RelationUserRolePermission[] GetData() => new RelationUserRolePermission[]{ + new (){ IdUserRole = 1100, IdPermission = 102}, new (){ IdUserRole = 1100, IdPermission = 111}, + new (){ IdUserRole = 1101, IdPermission = 101}, new (){ IdUserRole = 1101, IdPermission = 100}, + new (){ IdUserRole = 1102, IdPermission = 105}, new (){ IdUserRole = 1102, IdPermission = 108}, + new (){ IdUserRole = 1103, IdPermission = 104}, new (){ IdUserRole = 1103, IdPermission = 103}, + new (){ IdUserRole = 1104, IdPermission = 108}, + new (){ IdUserRole = 1105, IdPermission = 107}, new (){ IdUserRole = 1105, IdPermission = 106}, + new (){ IdUserRole = 1106, IdPermission = 111}, + new (){ IdUserRole = 1107, IdPermission = 110}, new (){ IdUserRole = 1107, IdPermission = 109}, + new (){ IdUserRole = 1108, IdPermission = 114}, + new (){ IdUserRole = 1109, IdPermission = 113}, new (){ IdUserRole = 1109, IdPermission = 112}, + new (){ IdUserRole = 1110, IdPermission = 123}, new (){ IdUserRole = 1110, IdPermission = 114}, + new (){ IdUserRole = 1111, IdPermission = 122}, new (){ IdUserRole = 1111, IdPermission = 121}, + new (){ IdUserRole = 1112, IdPermission = 117}, + new (){ IdUserRole = 1113, IdPermission = 105}, new (){ IdUserRole = 1113, IdPermission = 123}, new (){ IdUserRole = 1113, IdPermission = 120}, + new (){ IdUserRole = 1114, IdPermission = 119}, new (){ IdUserRole = 1114, IdPermission = 118}, new (){ IdUserRole = 1114, IdPermission = 200}, + new (){ IdUserRole = 1115, IdPermission = 223}, + new (){ IdUserRole = 1116, IdPermission = 105}, new (){ IdUserRole = 1116, IdPermission = 102}, new (){ IdUserRole = 1116, IdPermission = 117}, new (){ IdUserRole = 1116, IdPermission = 126}, + new (){ IdUserRole = 1117, IdPermission = 125}, new (){ IdUserRole = 1117, IdPermission = 124}, + new (){ IdUserRole = 1200, IdPermission = 203}, new (){ IdUserRole = 1200, IdPermission = 230}, + new (){ IdUserRole = 1201, IdPermission = 202}, new (){ IdUserRole = 1201, IdPermission = 203}, new (){ IdUserRole = 1201, IdPermission = 220}, + new (){ IdUserRole = 1202, IdPermission = 203}, new (){ IdUserRole = 1202, IdPermission = 220}, new (){ IdUserRole = 1202, IdPermission = 236}, new (){ IdUserRole = 1202, IdPermission = 212}, + new (){ IdUserRole = 1203, IdPermission = 235}, + new (){ IdUserRole = 1204, IdPermission = 202}, new (){ IdUserRole = 1204, IdPermission = 203}, + new (){ IdUserRole = 1205, IdPermission = 215}, + new (){ IdUserRole = 1206, IdPermission = 203}, new (){ IdUserRole = 1206, IdPermission = 206}, + new (){ IdUserRole = 1207, IdPermission = 205}, + new (){ IdUserRole = 1208, IdPermission = 218}, + new (){ IdUserRole = 1209, IdPermission = 217}, + new (){ IdUserRole = 1210, IdPermission = 203}, new (){ IdUserRole = 1210, IdPermission = 230}, new (){ IdUserRole = 1210, IdPermission = 219}, + new (){ IdUserRole = 1211, IdPermission = 203}, new (){ IdUserRole = 1211, IdPermission = 220}, new (){ IdUserRole = 1211, IdPermission = 239}, + new (){ IdUserRole = 1212, IdPermission = 238}, new (){ IdUserRole = 1212, IdPermission = 237}, + new (){ IdUserRole = 1213, IdPermission = 203}, new (){ IdUserRole = 1213, IdPermission = 239}, new (){ IdUserRole = 1213, IdPermission = 212}, + new (){ IdUserRole = 1214, IdPermission = 211}, new (){ IdUserRole = 1214, IdPermission = 210}, + new (){ IdUserRole = 1215, IdPermission = 203}, new (){ IdUserRole = 1215, IdPermission = 222}, + new (){ IdUserRole = 1216, IdPermission = 221}, + new (){ IdUserRole = 1217, IdPermission = 226}, + new (){ IdUserRole = 1218, IdPermission = 225}, new (){ IdUserRole = 1218, IdPermission = 224}, + new (){ IdUserRole = 1219, IdPermission = 203}, new (){ IdUserRole = 1219, IdPermission = 206}, new (){ IdUserRole = 1219, IdPermission = 230}, new (){ IdUserRole = 1219, IdPermission = 232}, + new (){ IdUserRole = 1220, IdPermission = 203}, new (){ IdUserRole = 1220, IdPermission = 228}, + new (){ IdUserRole = 1221, IdPermission = 202}, new (){ IdUserRole = 1221, IdPermission = 203}, new (){ IdUserRole = 1221, IdPermission = 220}, new (){ IdUserRole = 1221, IdPermission = 234}, + new (){ IdUserRole = 1501, IdPermission = 214}, new (){ IdUserRole = 1501, IdPermission = 213}, + new (){ IdUserRole = 1502, IdPermission = 207}, new (){ IdUserRole = 1502, IdPermission = 208}, + new (){ IdUserRole = 2000, IdPermission = 205}, new (){ IdUserRole = 2000, IdPermission = 204}, new (){ IdUserRole = 2000, IdPermission = 245}, + new (){ IdUserRole = 2001, IdPermission = 244}, new (){ IdUserRole = 2001, IdPermission = 245}, + new (){ IdUserRole = 2002, IdPermission = 244}, new (){ IdUserRole = 2002, IdPermission = 246}, new (){ IdUserRole = 2002, IdPermission = 237}, new (){ IdUserRole = 2002, IdPermission = 238}, + new (){ IdUserRole = 2003, IdPermission = 240}, new (){ IdUserRole = 2003, IdPermission = 217}, new (){ IdUserRole = 2003, IdPermission = 216}, + new (){ IdUserRole = 2004, IdPermission = 242}, new (){ IdUserRole = 2004, IdPermission = 217}, new (){ IdUserRole = 2004, IdPermission = 216}, new (){ IdUserRole = 2004, IdPermission = 205}, new (){ IdUserRole = 2004, IdPermission = 204}, + new (){ IdUserRole = 2005, IdPermission = 247}, new (){ IdUserRole = 2005, IdPermission = 205}, new (){ IdUserRole = 2005, IdPermission = 204}, + new (){ IdUserRole = 2006, IdPermission = 243}, new (){ IdUserRole = 2006, IdPermission = 205}, new (){ IdUserRole = 2006, IdPermission = 204}, + new (){ IdUserRole = 2007, IdPermission = 241}, new (){ IdUserRole = 2007, IdPermission = 205}, new (){ IdUserRole = 2007, IdPermission = 204}, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRoleUserRole.cs b/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRoleUserRole.cs new file mode 100644 index 00000000..1a84fb1a --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRoleUserRole.cs @@ -0,0 +1,32 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerRelationUserRoleUserRole: EntityFiller< RelationUserRoleUserRole> + { + protected override RelationUserRoleUserRole[] GetData() => new RelationUserRoleUserRole[]{ + new (){ Id = 1101, IdInclude = 1100 }, + new (){ Id = 1103, IdInclude = 1102 }, + new (){ Id = 1105, IdInclude = 1104 }, + new (){ Id = 1107, IdInclude = 1106 }, + new (){ Id = 1109, IdInclude = 1108 }, + new (){ Id = 1111, IdInclude = 1110 }, + new (){ Id = 1114, IdInclude = 1113 }, + new (){ Id = 1117, IdInclude = 1116 }, + new (){ Id = 1203, IdInclude = 1202 }, + new (){ Id = 1207, IdInclude = 1206 }, + new (){ Id = 1209, IdInclude = 1208 }, + new (){ Id = 1212, IdInclude = 1211 }, + new (){ Id = 1214, IdInclude = 1213 }, + new (){ Id = 1216, IdInclude = 1215 }, + new (){ Id = 1218, IdInclude = 1217 }, + new (){ Id = 2000, IdInclude = 1200}, new (){ Id = 2000, IdInclude = 1201}, new (){ Id = 2000, IdInclude = 1202}, new (){ Id = 2000, IdInclude = 1204}, new (){ Id = 2000, IdInclude = 1205}, new (){ Id = 2000, IdInclude = 1206}, new (){ Id = 2000, IdInclude = 1208}, new (){ Id = 2000, IdInclude = 1210}, new (){ Id = 2000, IdInclude = 1211}, new (){ Id = 2000, IdInclude = 1213}, new (){ Id = 2000, IdInclude = 1215}, new (){ Id = 2000, IdInclude = 1217}, new (){ Id = 2000, IdInclude = 1219}, new (){ Id = 2000, IdInclude = 1220}, new (){ Id = 2000, IdInclude = 1221}, + new (){ Id = 2000, IdInclude = 1500 },new (){ Id = 2000, IdInclude = 1501 },new (){ Id = 2000, IdInclude = 1502 }, + new (){ Id = 2001, IdInclude = 1500 },new (){ Id = 2001, IdInclude = 1501 },new (){ Id = 2001, IdInclude = 1502 }, + new (){ Id = 2002, IdInclude = 1500 },new (){ Id = 2002, IdInclude = 1501 },new (){ Id = 2002, IdInclude = 1502 }, + new (){ Id = 2003, IdInclude = 1500 },new (){ Id = 2003, IdInclude = 1501 },new (){ Id = 2003, IdInclude = 1502 }, + new (){ Id = 2004, IdInclude = 1500 },new (){ Id = 2004, IdInclude = 1501 },new (){ Id = 2004, IdInclude = 1502 }, + new (){ Id = 2005, IdInclude = 1500 },new (){ Id = 2005, IdInclude = 1501 },new (){ Id = 2005, IdInclude = 1502 }, + new (){ Id = 2006, IdInclude = 1500 },new (){ Id = 2006, IdInclude = 1501 },new (){ Id = 2006, IdInclude = 1502 }, + new (){ Id = 2007, IdInclude = 1500 },new (){ Id = 2007, IdInclude = 1501 },new (){ Id = 2007, IdInclude = 1502 }, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserUserRole.cs b/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserUserRole.cs new file mode 100644 index 00000000..2216f22e --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserUserRole.cs @@ -0,0 +1,10 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerRelationUserUserRole : EntityFiller + { + protected override RelationUserUserRole[] GetData() => new RelationUserUserRole[] + { + new () { IdUser = 1, IdUserRole = 1, }, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerUser.cs b/AsbCloudDb/Model/DefaultData/EntityFillerUser.cs new file mode 100644 index 00000000..8d1a5f34 --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerUser.cs @@ -0,0 +1,15 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerUser : EntityFiller + { + protected override User[] GetData() => new User[]{ + new (){ + Id = 1, + IdCompany = 1, + Login = "dev", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072", + Name = "Разработчик", + }, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerUserRole.cs b/AsbCloudDb/Model/DefaultData/EntityFillerUserRole.cs new file mode 100644 index 00000000..78a8e0be --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerUserRole.cs @@ -0,0 +1,60 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerUserRole : EntityFiller + { + protected override UserRole[] GetData() => new UserRole[]{ + new (){ Id = 1, Caption = "root", IdType = 1}, + new (){ Id = 1100, Caption = "admin_cluster.view", IdType = 1}, + new (){ Id = 1101, Caption = "admin_cluster.edit", IdType = 1}, + new (){ Id = 1102, Caption = "admin_company.view", IdType = 1}, + new (){ Id = 1103, Caption = "admin_company.edit", IdType = 1}, + new (){ Id = 1104, Caption = "admin_company_type.view", IdType = 1}, + new (){ Id = 1105, Caption = "admin_company_type.edit", IdType = 1}, + new (){ Id = 1106, Caption = "admin_deposit.view", IdType = 1}, + new (){ Id = 1107, Caption = "admin_deposit.edit", IdType = 1}, + new (){ Id = 1108, Caption = "admin_permission.view", IdType = 1}, + new (){ Id = 1109, Caption = "admin_permission.edit", IdType = 1}, + new (){ Id = 1110, Caption = "admin_role.view", IdType = 1}, + new (){ Id = 1111, Caption = "admin_role.edit", IdType = 1}, + new (){ Id = 1112, Caption = "admin_telemetry.view", IdType = 1}, + new (){ Id = 1113, Caption = "admin_user.view", IdType = 1}, + new (){ Id = 1114, Caption = "admin_user.edit", IdType = 1}, + new (){ Id = 1115, Caption = "admin_visit_log.view", IdType = 1}, + new (){ Id = 1116, Caption = "admin_well.view", IdType = 1}, + new (){ Id = 1117, Caption = "admin_well.edit", IdType = 1}, + new (){ Id = 1200, Caption = "archive.view", IdType = 1}, + new (){ Id = 1201, Caption = "cluster.view", IdType = 1}, + new (){ Id = 1202, Caption = "composite.view", IdType = 1}, + new (){ Id = 1203, Caption = "composite.edit", IdType = 1}, + new (){ Id = 1204, Caption = "deposit.view", IdType = 1}, + new (){ Id = 1205, Caption = "document.view", IdType = 1}, + new (){ Id = 1206, Caption = "drillProcessFlow.view", IdType = 1}, + new (){ Id = 1207, Caption = "drillProcessFlow.edit", IdType = 1}, + new (){ Id = 1208, Caption = "measure.view", IdType = 1}, + new (){ Id = 1209, Caption = "measure.edit", IdType = 1}, + new (){ Id = 1210, Caption = "message.view", IdType = 1}, + new (){ Id = 1211, Caption = "operations.view", IdType = 1}, + new (){ Id = 1212, Caption = "operations.edit", IdType = 1}, + new (){ Id = 1213, Caption = "params.view", IdType = 1}, + new (){ Id = 1214, Caption = "params.edit", IdType = 1}, + new (){ Id = 1215, Caption = "report.view", IdType = 1}, + new (){ Id = 1216, Caption = "report.edit", IdType = 1}, + new (){ Id = 1217, Caption = "setpoints.view", IdType = 1}, + new (){ Id = 1218, Caption = "setpoints.edit", IdType = 1}, + new (){ Id = 1219, Caption = "telemetry.view", IdType = 1}, + new (){ Id = 1220, Caption = "telemetryAnalysis.view", IdType = 1}, + new (){ Id = 1221, Caption = "well.view", IdType = 1}, + new (){ Id = 1500, Caption = "Просмотр всего", IdType = 1}, + new (){ Id = 1501, Caption = "file.edit", IdType = 1}, + new (){ Id = 1502, Caption = "drillingProgram.edit", IdType = 1}, + new (){ Id = 2000, Caption = "Заказчик", IdType = 0}, + new (){ Id = 2001, Caption = "Супервайзер", IdType = 0}, + new (){ Id = 2002, Caption = "Буровой подрядчик", IdType = 0}, + new (){ Id = 2003, Caption = "Растворщик", IdType = 0}, + new (){ Id = 2004, Caption = "Телеметрист", IdType = 0}, + new (){ Id = 2005, Caption = "Долотный сервис", IdType = 0}, + new (){ Id = 2006, Caption = "ГТИ", IdType = 0}, + new (){ Id = 2007, Caption = "Цементирование", IdType = 0}, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerWellOperationCategory.cs b/AsbCloudDb/Model/DefaultData/EntityFillerWellOperationCategory.cs new file mode 100644 index 00000000..3dccee61 --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerWellOperationCategory.cs @@ -0,0 +1,84 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerWellOperationCategory : EntityFiller + { + protected override WellOperationCategory[] GetData() => new WellOperationCategory[]{ + // Автоматически определяемые операции + new () {Id = 1, Name = "Невозможно определить операцию", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин"}, + new () {Id = 2, Name = "Роторное бурение", Code = 0, KeyValueName = "МСП", KeyValueUnits = "м/ч" }, + new () {Id = 3, Name = "Слайдирование", Code = 0, KeyValueName = "МСП", KeyValueUnits = "м/ч" }, + new () {Id = 4, Name = "Подъем с проработкой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 5, Name = "Спуск с проработкой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 6, Name = "Подъем с промывкой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 7, Name = "Спуск с промывкой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 8, Name = "Спуск в скважину", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 9, Name = "Спуск с вращением", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 10, Name = "Подъем из скважины", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 11, Name = "Подъем с вращением", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 12, Name = "Промывка в покое", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 13, Name = "Промывка с вращением", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 14, Name = "Удержание в клиньях", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 15, Name = "Неподвижное состояние", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 16, Name = "Вращение без циркуляции", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 17, Name = "На поверхности", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 18, Name = "Проработка перед наращиванием", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 19, Name = "Шаблонировка перед наращиванием", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 20, Name = "Промывка перед наращиванием", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 21, Name = "Статический замер телесистемы", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 22, Name = "Промывка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + + // Операции ручного ввода + new () {Id = 1001, Name = "Бурение", Code = 0, KeyValueName = "МСП", KeyValueUnits = "м/ч" }, + new () {Id = 1002, Name = "ГИС", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1003, Name = "ГФР", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1004, Name = "Монтаж ПВО", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1005, Name = "Демонтаж ПВО", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1006, Name = "Установка ФА", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1007, Name = "Оборудование устья", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1008, Name = "ОЗЦ", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1011, Name = "Начало цикла строительства скважины", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1012, Name = "Окончание цикла строительства скважины", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1013, Name = "Опрессовка ПВО", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1014, Name = "Опрессовка Ц.К.", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1015, Name = "Опрессовка ВЗД", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1016, Name = "Перевод скв на другой тип промывочной жидкости", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1017, Name = "Перезапись каротажа", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1018, Name = "Перетяжка талевого каната", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1019, Name = "Наращивание, промывка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1020, Name = "Подъем инструмента", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1021, Name = "Подъем инструмента с промывкой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1022, Name = "Обратная проработка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1023, Name = "Сборка инструмента с мостков", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1024, Name = "Подготовительные работы", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1025, Name = "Сборка КНБК", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1026, Name = "Разборка КНБК", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1027, Name = "Промывка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1028, Name = "Промежуточная промывка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1029, Name = "Прокачка пачек", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1030, Name = "Разбуривание тех.оснастки", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1031, Name = "Ремонт", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1032, Name = "Спуск инструмента", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1033, Name = "Спуск инструмента с промывкой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1034, Name = "Прямая проработка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1035, Name = "Принудительная проработка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1037, Name = "Тех СПО-подъем", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1038, Name = "Тех СПО-спуск", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1039, Name = "Техническое обслуживание", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1040, Name = "Цементаж", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1041, Name = "Шаблонировка ствола", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1042, Name = "Геологическое осложнение", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1043, Name = "НПВ", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1044, Name = "ВМР", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1045, Name = "Прочее", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1046, Name = "Спуск КНБК", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1047, Name = "Подъем КНБК", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1048, Name = "Спуск ОК", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1050, Name = "Промывка при спуске ОК", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1051, Name = "Замер ТС", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1052, Name = "Тех. отстой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1053, Name = "Циркуляция и Обработка БР", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1054, Name = "Срезка ствола", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + new () {Id = 1055, Name = "Вспомогательные работы", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" }, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerWellSectionType.cs b/AsbCloudDb/Model/DefaultData/EntityFillerWellSectionType.cs new file mode 100644 index 00000000..76439e7c --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerWellSectionType.cs @@ -0,0 +1,43 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerWellSectionType : EntityFiller + { + protected override WellSectionType[] GetData() => new WellSectionType[] + { + new (){ Id = 1, Caption = "Пилотный ствол"}, + new (){ Id = 2, Caption = "Направление"}, + new (){ Id = 3, Caption = "Кондуктор"}, + new (){ Id = 4, Caption = "Эксплуатационная колонна"}, + new (){ Id = 5, Caption = "Транспортный ствол"}, + new (){ Id = 6, Caption = "Хвостовик"}, + + new (){ Id = 7, Caption = "Пилотный ствол 2"}, + new (){ Id = 8, Caption = "Направление 2"}, + new (){ Id = 9, Caption = "Кондуктор 2"}, + new (){ Id = 10, Caption = "Эксплуатационная колонна 2"}, + new (){ Id = 11, Caption = "Транспортный ствол 2"}, + new (){ Id = 12, Caption = "Хвостовик 2"}, + + new (){ Id = 13, Caption = "Пилотный ствол 3"}, + new (){ Id = 14, Caption = "Направление 3"}, + new (){ Id = 15, Caption = "Кондуктор 3"}, + new (){ Id = 16, Caption = "Эксплуатационная колонна 3"}, + new (){ Id = 17, Caption = "Транспортный ствол 3"}, + new (){ Id = 18, Caption = "Хвостовик 3"}, + + new (){ Id = 19, Caption = "Пилотный ствол 4"}, + new (){ Id = 20, Caption = "Направление 4"}, + new (){ Id = 21, Caption = "Кондуктор 4"}, + new (){ Id = 22, Caption = "Эксплуатационная колонна 4"}, + new (){ Id = 23, Caption = "Транспортный ствол 4"}, + new (){ Id = 24, Caption = "Хвостовик 4"}, + + new (){ Id = 25, Caption = "Пилотный ствол 5"}, + new (){ Id = 26, Caption = "Направление 5"}, + new (){ Id = 27, Caption = "Кондуктор 5"}, + new (){ Id = 28, Caption = "Эксплуатационная колонна 5"}, + new (){ Id = 29, Caption = "Транспортный ствол 5"}, + new (){ Id = 30, Caption = "Хвостовик 5"}, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerWellType.cs b/AsbCloudDb/Model/DefaultData/EntityFillerWellType.cs new file mode 100644 index 00000000..74a2f367 --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/EntityFillerWellType.cs @@ -0,0 +1,11 @@ +namespace AsbCloudDb.Model.DefaultData +{ + internal class EntityFillerWellType : EntityFiller + { + protected override WellType[] GetData() => new WellType[] + { + new (){ Id = 1, Caption = "Наклонно-направленная"}, + new (){ Id = 2, Caption = "Горизонтальная"}, + }; + } +} diff --git a/AsbCloudDb/Model/DefaultData/IEntityFiller.cs b/AsbCloudDb/Model/DefaultData/IEntityFiller.cs new file mode 100644 index 00000000..0734e998 --- /dev/null +++ b/AsbCloudDb/Model/DefaultData/IEntityFiller.cs @@ -0,0 +1,9 @@ +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.DefaultData +{ + internal interface IEntityFiller + { + void FillData(ModelBuilder modelBuilder); + } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/WellOperationCategory.cs b/AsbCloudDb/Model/WellOperationCategory.cs index c3524e3c..7e57bb34 100644 --- a/AsbCloudDb/Model/WellOperationCategory.cs +++ b/AsbCloudDb/Model/WellOperationCategory.cs @@ -18,5 +18,10 @@ namespace AsbCloudDb.Model [Column("code"), Comment("Код операции")] public int Code { get; set; } + [Column("key_value_name"), Comment("Название ключевого показателя операции"), StringLength(32)] + public string KeyValueName { get; set; } + + [Column("key_value_units"), Comment("Единицы измерения ключевого показателя операции"), StringLength(16)] + public string KeyValueUnits { get; set; } } }