Комментарии в DTOs

This commit is contained in:
Степанов Дмитрий 2024-09-02 09:43:21 +05:00
parent 13b4486e38
commit cf40bb85a1
6 changed files with 142 additions and 75 deletions

View File

@ -29,4 +29,9 @@ public class DrillerDto : IId
/// Отчество
/// </summary>
public string? Patronymic { get; set; }
/// <summary>
/// Полное имя
/// </summary>
public string FullName => $"{Surname} {Name} {Patronymic}";
}

View File

@ -1,12 +1,21 @@
using AsbCloudApp.Data.Subsystems;
using System.Collections.Generic;
using System.Linq;
namespace AsbCloudApp.Data.WellReport;
//TODO: комментарии
/// <summary>
/// Показатели бурильщиков
/// </summary>
public class DrillerReportDto
{
public ScheduleDto Shedule { get; set; }
/// <summary>
/// Расписание
/// </summary>
public ScheduleDto Shedule { get; set; } = null!;
public IEnumerable<SubsystemStatDto> SubsystemsStat { get; set; }
/// <summary>
/// Наработка подсистем
/// </summary>
public IEnumerable<SubsystemStatDto> SubsystemsStat { get; set; } = Enumerable.Empty<SubsystemStatDto>();
}

View File

@ -1,29 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using AsbCloudApp.Data.ProcessMaps.Report;
namespace AsbCloudApp.Data.WellReport;
namespace AsbCloudApp.Data.WellReport;
//TODO: комментарии
/// <summary>
/// Бурение по уставкам
/// </summary>
public class DrillingBySetpointsDto
{
public DrillingBySetpointsDto(IEnumerable<ProcessMapReportDataSaubStatDto> processMapReport)
{
if (processMapReport.All(x => x.IdWellSectionType != processMapReport.ElementAt(0).IdWellSectionType))
throw new ArgumentException("Not all entries belong to the same well section", nameof(processMapReport));
Pressure = processMapReport.Sum(x => x.DeltaDepth * x.PressureDiff.SetpointUsage / 100),
AxialLoad = processMapReport.Sum(x => x.DeltaDepth * x.AxialLoad.SetpointUsage / 100),
TopDriveTorque = processMapReport.Sum(x => x.DeltaDepth * x.TopDriveTorque.SetpointUsage / 100),
SpeedLimit = processMapReport.Sum(x => x.DeltaDepth * x.SpeedLimit.SetpointUsage / 100)
}
/// <summary>
/// Давление
/// </summary>
public double? Pressure { get; set; }
/// <summary>
/// Нагрузка
/// </summary>
public double? AxialLoad { get; set; }
/// <summary>
/// Момент
/// </summary>
public double? TopDriveTorque { get; set; }
/// <summary>
/// Скорость
/// </summary>
public double? SpeedLimit { get; set; }
}

View File

@ -1,78 +1,87 @@
using AsbCloudApp.Data.ProcessMaps.Operations;
using System;
using System.Collections.Generic;
using System.Linq;
using AsbCloudApp.Data.WellOperation;
namespace AsbCloudApp.Data.WellReport;
namespace AsbCloudApp.Data.WellReport;
//TODO: комментарии
/// <summary>
/// Режим работы
/// </summary>
public class OperatingModeDto
{
public OperatingModeDto(IEnumerable<WellOperationBaseDto> factWellOperations)
{
if (factWellOperations.All(x => x.IdWellSectionType != factWellOperations.ElementAt(0).IdWellSectionType))
throw new ArgumentException("Not all entries belong to the same well section", nameof(factWellOperations));
if (factWellOperations.All(x => x.IdType != 1))
throw new ArgumentException("Invalid list. There are planned operations", nameof(factWellOperations));
DepthStart = factWellOperations.Min(w => w.DepthStart);
DepthEnd = factWellOperations.Max(w => w.DepthEnd);
}
public OperatingModeDto(IEnumerable<ProcessMapPlanRotorDto> processMapPlanRotor)
{
if (processMapPlanRotor.All(x => x.IdWellSectionType != processMapPlanRotor.ElementAt(0).IdWellSectionType))
throw new ArgumentException("Not all entries belong to the same well section", nameof(processMapPlanRotor));
DepthStart = processMapPlanRotor.Min(p => p.DepthStart);
DepthEnd = processMapPlanRotor.Max(p => p.DepthEnd);
RopMin = processMapPlanRotor.Min(p => p.RopMax);
RopMax = processMapPlanRotor.Max(p => p.RopMax);
RopAvg = processMapPlanRotor.Average(p => p.RopMax);
WeightOnBitMin = processMapPlanRotor.Min(p => p.WeightOnBit);
WeightOnBitMax = processMapPlanRotor.Max(p => p.WeightOnBitMax);
WeightOnBitAvg = processMapPlanRotor.Average(p => p.WeightOnBit);
DriveTorqueMin = processMapPlanRotor.Min(p => p.TopDriveTorque);
DriveTorqueMax = processMapPlanRotor.Max(p => p.TopDriveTorqueMax);
DriveTorqueAvg = processMapPlanRotor.Average(p => p.TopDriveTorque);
DifferentialPressureMin = processMapPlanRotor.Min(p => p.DifferentialPressure);
DifferentialPressureMax = processMapPlanRotor.Max(p => p.DifferentialPressureMax);
DifferentialPressureAvg = processMapPlanRotor.Average(p => p.DifferentialPressure);
FrowRateMin = processMapPlanRotor.Min(p => p.FlowRate);
FrowRateMax = processMapPlanRotor.Max(p => p.FlowRateMax);
}
/// <summary>
/// Интервал от
/// </summary>
public double DepthStart { get; set; }
/// <summary>
/// Интервал до
/// </summary>
public double DepthEnd { get; set; }
/// <summary>
/// Скорость проходки мин, м/ч
/// </summary>
public double? RopMin { get; set; }
/// <summary>
/// Скорость проходки максимум, м/ч
/// </summary>
public double? RopMax { get; set; }
/// <summary>
/// Скорость проходки среднее, м/ч
/// </summary>
public double? RopAvg { get; set; }
/// <summary>
/// Нагрузка на долото минимум, т
/// </summary>
public double? WeightOnBitMin { get; set; }
/// <summary>
/// Нагрузка на долото максимум, т
/// </summary>
public double? WeightOnBitMax { get; set; }
/// <summary>
/// Нагрузка на долото среднее, т
/// </summary>
public double? WeightOnBitAvg { get; set; }
/// <summary>
/// Момент минимум, кН*м
/// </summary>
public double? DriveTorqueMin { get; set; }
/// <summary>
/// Момент максимум, кН*м
/// </summary>
public double? DriveTorqueMax { get; set; }
/// <summary>
/// Момент среднее, кН*м
/// </summary>
public double? DriveTorqueAvg { get; set; }
/// <summary>
/// Перепад давления минимум, атм
/// </summary>
public double? DifferentialPressureMin { get; set; }
/// <summary>
/// Перепад давления максимум, атм
/// </summary>
public double? DifferentialPressureMax { get; set; }
/// <summary>
/// Перепад давления среднее, атм
/// </summary>
public double? DifferentialPressureAvg { get; set; }
/// <summary>
/// Q насосов минимум л/с
/// </summary>
public double? FrowRateMin { get; set; }
/// <summary>
/// Q насосов максимум л/с
/// </summary>
public double? FrowRateMax { get; set; }
}

