diff --git a/AsbCloudApp/Data/DailyReport/Blocks/EditableBlock.cs b/AsbCloudApp/Data/DailyReport/Blocks/EditableBlock.cs new file mode 100644 index 00000000..cafe5d33 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/Blocks/EditableBlock.cs @@ -0,0 +1,12 @@ +namespace AsbCloudApp.Data.DailyReport.Blocks; + +/// +/// Базовый класс для редактируемых блоков +/// +public abstract class EditableBlock +{ + /// + /// Id пользователя внесшего изменения в блок + /// + public int IdUser { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs new file mode 100644 index 00000000..3b6dac33 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs @@ -0,0 +1,29 @@ +namespace AsbCloudApp.Data.DailyReport.Blocks; + +/// +/// РТК +/// +public class ProcessMapWellDrillingRecordDto +{ + /// + /// Id режима бурения + /// 1 - ротор + /// 2 - слайд + /// + public int IdMode { get; set; } + + /// + /// Мех. скорость + /// + public PlanFactDto Rop { get; set; } + + /// + /// Глубина ствола + /// + public double? WellBoreDepth { get; set; } + + /// + /// Часы бурения + /// + public double MechDrillingHours { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/ScheduleRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/ScheduleRecordDto.cs new file mode 100644 index 00000000..91f11af4 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/Blocks/ScheduleRecordDto.cs @@ -0,0 +1,32 @@ +namespace AsbCloudApp.Data.DailyReport.Blocks; + +/// +/// Блок с графиком работы +/// +public class ScheduleRecordDto +{ + /// + /// Начало смены + /// + public TimeDto? ShiftStart { get; set; } + + /// + /// Конец смены + /// + public TimeDto? ShiftEnd { get; set; } + + /// + /// Имя бурильщика + /// + public string? Name { get; set; } + + /// + /// Фамилия бурильщика + /// + public string? Surname { get; set; } + + /// + /// Отчество бурильщика + /// + public string? Patronymic { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignBlockDto.cs new file mode 100644 index 00000000..717c3403 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignBlockDto.cs @@ -0,0 +1,17 @@ +namespace AsbCloudApp.Data.DailyReport.Blocks.Sign; + +/// +/// Блок с подписями +/// +public class SignBlockDto : EditableBlock +{ + /// + /// Подпись мастера буровой + /// + public SignRecordDto? DrillingMaster { get; set; } + + /// + /// Подпись супервайзера + /// + public SignRecordDto? Supervisor { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs new file mode 100644 index 00000000..2196224e --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs @@ -0,0 +1,28 @@ +namespace AsbCloudApp.Data.DailyReport.Blocks.Sign; + +/// +/// Подпись +/// +public class SignRecordDto +{ + /// + /// Имя + /// + public string Name { get; set; } = null!; + + /// + /// Фамилия + /// + public string Surname { get; set; } = null!; + + /// + /// Отчество + /// + public string? Patronymic { get; set; } + + /// + public override string ToString() + { + return $"{Surname} {Name} {Patronymic}"; + } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs new file mode 100644 index 00000000..1c7bf21f --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using System.Linq; + +namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems; + +/// +/// Блок статистики работы подсистем +/// +public class SubsystemBlockDto : EditableBlock +{ + /// + /// Длина ствола скважины + /// + public double? WellBoreDepth { get; set; } + + /// + /// Кол-во замеров за сутки + /// + public double? MeasurementsPerDaily { get; set; } + + /// + /// Общая плановая мех. скорость + /// + public double? TotalRopPlan { get; set; } + + /// + /// Рекомендации специалиста + /// + public string? Comment { get; set; } + + /// + /// Модули + /// + public IEnumerable Modules { get; set; } = Enumerable.Empty(); +} \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemRecordDto.cs new file mode 100644 index 00000000..ded5d126 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemRecordDto.cs @@ -0,0 +1,44 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems; + +/// +/// Модуль подсистемы +/// +public class SubsystemRecordDto +{ + /// + /// 1 - АПД, ч/м + /// 11 - АПД ротор + /// 12 - АПД слайд + /// 65536 - Осцилляция + /// 65537 - Демпфер + /// 100000 - Автопроработка + /// 100001 - АвтоСПО + /// + public int IdSubsystem { get; set; } + + /// + /// Идентификатор временного интервала + /// 1 - за сутки + /// 2 - за скважину + /// + [Range(1, 2)] + public int IdTimeInterval { get; set; } + + /// + /// Сумма изменения глубин при включеной подсистеме + /// + public double? SumDepthInterval { get; set; } + + /// + /// Наработка подсистемы + /// + public double? UsedTimeHours { get; set; } + + /// + /// Коэффициент использования + /// + [Range(0, 100)] + public double? KUsage { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceBlockDto.cs new file mode 100644 index 00000000..08be30b6 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceBlockDto.cs @@ -0,0 +1,37 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; + +namespace AsbCloudApp.Data.DailyReport.Blocks.TimeBalance; + +/// +/// Блок с балансом времени +/// +public class TimeBalanceBlockDto : EditableBlock +{ + /// + /// Идентификатор секции + /// + [Range(1, int.MaxValue)] + public int IdSection { get; set; } + + /// + /// Плановая проходка скважины + /// + public double? WellDepthPlan { get; set; } + + /// + /// Фактическая проходка скважины + /// + public double WellDepthFact { get; set; } + + /// + /// Кол-во наращиваний за сутки + /// + public double? CountWellOperationSlipsTime { get; set; } + + /// + /// Операции на скважине + /// + public IEnumerable WellOperations { get; set; } = Enumerable.Empty(); +} \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceRecordDto.cs new file mode 100644 index 00000000..809447ef --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceRecordDto.cs @@ -0,0 +1,35 @@ +namespace AsbCloudApp.Data.DailyReport.Blocks.TimeBalance; + +/// +/// Операции проводимые на скважине +/// +public class TimeBalanceRecordDto +{ + /// + /// Мех. бурение - 4001 + /// Статический замер - 4002 + /// Наращивание - 4004 + /// Промывка, ОБР - 4012 + /// + public int IdWellOperation { get; set; } + + /// + /// Продолжительность операции, ч + /// + public PlanFactDto? DurationHours { get; set; } + + /// + /// Отклонение за секцию + /// + public double? DrillingDeviationPerSection { get; set; } + + /// + /// Отклонение за сутки + /// + public double? DrillingDeviationPerDaily { get; set; } + + /// + /// Причина отклонения + /// + public string? ReasonDeviation { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/TrajectoryBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/TrajectoryBlockDto.cs new file mode 100644 index 00000000..39e49b54 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/Blocks/TrajectoryBlockDto.cs @@ -0,0 +1,27 @@ +namespace AsbCloudApp.Data.DailyReport.Blocks; + +/// +/// Блок с траекторией скважины +/// +public class TrajectoryBlockDto +{ + /// + /// Глубина по стволу + /// + public double? WellboreDepth { get; set; } + + /// + /// Глубина вертикальная + /// + public double? VerticalDepth { get; set; } + + /// + /// Угол зенитный + /// + public double? ZenithAngle { get; set; } + + /// + /// Азимут Географ. + /// + public double? AzimuthGeo { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs new file mode 100644 index 00000000..9e24997e --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using System.Linq; + +namespace AsbCloudApp.Data.DailyReport.Blocks.WellOperation; + +/// +/// Блок с операциями проводимыми на скважине +/// +public class WellOperationBlockDto +{ + /// + /// Продолжительность бурения за секцию + /// + public double DurationHoursDrillingPerSection { get; set; } + + /// + /// Операции проводимые на скважине + /// + public IEnumerable WellOperations { get; set; } = Enumerable.Empty(); +} \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationRecordDto.cs new file mode 100644 index 00000000..d79c78e6 --- /dev/null +++ b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationRecordDto.cs @@ -0,0 +1,17 @@ +namespace AsbCloudApp.Data.DailyReport.Blocks.WellOperation; + +/// +/// Операция на скважине +/// +public class WellOperationRecordDto +{ + /// + /// Id категории операции + /// + public int? IdWellCategory { get; set; } + + /// + /// Продолжительность операции + /// + public double? DurationHours { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/DailyReportDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportDto.cs index 3ba55718..f4925d16 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportDto.cs @@ -1,45 +1,113 @@ using System; +using System.Collections.Generic; +using System.Linq; +using AsbCloudApp.Data.DailyReport.Blocks; +using AsbCloudApp.Data.DailyReport.Blocks.Sign; +using AsbCloudApp.Data.DailyReport.Blocks.Subsystems; +using AsbCloudApp.Data.DailyReport.Blocks.TimeBalance; +using AsbCloudApp.Data.DailyReport.Blocks.WellOperation; -namespace AsbCloudApp.Data.DailyReport +namespace AsbCloudApp.Data.DailyReport; + +/// +/// Суточный отчёт +/// +public class DailyReportDto : IId, + IWellRelated { - /// - /// Блоки для формирования суточного рапорта - /// - public class DailyReportDto - { - /// - /// дата отчёта - /// - public DateOnly StartDate { get; set; } + /// + public int Id { get; set; } - /// - /// блок заголовка - /// - public HeadDto Head { get; set; } = new(); + /// + public int IdWell { get; set; } - /// - /// блок КНБК - /// - public BhaDto Bha { get; set; } = new(); + /// + /// Название скважины + /// + public string WellName { get; set; } = null!; - /// - /// блок безметражные работы - /// - public NoDrillingDto NoDrilling { get; set; } = new(); + /// + /// Название типа скважины + /// + public string? WellType { get; set; } - /// - /// блок баланса времени - /// - public TimeBalanceDto TimeBalance { get; set; } = new(); + /// + /// Название куста + /// + public string? Cluster { get; set; } - /// - /// блок САУБ - /// - public SaubDto Saub { get; set; } = new(); + /// + /// Заказчик + /// + public string? Customer { get; set; } - /// - /// блок подписи - /// - public SignDto Sign { get; set; } = new(); - } -} + /// + /// Подрядчик + /// + public string? Contractor { get; set; } + + /// + /// Месторождение + /// + public string? Deposit { get; set; } + + /// + /// Глубина забоя на дату начала интервала + /// + public double? DepthStart { get; set; } + + /// + /// Глубина забоя на дату окончания интервала + /// + public double? DepthEnd { get; set; } + + /// + /// Дата последнего обновления + /// + public DateTime? DateLastUpdate { get; set; } + + /// + /// Начальная дата отчёта + /// + public DateTime DateStart { get; set; } + + /// + /// Конечная дата отчёта + /// + public DateTime DateEnd => DateStart.AddHours(24); + + /// + /// Блок фактической траектории + /// + public TrajectoryBlockDto TrajectoryBlock { get; set; } = null!; + + /// + /// Фактические операции + /// + public WellOperationBlockDto FactWellOperationBlock { get; set; } = null!; + + /// + /// Баланс времени + /// + public TimeBalanceBlockDto? TimeBalanceBlock { get; set; } + + /// + /// Наработка подсистем + /// + public SubsystemBlockDto? SubsystemBlock { get; set; } + + /// + /// Подпись + /// + public SignBlockDto? SignBlock { get; set; } + + /// + /// Блок расписания + /// + public IEnumerable ScheduleBlock { get; set; } = Enumerable.Empty(); + + /// + /// РТК + /// + public IEnumerable ProcessMapWellDrillingBlock { get; set; } = Enumerable.Empty(); +} \ No newline at end of file