forked from ddrilling/AsbCloudServer
Dto суточного отчёта
1. Добавлен Dto суточного отчёта 2. Добавлены блок для суточного отчёта
This commit is contained in:
parent
6b0db1adbc
commit
b92acca29b
12
AsbCloudApp/Data/DailyReport/Blocks/EditableBlock.cs
Normal file
12
AsbCloudApp/Data/DailyReport/Blocks/EditableBlock.cs
Normal file
@ -0,0 +1,12 @@
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks;
|
||||
|
||||
/// <summary>
|
||||
/// Базовый класс для редактируемых блоков
|
||||
/// </summary>
|
||||
public abstract class EditableBlock
|
||||
{
|
||||
/// <summary>
|
||||
/// Id пользователя внесшего изменения в блок
|
||||
/// </summary>
|
||||
public int IdUser { get; set; }
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks;
|
||||
|
||||
/// <summary>
|
||||
/// РТК
|
||||
/// </summary>
|
||||
public class ProcessMapWellDrillingRecordDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Id режима бурения
|
||||
/// 1 - ротор
|
||||
/// 2 - слайд
|
||||
/// </summary>
|
||||
public int IdMode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Мех. скорость
|
||||
/// </summary>
|
||||
public PlanFactDto<double?> Rop { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина ствола
|
||||
/// </summary>
|
||||
public double? WellBoreDepth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Часы бурения
|
||||
/// </summary>
|
||||
public double MechDrillingHours { get; set; }
|
||||
}
|
32
AsbCloudApp/Data/DailyReport/Blocks/ScheduleRecordDto.cs
Normal file
32
AsbCloudApp/Data/DailyReport/Blocks/ScheduleRecordDto.cs
Normal file
@ -0,0 +1,32 @@
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks;
|
||||
|
||||
/// <summary>
|
||||
/// Блок с графиком работы
|
||||
/// </summary>
|
||||
public class ScheduleRecordDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Начало смены
|
||||
/// </summary>
|
||||
public TimeDto? ShiftStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Конец смены
|
||||
/// </summary>
|
||||
public TimeDto? ShiftEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Имя бурильщика
|
||||
/// </summary>
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Фамилия бурильщика
|
||||
/// </summary>
|
||||
public string? Surname { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Отчество бурильщика
|
||||
/// </summary>
|
||||
public string? Patronymic { get; set; }
|
||||
}
|
17
AsbCloudApp/Data/DailyReport/Blocks/Sign/SignBlockDto.cs
Normal file
17
AsbCloudApp/Data/DailyReport/Blocks/Sign/SignBlockDto.cs
Normal file
@ -0,0 +1,17 @@
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks.Sign;
|
||||
|
||||
/// <summary>
|
||||
/// Блок с подписями
|
||||
/// </summary>
|
||||
public class SignBlockDto : EditableBlock
|
||||
{
|
||||
/// <summary>
|
||||
/// Подпись мастера буровой
|
||||
/// </summary>
|
||||
public SignRecordDto? DrillingMaster { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Подпись супервайзера
|
||||
/// </summary>
|
||||
public SignRecordDto? Supervisor { get; set; }
|
||||
}
|
28
AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs
Normal file
28
AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs
Normal file
@ -0,0 +1,28 @@
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks.Sign;
|
||||
|
||||
/// <summary>
|
||||
/// Подпись
|
||||
/// </summary>
|
||||
public class SignRecordDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Имя
|
||||
/// </summary>
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Фамилия
|
||||
/// </summary>
|
||||
public string Surname { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Отчество
|
||||
/// </summary>
|
||||
public string? Patronymic { get; set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{Surname} {Name} {Patronymic}";
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
|
||||
|
||||
/// <summary>
|
||||
/// Блок статистики работы подсистем
|
||||
/// </summary>
|
||||
public class SubsystemBlockDto : EditableBlock
|
||||
{
|
||||
/// <summary>
|
||||
/// Длина ствола скважины
|
||||
/// </summary>
|
||||
public double? WellBoreDepth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Кол-во замеров за сутки
|
||||
/// </summary>
|
||||
public double? MeasurementsPerDaily { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Общая плановая мех. скорость
|
||||
/// </summary>
|
||||
public double? TotalRopPlan { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Рекомендации специалиста
|
||||
/// </summary>
|
||||
public string? Comment { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Модули
|
||||
/// </summary>
|
||||
public IEnumerable<SubsystemRecordDto> Modules { get; set; } = Enumerable.Empty<SubsystemRecordDto>();
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
|
||||
|
||||
/// <summary>
|
||||
/// Модуль подсистемы
|
||||
/// </summary>
|
||||
public class SubsystemRecordDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 1 - АПД, ч/м
|
||||
/// 11 - АПД ротор
|
||||
/// 12 - АПД слайд
|
||||
/// 65536 - Осцилляция
|
||||
/// 65537 - Демпфер
|
||||
/// 100000 - Автопроработка
|
||||
/// 100001 - АвтоСПО
|
||||
/// </summary>
|
||||
public int IdSubsystem { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор временного интервала
|
||||
/// 1 - за сутки
|
||||
/// 2 - за скважину
|
||||
/// </summary>
|
||||
[Range(1, 2)]
|
||||
public int IdTimeInterval { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Сумма изменения глубин при включеной подсистеме
|
||||
/// </summary>
|
||||
public double? SumDepthInterval { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Наработка подсистемы
|
||||
/// </summary>
|
||||
public double? UsedTimeHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Коэффициент использования
|
||||
/// </summary>
|
||||
[Range(0, 100)]
|
||||
public double? KUsage { get; set; }
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks.TimeBalance;
|
||||
|
||||
/// <summary>
|
||||
/// Блок с балансом времени
|
||||
/// </summary>
|
||||
public class TimeBalanceBlockDto : EditableBlock
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор секции
|
||||
/// </summary>
|
||||
[Range(1, int.MaxValue)]
|
||||
public int IdSection { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Плановая проходка скважины
|
||||
/// </summary>
|
||||
public double? WellDepthPlan { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Фактическая проходка скважины
|
||||
/// </summary>
|
||||
public double WellDepthFact { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Кол-во наращиваний за сутки
|
||||
/// </summary>
|
||||
public double? CountWellOperationSlipsTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Операции на скважине
|
||||
/// </summary>
|
||||
public IEnumerable<TimeBalanceRecordDto> WellOperations { get; set; } = Enumerable.Empty<TimeBalanceRecordDto>();
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks.TimeBalance;
|
||||
|
||||
/// <summary>
|
||||
/// Операции проводимые на скважине
|
||||
/// </summary>
|
||||
public class TimeBalanceRecordDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Мех. бурение - 4001
|
||||
/// Статический замер - 4002
|
||||
/// Наращивание - 4004
|
||||
/// Промывка, ОБР - 4012
|
||||
/// </summary>
|
||||
public int IdWellOperation { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Продолжительность операции, ч
|
||||
/// </summary>
|
||||
public PlanFactDto<double>? DurationHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Отклонение за секцию
|
||||
/// </summary>
|
||||
public double? DrillingDeviationPerSection { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Отклонение за сутки
|
||||
/// </summary>
|
||||
public double? DrillingDeviationPerDaily { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Причина отклонения
|
||||
/// </summary>
|
||||
public string? ReasonDeviation { get; set; }
|
||||
}
|
27
AsbCloudApp/Data/DailyReport/Blocks/TrajectoryBlockDto.cs
Normal file
27
AsbCloudApp/Data/DailyReport/Blocks/TrajectoryBlockDto.cs
Normal file
@ -0,0 +1,27 @@
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks;
|
||||
|
||||
/// <summary>
|
||||
/// Блок с траекторией скважины
|
||||
/// </summary>
|
||||
public class TrajectoryBlockDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Глубина по стволу
|
||||
/// </summary>
|
||||
public double? WellboreDepth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина вертикальная
|
||||
/// </summary>
|
||||
public double? VerticalDepth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Угол зенитный
|
||||
/// </summary>
|
||||
public double? ZenithAngle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Азимут Географ.
|
||||
/// </summary>
|
||||
public double? AzimuthGeo { get; set; }
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks.WellOperation;
|
||||
|
||||
/// <summary>
|
||||
/// Блок с операциями проводимыми на скважине
|
||||
/// </summary>
|
||||
public class WellOperationBlockDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Продолжительность бурения за секцию
|
||||
/// </summary>
|
||||
public double DurationHoursDrillingPerSection { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Операции проводимые на скважине
|
||||
/// </summary>
|
||||
public IEnumerable<WellOperationRecordDto> WellOperations { get; set; } = Enumerable.Empty<WellOperationRecordDto>();
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks.WellOperation;
|
||||
|
||||
/// <summary>
|
||||
/// Операция на скважине
|
||||
/// </summary>
|
||||
public class WellOperationRecordDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Id категории операции
|
||||
/// </summary>
|
||||
public int? IdWellCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Продолжительность операции
|
||||
/// </summary>
|
||||
public double? DurationHours { get; set; }
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Суточный отчёт
|
||||
/// </summary>
|
||||
public class DailyReportDto : IId,
|
||||
IWellRelated
|
||||
{
|
||||
/// <summary>
|
||||
/// Блоки для формирования суточного рапорта
|
||||
/// </summary>
|
||||
public class DailyReportDto
|
||||
{
|
||||
/// <summary>
|
||||
/// дата отчёта
|
||||
/// </summary>
|
||||
public DateOnly StartDate { get; set; }
|
||||
/// <inheritdoc/>
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// блок заголовка
|
||||
/// </summary>
|
||||
public HeadDto Head { get; set; } = new();
|
||||
/// <inheritdoc/>
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// блок КНБК
|
||||
/// </summary>
|
||||
public BhaDto Bha { get; set; } = new();
|
||||
/// <summary>
|
||||
/// Название скважины
|
||||
/// </summary>
|
||||
public string WellName { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// блок безметражные работы
|
||||
/// </summary>
|
||||
public NoDrillingDto NoDrilling { get; set; } = new();
|
||||
/// <summary>
|
||||
/// Название типа скважины
|
||||
/// </summary>
|
||||
public string? WellType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// блок баланса времени
|
||||
/// </summary>
|
||||
public TimeBalanceDto TimeBalance { get; set; } = new();
|
||||
/// <summary>
|
||||
/// Название куста
|
||||
/// </summary>
|
||||
public string? Cluster { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// блок САУБ
|
||||
/// </summary>
|
||||
public SaubDto Saub { get; set; } = new();
|
||||
/// <summary>
|
||||
/// Заказчик
|
||||
/// </summary>
|
||||
public string? Customer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// блок подписи
|
||||
/// </summary>
|
||||
public SignDto Sign { get; set; } = new();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Подрядчик
|
||||
/// </summary>
|
||||
public string? Contractor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Месторождение
|
||||
/// </summary>
|
||||
public string? Deposit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина забоя на дату начала интервала
|
||||
/// </summary>
|
||||
public double? DepthStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина забоя на дату окончания интервала
|
||||
/// </summary>
|
||||
public double? DepthEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата последнего обновления
|
||||
/// </summary>
|
||||
public DateTime? DateLastUpdate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Начальная дата отчёта
|
||||
/// </summary>
|
||||
public DateTime DateStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Конечная дата отчёта
|
||||
/// </summary>
|
||||
public DateTime DateEnd => DateStart.AddHours(24);
|
||||
|
||||
/// <summary>
|
||||
/// Блок фактической траектории
|
||||
/// </summary>
|
||||
public TrajectoryBlockDto TrajectoryBlock { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Фактические операции
|
||||
/// </summary>
|
||||
public WellOperationBlockDto FactWellOperationBlock { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Баланс времени
|
||||
/// </summary>
|
||||
public TimeBalanceBlockDto? TimeBalanceBlock { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Наработка подсистем
|
||||
/// </summary>
|
||||
public SubsystemBlockDto? SubsystemBlock { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Подпись
|
||||
/// </summary>
|
||||
public SignBlockDto? SignBlock { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Блок расписания
|
||||
/// </summary>
|
||||
public IEnumerable<ScheduleRecordDto> ScheduleBlock { get; set; } = Enumerable.Empty<ScheduleRecordDto>();
|
||||
|
||||
/// <summary>
|
||||
/// РТК
|
||||
/// </summary>
|
||||
public IEnumerable<ProcessMapWellDrillingRecordDto> ProcessMapWellDrillingBlock { get; set; } = Enumerable.Empty<ProcessMapWellDrillingRecordDto>();
|
||||
}
|
Loading…
Reference in New Issue
Block a user