View File

@ -3,14 +3,28 @@ using AsbCloudApp.Data.Subsystems;
namespace AsbCloudApp.Data.WellReport;
//TODO: комментарии
/// <summary>
/// Показатели по секции
/// </summary>
public class SectionReportDto
{
/// <summary>
/// Идентификатор секции
/// </summary>
public int IdSection { get; set; }
public IEnumerable<SubsystemStatDto> SubsystemsStat { get; set; }
/// <summary>
/// Наработка подсистем
/// </summary>
public IEnumerable<SubsystemStatDto> SubsystemsStat { get; set; } = [];
public PlanFactDto<OperatingModeDto>? OperatingMode { get; set; }
/// <summary>
/// Режимы бурения
/// </summary>
public PlanFactDto<OperatingModeDto> OperatingMode { get; set; } = null!;
/// <summary>
/// Бурение по уставкам
/// </summary>
public DrillingBySetpointsDto? DrillingBySetpoints { get; set; }
}

View File

@ -4,26 +4,58 @@ using AsbCloudApp.Data.User;
namespace AsbCloudApp.Data.WellReport;
//TODO: комментарии
/// <summary>
/// Отчёт по скважине
/// </summary>
public class WellReportDto
{
/// <summary>
/// Информация о скважине
/// </summary>
public WellDto Well { get; set; }
/// <summary>
/// Дата начала бурения
/// </summary>
public DateTimeOffset? DateFrom { get; set; }
/// <summary>
/// Дата окончания бурения
/// </summary>
public DateTimeOffset? DateTo { get; set; }
/// <summary>
/// Дни бурения
/// </summary>
public PlanFactDto<double?> Days { get; set; } = null!;
public PlanFactDto<double?> WellBoreDepth { get; set; }
/// <summary>
/// Проектная глубина
/// </summary>
public PlanFactDto<double?> WellBoreDepth { get; set; } = null!;
public PlanFactDto<double?> VerticalDepth { get; set; }
/// <summary>
/// Вертикальная глубина
/// </summary>
public PlanFactDto<double?> VerticalDepth { get; set; } = null!;
/// <summary>
/// Дни бурения без НПВ
/// </summary>
public double WithoutNtpDays { get; set; }
public IEnumerable<ContactDto> Constacts { get; set; }
/// <summary>
/// Контакты
/// </summary>
public IEnumerable<ContactDto> Contacts { get; set; } = [];
public IEnumerable<SectionReportDto> SectionReports { get; set; }
/// <summary>
/// Показатели по секциям
/// </summary>
public IEnumerable<SectionReportDto> SectionReports { get; set; } = [];
public IEnumerable<DrillerReportDto> DrillerReports { get; set; }
/// <summary>
/// Показатели по бурильщикам
/// </summary>
public IEnumerable<DrillerReportDto> DrillerReports { get; set; } = [];
}