forked from ddrilling/AsbCloudServer
merge dev to .
This commit is contained in:
commit
2ce2005e6a
3
.gitignore
vendored
3
.gitignore
vendored
@ -339,4 +339,5 @@ ASALocalRun/
|
||||
.localhistory/
|
||||
|
||||
# BeatPulse healthcheck temp database
|
||||
healthchecksdb
|
||||
healthchecksdb
|
||||
data/
|
@ -12,6 +12,7 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// ИД месторождения, необязательный
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue, ErrorMessage = "Id месторождения не может быть меньше 1")]
|
||||
public int IdDeposit { get; set; }
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
/// <summary>
|
||||
@ -8,11 +10,13 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Макс. механическая скорость проходки по кусту
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double RopMax { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Средняя механическая скорость проходки по кусту
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double RopAverage { get; set; }
|
||||
}
|
||||
}
|
@ -23,6 +23,7 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// ИД типа компании
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdCompanyType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace AsbCloudApp.Data
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// DTO тип компании
|
||||
@ -6,21 +8,25 @@
|
||||
public class CompanyTypeDto : IId
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Название типа компании
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Caption { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Порядок
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Order { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Является ли контактом
|
||||
/// </summary>
|
||||
[Required]
|
||||
public bool IsContact { get; set; }
|
||||
|
||||
}
|
||||
|
@ -1,3 +1,5 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks;
|
||||
|
||||
/// <summary>
|
||||
@ -8,20 +10,23 @@ public class ProcessMapWellDrillingRecordDto
|
||||
/// <summary>
|
||||
/// Режим бурения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string DrillingMode { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Мех. скорость
|
||||
/// </summary>
|
||||
public PlanFactDto<double?> Rop { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Мех. скорость
|
||||
/// </summary>
|
||||
[Required]
|
||||
public PlanFactDto<double?> Rop { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Глубина ствола
|
||||
/// </summary>
|
||||
public double? WellBoreDepth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Часы бурения
|
||||
/// </summary>
|
||||
public double MechDrillingHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Часы бурения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double MechDrillingHours { get; set; }
|
||||
}
|
@ -1,3 +1,5 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks.Sign;
|
||||
|
||||
/// <summary>
|
||||
@ -8,12 +10,14 @@ public class SignRecordDto
|
||||
/// <summary>
|
||||
/// Имя
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Фамилия
|
||||
/// </summary>
|
||||
public string Surname { get; set; } = null!;
|
||||
/// <summary>
|
||||
/// Фамилия
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Surname { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Отчество
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
|
||||
@ -36,5 +37,6 @@ public class SubsystemBlockDto : ItemInfoDto
|
||||
/// <summary>
|
||||
/// Подсистемы
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<SubsystemRecordDto> Subsystems { get; set; } = Enumerable.Empty<SubsystemRecordDto>();
|
||||
}
|
@ -1,3 +1,5 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
|
||||
|
||||
/// <summary>
|
||||
@ -8,6 +10,7 @@ public class SubsystemRecordDto
|
||||
/// <summary>
|
||||
/// Название подсистемы
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data.DailyReport.Blocks.WellOperation;
|
||||
@ -8,13 +9,15 @@ namespace AsbCloudApp.Data.DailyReport.Blocks.WellOperation;
|
||||
/// </summary>
|
||||
public class WellOperationBlockDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Продолжительность бурения за секцию
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// Продолжительность бурения за секцию
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double SectionDrillingHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Операции проводимые на скважине
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<WellOperationRecordDto> WellOperations { get; set; } = Enumerable.Empty<WellOperationRecordDto>();
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using AsbCloudApp.Data.DailyReport.Blocks;
|
||||
using AsbCloudApp.Data.DailyReport.Blocks.Sign;
|
||||
@ -16,15 +17,18 @@ public class DailyReportDto : IId,
|
||||
IWellRelated
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Название скважины
|
||||
/// </summary>
|
||||
public string WellCaption { get; set; } = null!;
|
||||
/// <summary>
|
||||
/// Название скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string WellCaption { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Название типа скважины
|
||||
@ -61,25 +65,28 @@ public class DailyReportDto : IId,
|
||||
/// </summary>
|
||||
public double? DepthEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата формирования отчёта
|
||||
/// </summary>
|
||||
public DateOnly Date { get; set; }
|
||||
/// <summary>
|
||||
/// Дата формирования отчёта
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateOnly Date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата последнего обновления
|
||||
/// </summary>
|
||||
public DateTime? DateLastUpdate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Блок фактической траектории
|
||||
/// </summary>
|
||||
public TrajectoryBlockDto TrajectoryBlock { get; set; } = null!;
|
||||
public DateTime? DateLastUpdate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Фактические операции
|
||||
/// </summary>
|
||||
public WellOperationBlockDto FactWellOperationBlock { get; set; } = null!;
|
||||
/// <summary>
|
||||
/// Блок фактической траектории
|
||||
/// </summary>
|
||||
[Required]
|
||||
public TrajectoryBlockDto TrajectoryBlock { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Фактические операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public WellOperationBlockDto FactWellOperationBlock { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Баланс времени
|
||||
@ -96,13 +103,15 @@ public class DailyReportDto : IId,
|
||||
/// </summary>
|
||||
public SignBlockDto? SignBlock { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Блок расписания
|
||||
/// </summary>
|
||||
public IEnumerable<ScheduleRecordDto> ScheduleBlock { get; set; } = Enumerable.Empty<ScheduleRecordDto>();
|
||||
/// <summary>
|
||||
/// Блок расписания
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<ScheduleRecordDto> ScheduleBlock { get; set; } = Enumerable.Empty<ScheduleRecordDto>();
|
||||
|
||||
/// <summary>
|
||||
/// РТК
|
||||
/// </summary>
|
||||
public IEnumerable<ProcessMapWellDrillingRecordDto> ProcessMapWellDrillingBlock { get; set; } = Enumerable.Empty<ProcessMapWellDrillingRecordDto>();
|
||||
/// <summary>
|
||||
/// РТК
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<ProcessMapWellDrillingRecordDto> ProcessMapWellDrillingBlock { get; set; } = Enumerable.Empty<ProcessMapWellDrillingRecordDto>();
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
@ -10,11 +11,13 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Дата начала диапазона
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime From { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата окончания диапазона
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime To { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
@ -21,6 +22,7 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Кусты месторождения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<ClusterDto> Clusters { get; set; } = Enumerable.Empty<ClusterDto>();
|
||||
}
|
||||
|
||||
@ -32,6 +34,7 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Кусты месторождения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<ClusterBranchDto> Clusters { get; set; } = Enumerable.Empty<ClusterBranchDto>();
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace AsbCloudApp.Data.DetectedOperation
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.DetectedOperation
|
||||
{
|
||||
/// <summary>
|
||||
/// Статистика по операциям бурильщика
|
||||
@ -13,11 +15,13 @@
|
||||
/// <summary>
|
||||
/// Количество операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Count { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Среднее по ключевому показателю
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double AverageValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.DetectedOperation
|
||||
{
|
||||
@ -8,54 +9,65 @@ namespace AsbCloudApp.Data.DetectedOperation
|
||||
public class DetectedOperationDto : IId, IWellRelated
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Id телеметрии
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdTelemetry { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Id названия/описания операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Id пользователя панели
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdUsersAtStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата начала операции в часовом поясе скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime DateStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата завершения операции в часовом поясе скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime DateEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Продолжительность операции в минутах
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double DurationMinutes => (DateEnd - DateStart).TotalMinutes;
|
||||
|
||||
/// <summary>
|
||||
/// глубина на начало операции, м
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double DepthStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// глубина на завершения операции, м
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double DepthEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// название/описание операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public WellOperationCategoryDto OperationCategory { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
@ -76,11 +88,13 @@ namespace AsbCloudApp.Data.DetectedOperation
|
||||
/// <summary>
|
||||
/// Ключевой параметр операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double Value { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Флаг включенной подсистемы
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int EnabledSubsystems { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data.DetectedOperation
|
||||
@ -11,11 +12,13 @@ namespace AsbCloudApp.Data.DetectedOperation
|
||||
/// <summary>
|
||||
/// Список всех операций
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<DetectedOperationDto> Operations { get; set; } = Enumerable.Empty<DetectedOperationDto>();
|
||||
|
||||
/// <summary>
|
||||
/// Статистика по бурильщикам
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<DetectedOperationDrillersStatDto> Stats { get; set; } = Enumerable.Empty<DetectedOperationDrillersStatDto>();
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace AsbCloudApp.Data.DetectedOperation
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.DetectedOperation
|
||||
{
|
||||
/// <summary>
|
||||
/// Статистика по операциям например за период.
|
||||
@ -8,6 +10,7 @@
|
||||
/// <summary>
|
||||
/// Id названия/описания операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -18,41 +21,49 @@
|
||||
/// <summary>
|
||||
/// Количество операций
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Count { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Среднее по ключевому показателю
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double ValueAverage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Мин по ключевому показателю
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double ValueMin { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Макс по ключевому показателю
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double ValueMax { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Суммарное время операций, мин
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double MinutesTotal { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Мин продолжительность операции, мин
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double MinutesMin { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Макс продолжительность операции, мин
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double MinutesMax { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Средняя продолжительность операции, мин
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double MinutesAverage { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.DrillTestReport
|
||||
{
|
||||
@ -10,16 +11,19 @@ namespace AsbCloudApp.Data.DrillTestReport
|
||||
/// <summary>
|
||||
/// Идентификатор отчета
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Проходка
|
||||
/// </summary>
|
||||
[Required]
|
||||
public float DrillDepth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата и время
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime DateTime { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace AsbCloudApp.Data
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// Описание данных для бурильщика
|
||||
@ -8,16 +10,19 @@
|
||||
/// <summary>
|
||||
/// Идентификатор в БД
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Имя
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Фамилия
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Surname { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using AsbCloudApp.Data.User;
|
||||
|
||||
@ -12,11 +13,13 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Название
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// ИД категории файла
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdFileCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -24,26 +27,31 @@ namespace AsbCloudApp.Data
|
||||
/// 1 - approving
|
||||
/// 2 - completely approved
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdState { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Публикаторы. Могут загружать файл этой категории
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<UserDto> Publishers { get; set; } = Enumerable.Empty<UserDto>();
|
||||
|
||||
/// <summary>
|
||||
/// Согласованты. Могут согласовывать загруженные файлы этой категории
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<UserDto> Approvers { get; set; } = Enumerable.Empty<UserDto>();
|
||||
|
||||
/// <summary>
|
||||
/// Разрешение для текущего пользователя согласовывать документ
|
||||
/// </summary>
|
||||
[Required]
|
||||
public bool PermissionToApprove { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Разрешение для текущего пользователя загружать документ
|
||||
/// </summary>
|
||||
[Required]
|
||||
public bool PermissionToUpload { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
@ -14,6 +15,7 @@ namespace AsbCloudApp.Data
|
||||
/// 2 - формируется (несколько минут)
|
||||
/// 3 - готова
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdState { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -25,15 +27,17 @@ namespace AsbCloudApp.Data
|
||||
/// Файл сформированной программы бурения
|
||||
/// </summary>
|
||||
public FileInfoDto? Program { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Разрешение редактировать части программы бурения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public bool PermissionToEdit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Список частей программы бурения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<DrillingProgramPartDto> Parts { get; set; } = Enumerable.Empty<DrillingProgramPartDto>();
|
||||
}
|
||||
|
||||
@ -45,11 +49,13 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Текст ошибки для отображения пользователю
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Message { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Текст ошибки для разработчика
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Exception { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
@ -10,6 +11,7 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// ключ вопроса
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -31,6 +33,7 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// текст вопроса
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Question { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
@ -41,21 +44,25 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// статус вопроса
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int State { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Счетчик повторений вопроса
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int CounterQuestion { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// Частый вопрос
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
[Required]
|
||||
public bool IsFrequently { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Автор вопроса
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string AurhorQuestionName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,17 +1,21 @@
|
||||
namespace AsbCloudApp.Data
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// DTO категории файла
|
||||
/// </summary>
|
||||
public class FileCategoryDto : IId
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// полное название
|
||||
/// </summary>
|
||||
public string Name { get; set; } = string.Empty;
|
||||
[Required]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// сокращенное название
|
||||
|
@ -12,15 +12,18 @@ namespace AsbCloudApp.Data
|
||||
public class FileInfoDto : IId, IWellRelated
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id категории файла
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue, ErrorMessage = "Id категории файла не может быть меньше 1")]
|
||||
public int IdCategory { get; set; }
|
||||
|
||||
@ -32,22 +35,26 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// имя файла
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 260 символов")]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// дата загрузки
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime UploadDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// размер в байтах
|
||||
/// </summary>
|
||||
[Required]
|
||||
public long Size { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Помечен как удаленный
|
||||
/// </summary>
|
||||
[Required]
|
||||
public bool IsDeleted { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -58,6 +65,7 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// список отметок файла
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<FileMarkDto> FileMarks { get; set; } = Enumerable.Empty<FileMarkDto>();
|
||||
}
|
||||
}
|
||||
|
@ -10,11 +10,13 @@ namespace AsbCloudApp.Data
|
||||
public class FileMarkDto: IId
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id файла
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue, ErrorMessage = "Id файла не может быть меньше 1")]
|
||||
public int IdFile { get; set; }
|
||||
|
||||
@ -22,13 +24,15 @@ namespace AsbCloudApp.Data
|
||||
/// 0 - отклонен
|
||||
/// 1 - согласован
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, int.MaxValue, ErrorMessage = "Id категории действия с файлом не может быть меньше 1")]
|
||||
public int IdMarkType { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// дата/время добавления.
|
||||
/// Необязательно указывать в запросе на создание.
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime DateCreated { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -40,6 +44,7 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// признак удаления отметки
|
||||
/// </summary>
|
||||
[Required]
|
||||
public bool IsDeleted { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.GTR
|
||||
{
|
||||
@ -10,21 +11,25 @@ namespace AsbCloudApp.Data.GTR
|
||||
/// <summary>
|
||||
/// Record Id
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdRecord { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Item Id
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdItem { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата создания записи
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime Date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Значение
|
||||
/// </summary>
|
||||
[Required]
|
||||
public JsonValue Value { get; set; } = default!;
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.GTR
|
||||
{
|
||||
@ -11,16 +12,19 @@ namespace AsbCloudApp.Data.GTR
|
||||
/// <summary>
|
||||
/// Id записи
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата создания записи
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime Date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Параметры. Ключ - id_item. ValueContainer содержит значение.
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<int, JsonValue> Items { get; set; } = new();
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
@ -33,11 +34,13 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// идентификатор
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Состояние
|
||||
/// </summary>
|
||||
[Required]
|
||||
public JobState State { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
@ -10,31 +11,37 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Идентификатор скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Время бурения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public float TotalMinutes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина бурения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public float Depth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор критерия бурения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public short IdFeedRegulator { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Наименование критерия бурения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string NameFeedRegulator { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Количество включений
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int NumberInclusions { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -10,32 +10,38 @@ namespace AsbCloudApp.Data
|
||||
public class MeasureDto : IId, IWellRelated
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Id категории замера
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть меньше 1")]
|
||||
public int IdCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// название категории замера
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(120, MinimumLength = 1, ErrorMessage = "Название категории не может быть больше 120 символов")]
|
||||
public string CategoryName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// отметка времени замера
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime Timestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// данные замера
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, object> Data { get; set; } = new();
|
||||
}
|
||||
}
|
||||
|
@ -9,22 +9,26 @@ namespace AsbCloudApp.Data
|
||||
public class MessageDto : IId
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// дата появления события
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime DateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// категория события
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть ниже 1")]
|
||||
public int CategoryId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// глубина забоя, при котором событие возникло
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(-1, int.MaxValue, ErrorMessage = "Id скважины не может быть ниже 1")]
|
||||
public double WellDepth { get; set; }
|
||||
|
||||
@ -36,6 +40,7 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// текст сообщения
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(400, MinimumLength = 1, ErrorMessage = "Допустимая длина текста сообщения от 1 до 400 символов")]
|
||||
public string Message { get; set; } = string.Empty;
|
||||
}
|
||||
|
@ -1,3 +1,5 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data;
|
||||
|
||||
/// <summary>
|
||||
@ -8,10 +10,12 @@ public class NotificationCategoryDto : IId
|
||||
/// <summary>
|
||||
/// Id категории
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Название категории
|
||||
/// </summary>
|
||||
public string Name { get; set; } = null!;
|
||||
/// <summary>
|
||||
/// Название категории
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Name { get; set; } = null!;
|
||||
}
|
@ -11,17 +11,20 @@ public class NotificationDto : IId
|
||||
/// <summary>
|
||||
/// Id уведомления
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Id получателя уведомления
|
||||
/// </summary>
|
||||
public int IdUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Id категории уведомления
|
||||
/// </summary>
|
||||
public int IdNotificationCategory { get; set; }
|
||||
/// <summary>
|
||||
/// Id получателя уведомления
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Id категории уведомления
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdNotificationCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Заголовок уведомления
|
||||
@ -35,10 +38,11 @@ public class NotificationDto : IId
|
||||
[Required, StringLength(2048, MinimumLength = 1, ErrorMessage = "Заголовок должен мыть не меньше 1-го знака и не больше 2048")]
|
||||
public string Message { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Дата регистрации уведомления
|
||||
/// </summary>
|
||||
public DateTime RegistrationDate { get; set; }
|
||||
/// <summary>
|
||||
/// Дата регистрации уведомления
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime RegistrationDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата отправки уведомления
|
||||
@ -50,13 +54,14 @@ public class NotificationDto : IId
|
||||
/// </summary>
|
||||
public DateTime? ReadDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Состояние уведомления
|
||||
/// 0 - Зарегистрировано,
|
||||
/// 1 - Отправлено,
|
||||
/// 2 - Прочитано
|
||||
/// </summary>
|
||||
public int IdState
|
||||
/// <summary>
|
||||
/// Состояние уведомления
|
||||
/// 0 - Зарегистрировано,
|
||||
/// 1 - Отправлено,
|
||||
/// 2 - Прочитано
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdState
|
||||
{
|
||||
get
|
||||
{
|
||||
@ -88,16 +93,18 @@ public class NotificationDto : IId
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Id типа доставки уведомления
|
||||
/// 0 - SignalR
|
||||
/// 1 - Email
|
||||
/// </summary>
|
||||
[Range(0,1)]
|
||||
/// <summary>
|
||||
/// Id типа доставки уведомления
|
||||
/// 0 - SignalR
|
||||
/// 1 - Email
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0,1)]
|
||||
public int IdTransportType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// DTO категории уведомления
|
||||
/// </summary>
|
||||
public NotificationCategoryDto NotificationCategory { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// DTO категории уведомления
|
||||
/// </summary>
|
||||
[Required]
|
||||
public NotificationCategoryDto NotificationCategory { get; set; } = null!;
|
||||
}
|
@ -1,4 +1,6 @@
|
||||
namespace AsbCloudApp.Data
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// Описание целевых/нормативных показателей операций
|
||||
@ -8,36 +10,43 @@
|
||||
/// <summary>
|
||||
/// Идентификатор в БД
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор категории операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdOperationCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Целевой показатель
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double TargetValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Нормативный показатель
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double StandardValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Стартовая глубина
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double DepthStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Конечная глубина
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double DepthEnd { get; set; }
|
||||
|
||||
}
|
||||
|
@ -9,11 +9,13 @@ namespace AsbCloudApp.Data
|
||||
public class PermissionDto : IId
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Название
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия разрешения от 1 до 50 символов")]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
|
@ -12,11 +12,13 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// План
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double Plan { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Максимальное ограничение
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double LimitMax { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -7,11 +7,13 @@ namespace AsbCloudApp.Data.ProcessMaps;
|
||||
public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Id скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
@ -23,6 +25,7 @@ public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
|
||||
/// <summary>
|
||||
/// Тип секции
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(1, int.MaxValue, ErrorMessage = "Id секции скважины не может быть меньше 1")]
|
||||
public int IdWellSectionType { get; set; }
|
||||
|
||||
@ -37,6 +40,7 @@ public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
|
||||
/// на начало интервала
|
||||
/// </para>
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 99999.9, ErrorMessage = "Глубина не может быть отрицательной")]
|
||||
public double DepthStart { get; set; }
|
||||
|
||||
@ -46,6 +50,7 @@ public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
|
||||
/// на конец интервала
|
||||
/// </para>
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 99999.9, ErrorMessage = "Глубина не может быть отрицательной")]
|
||||
public double DepthEnd { get; set; }
|
||||
|
||||
|
@ -10,49 +10,58 @@ public class ProcessMapPlanWellDrillingDto : ProcessMapPlanBaseDto
|
||||
/// <summary>
|
||||
/// Id режима 0-ручной, 1-ротор, 2 - слайд
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 2, ErrorMessage = "Id режима должен быть либо 0-ручной либо, 1-ротор либо 2-слайд")]
|
||||
public int IdMode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Нагрузка
|
||||
/// </summary>
|
||||
[Required]
|
||||
public PlanLimitDto AxialLoad { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Перепад давления
|
||||
/// </summary>
|
||||
[Required]
|
||||
public PlanLimitDto Pressure { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Момент на ВСП
|
||||
/// </summary>
|
||||
[Required]
|
||||
public PlanLimitDto TopDriveTorque { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Обороты на ВСП
|
||||
/// </summary>
|
||||
[Required]
|
||||
public PlanLimitDto TopDriveSpeed { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Расход
|
||||
/// </summary>
|
||||
[Required]
|
||||
public PlanLimitDto Flow { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Плановая механическая скорость, м/ч
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 99999.9, ErrorMessage = "Плановая механическая скорость должно быть в пределах от 0 до 99999.9")]
|
||||
public double RopPlan { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Плановый процент использования АКБ
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 100, ErrorMessage = "Процент использования АКБ должен быть в пределах от 0 до 100")]
|
||||
public double UsageSaub { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Плановый процент использования spin master
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 100, ErrorMessage = "Процент использования spin master должен быть в пределах от 0 до 100")]
|
||||
public double UsageSpin { get; set; }
|
||||
}
|
@ -11,54 +11,63 @@ public class ProcessMapPlanWellReamDto : ProcessMapPlanBaseDto, IValidatableObje
|
||||
/// <summary>
|
||||
/// Количество повторений
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 100, ErrorMessage = "Количество повторений должно быть в пределах от 0 до 100")]
|
||||
public double Repeats { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Вращение при движении вверх, об/мин
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 99999.9, ErrorMessage = "Количество вращений вверх должно быть в пределах от 0 до 99999.9")]
|
||||
public double SpinUpward { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Вращение при движении вниз, об/мин
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 99999.9, ErrorMessage = "Количество вращений вниз должно быть в пределах от 0 до 99999.9")]
|
||||
public double SpinDownward { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Скорость подъёма, м/ч
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 99999.9, ErrorMessage = "Скорость подъёма должна быть в пределах от 0 до 99999.9")]
|
||||
public double SpeedUpward { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Скорость спуска, м/ч
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 99999.9, ErrorMessage = "Скорость спуска должна быть в пределах от 0 до 99999.9")]
|
||||
public double SpeedDownward { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Уставка зятяжки, т
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 99999.9, ErrorMessage = "Значение затяжек уставки должно быть в пределах от 0 до 99999.9")]
|
||||
public double SetpointDrag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Уставка посадки, т
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 99999.9, ErrorMessage = "Значение посадки уставки должно быть в пределах от 0 до 99999.9")]
|
||||
public double SetpointTight { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Давление, атм
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 99999.9, ErrorMessage = "Давление должно быть в пределах от 0 до 99999.9")]
|
||||
public double Pressure { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Момент, кН*м
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 99999.9, ErrorMessage = "Крутящий момент должен быть в пределах от 0 до 99999.9")]
|
||||
public double Torque { get; set; }
|
||||
|
||||
|
@ -14,7 +14,8 @@ public class WellSectionPlanDto : ItemInfoDto,
|
||||
/// <inheritdoc/>
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using AsbCloudApp.Data.User;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
@ -11,11 +12,13 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Id пользователя
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// логин
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Login { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
@ -26,26 +29,31 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// время выполнения запроса
|
||||
/// </summary>
|
||||
[Required]
|
||||
public long ElapsedMs { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// метка времени последнего запроса
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime LastDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// кол-во запросов
|
||||
/// </summary>
|
||||
[Required]
|
||||
public long Requests { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// кол-во ошибок
|
||||
/// </summary>
|
||||
[Required]
|
||||
public long Errors { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// DTO пользователя
|
||||
/// </summary>
|
||||
[Required]
|
||||
public UserDto User { get; set; } = null!;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data.SAUB
|
||||
@ -12,16 +13,19 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// Идентификатор drill test
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Время начала drill test
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTimeOffset TimeStampStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина начала drill test
|
||||
/// </summary>
|
||||
[Required]
|
||||
public float DepthStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -32,6 +36,7 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// Параметры теста
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<DrillTestParamsDto> Params { get; set; } = Enumerable.Empty<DrillTestParamsDto>();
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace AsbCloudApp.Data.SAUB
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.SAUB
|
||||
{
|
||||
/// <summary>
|
||||
/// Параметры Drill Test
|
||||
@ -8,6 +10,7 @@
|
||||
/// <summary>
|
||||
/// Шаг
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Step { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -10,17 +10,20 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// id события
|
||||
/// </summary>
|
||||
[Required]
|
||||
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// шаблон текста сообщения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Message { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// id категории события
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, int.MaxValue, ErrorMessage = "Id категории события не может быть отрицательным")]
|
||||
public int IdCategory { get; set; }
|
||||
|
||||
@ -28,16 +31,18 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// переменная сервера обмена информацией с полевым оборудованием
|
||||
/// </summary>
|
||||
public string Tag { get; set; } = string.Empty;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// тип определения наступления события
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, int.MaxValue, ErrorMessage = "Id типа события не может быть отрицательным")]
|
||||
public int EventType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// флаг, следует ли воспроизводить звук при наступлении события
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdSound { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace AsbCloudApp.Data.SAUB
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.SAUB
|
||||
{
|
||||
/// <summary>
|
||||
/// DTO рекомендации уставок передаваемых на панель оператора
|
||||
@ -13,6 +15,7 @@
|
||||
/// <summary>
|
||||
/// настоящее название уставки (имя переменной в панели оператора)
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
@ -28,11 +31,13 @@
|
||||
/// <summary>
|
||||
/// макс. значение
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double Max { get; set; } = double.MaxValue;
|
||||
|
||||
/// <summary>
|
||||
/// мин значение
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double Min { get; set; } = double.MinValue;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using AsbCloudApp.Data.User;
|
||||
|
||||
namespace AsbCloudApp.Data.SAUB
|
||||
@ -10,19 +11,23 @@ namespace AsbCloudApp.Data.SAUB
|
||||
public class SetpointsRequestDto : IId, IWellRelated
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Id автора запроса
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdAuthor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// текущее состояние запроса 0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdState { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -33,11 +38,13 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// время в секундах актуальности этого запроса
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int ObsolescenceSec { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// набор уставок: {"название переменной панели"; "рекомендуемое значение"}
|
||||
/// </summary>
|
||||
[Required]
|
||||
public Dictionary<string, double> Setpoints { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.SAUB
|
||||
{
|
||||
@ -10,6 +11,7 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// метка времени данных
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime DateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -23,7 +25,8 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// 6 - "ПОДЪЕМ С ПРОРАБОТКОЙ"
|
||||
/// 10 - "БЛОКИРОВКА"
|
||||
/// </summary>
|
||||
public short? Mode { get; set; }
|
||||
[Required]
|
||||
public short Mode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// telemetry id
|
||||
@ -38,17 +41,17 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// Глубина забоя, м
|
||||
/// </summary>
|
||||
public float? WellDepth { get; set; }
|
||||
public float WellDepth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина долота, м
|
||||
/// </summary>
|
||||
public float? BitDepth { get; set; }
|
||||
public float BitDepth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Талевый блок. Положение, м
|
||||
/// </summary>
|
||||
public float? BlockPosition { get; set; }
|
||||
public float BlockPosition { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Талевый блок. Мин положение, м
|
||||
@ -88,7 +91,7 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// Давление, атм
|
||||
/// </summary>
|
||||
public float? Pressure { get; set; }
|
||||
public float Pressure { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Давление при холостом ходе, атм
|
||||
@ -123,7 +126,7 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// осевая нагрузка, т
|
||||
/// </summary>
|
||||
public float? AxialLoad { get; set; }
|
||||
public float AxialLoad { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// задание осевой нагрузки, т
|
||||
@ -138,7 +141,7 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// Вес на крюке, т
|
||||
/// </summary>
|
||||
public float? HookWeight { get; set; }
|
||||
public float HookWeight { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Вес на крюке на х.х., т
|
||||
@ -158,7 +161,7 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// момент ротора, кН*м
|
||||
/// </summary>
|
||||
public float? RotorTorque { get; set; }
|
||||
public float RotorTorque { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// момент ротора на х.х., кН*м
|
||||
@ -178,7 +181,7 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// скорость ротора, об/мин
|
||||
/// </summary>
|
||||
public float? RotorSpeed { get; set; }
|
||||
public float RotorSpeed { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// расход, л/с
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.SAUB
|
||||
{
|
||||
@ -15,17 +16,9 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// Дата
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime DateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата
|
||||
/// </summary>
|
||||
public DateTime Date
|
||||
{
|
||||
get { return DateTime; }
|
||||
set { DateTime = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ограничение числа оборотов вправо
|
||||
/// </summary>
|
||||
@ -79,11 +72,13 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// Осцилляция включена
|
||||
/// </summary>
|
||||
[Required]
|
||||
public bool IsOscillating => State != 0 & State != 6 & State != 7;
|
||||
|
||||
/// <summary>
|
||||
/// Демпфирование включено
|
||||
/// </summary>
|
||||
[Required]
|
||||
public bool IsDampening => State == 7 && (Mode & 2) > 0;
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
@ -8,34 +9,41 @@ namespace AsbCloudApp.Data
|
||||
public class ScheduleDto : IId, IWellRelated
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор бурильщика
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdDriller { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Начало смены
|
||||
/// </summary>
|
||||
[Required]
|
||||
public TimeDto ShiftStart { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Конец смены
|
||||
/// </summary>
|
||||
[Required]
|
||||
public TimeDto ShiftEnd { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Начало бурения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime DrillStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Конец бурения
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime DrillEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -11,42 +11,50 @@ public class SectionByOperationsDto
|
||||
/// <summary>
|
||||
/// Id скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 0 = план или 1 = факт или прогноз = 2
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id секции скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdWellSectionType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина начала первой операции в секции, м
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 50_000)]
|
||||
public double DepthStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата начала первой операции в секции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTimeOffset DateStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина после завершения последней операции в секции, м
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 50_000)]
|
||||
public double DepthEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата после завершения последней операции в секции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTimeOffset DateEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Название
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Caption { get; set; } = string.Empty;
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
@ -9,16 +10,19 @@ namespace AsbCloudApp.Data
|
||||
public class StatClusterDto : IId
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// название куста
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Caption { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// список статистик скважин куста
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<StatWellDto> StatsWells { get; set; } = Enumerable.Empty<StatWellDto>();
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
@ -20,41 +21,49 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Глубина, м
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double WellDepthStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина, м
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double WellDepthEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Рейсовая скорость, м/час
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double RouteSpeed { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Механическая скорость проходки, м/час
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double Rop { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Скорость подъема КНБК
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double BhaUpSpeed { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Скорость спуска КНБК
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double BhaDownSpeed { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Скорость спуска обсадной колонны
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double CasingDownSpeed { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Непроизводительное время
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double NonProductiveHours { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace AsbCloudApp.Data
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// План-факт статистики по операциям за секцию скважины
|
||||
@ -6,11 +8,13 @@
|
||||
public class StatSectionDto : PlanFactDto<StatOperationsDto>, IId
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// название секции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Caption { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
@ -10,46 +11,55 @@ namespace AsbCloudApp.Data
|
||||
public class StatWellDto : IId
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// название
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Caption { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// тип скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string WellType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// ИД состояния скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdState { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// текст состояния скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string State { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// дата прихода последней телеметрии
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime LastTelemetryDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Статистика по секциям
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<StatSectionDto> Sections { get; set; } = Enumerable.Empty<StatSectionDto>();
|
||||
|
||||
/// <summary>
|
||||
/// статистика за всю скважину
|
||||
/// </summary>
|
||||
[Required]
|
||||
public PlanFactDto<StatOperationsDto> Total { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// компании участвующие в строительстве скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<CompanyDto> Companies { get; set; } = Enumerable.Empty<CompanyDto>();
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace AsbCloudApp.Data.Subsystems;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.Subsystems;
|
||||
|
||||
/// <summary>
|
||||
/// Статистика наработки подсистем по активным скважинам
|
||||
@ -8,6 +10,7 @@ public class SubsystemActiveWellStatDto
|
||||
/// <summary>
|
||||
/// Активная скважина
|
||||
/// </summary>
|
||||
[Required]
|
||||
public WellInfoDto Well { get; set; } = null!;
|
||||
/// <summary>
|
||||
/// Наработки подсистемы АПД
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace AsbCloudApp.Data.Subsystems
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.Subsystems
|
||||
{
|
||||
/// <summary>
|
||||
/// Описание параметров подсистемы
|
||||
@ -8,14 +10,17 @@
|
||||
/// <summary>
|
||||
/// Идентификатор подсистемы
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
/// <summary>
|
||||
/// Наименование подсистемы
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Name { get; set; } = null!;
|
||||
/// <summary>
|
||||
/// Детальное описание подсистемы
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Description { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
|
@ -1,42 +1,52 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.Subsystems
|
||||
{
|
||||
/// <summary>
|
||||
/// Статистика подсистемы
|
||||
/// </summary>
|
||||
public class SubsystemStatDto
|
||||
{
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор подсистемы
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdSubsystem { get; set; }
|
||||
/// <summary>
|
||||
/// Название подсистемы
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string SubsystemName { get; set; } = null!;
|
||||
/// <summary>
|
||||
/// наработка подсистемы
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double UsedTimeHours { get; set; }
|
||||
/// <summary>
|
||||
/// коэффициент использования
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double KUsage { get; set; }
|
||||
/// <summary>
|
||||
/// сумма изменения глубин при включеной подсистеме
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double SumDepthInterval { get; set; }
|
||||
/// <summary>
|
||||
/// сумма проходок автоопределенных операций выполняемых подсистемой
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double SumOperationDepthInterval { get; set; }
|
||||
/// <summary>
|
||||
/// сумма продолжительности автоопределенных операций выполняемых подсистемой
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double SumOperationDurationHours { get; set; }
|
||||
/// <summary>
|
||||
/// количество включений подсистемы
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int OperationCount { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.WITS
|
||||
{
|
||||
@ -8,17 +9,20 @@ namespace AsbCloudApp.Data.WITS
|
||||
public abstract class RecordBaseDto : IId, ITelemetryData
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public int IdTelemetry { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public DateTime DateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// îòìåòêà âðåìåíè
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int TimeStamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -33,7 +37,7 @@ namespace AsbCloudApp.Data.WITS
|
||||
/// Length = 16,
|
||||
/// ValueType = "A"
|
||||
/// </summary>
|
||||
|
||||
[Required]
|
||||
public string Wellid { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
@ -11,16 +12,19 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Скважина
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Разрешение для текущего пользователя добавлять ответственных
|
||||
/// </summary>
|
||||
[Required]
|
||||
public bool PermissionToSetPubliher { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Документ дела скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<WellFinalDocumentDto> WellFinalDocuments { get; set; } = Enumerable.Empty<WellFinalDocumentDto>();
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace AsbCloudApp.Data
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// DTO элемент композитной скважины
|
||||
@ -6,16 +8,19 @@
|
||||
public class WellCompositeDto : IWellRelated
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id скважины входящей в композитную для этой
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdWellSrc { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id секции скважины входящей в композитную для этой
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdWellSectionType { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ namespace AsbCloudApp.Data
|
||||
/// 1 - в работе,
|
||||
/// 2 - завершена
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdState { get; set; }
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using AsbCloudApp.Data.User;
|
||||
|
||||
@ -12,6 +13,7 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Идентификатор категории файла
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -22,16 +24,19 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Разрешение для текущего пользователя загружать документ
|
||||
/// </summary>
|
||||
[Required]
|
||||
public bool PermissionToUpload { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Список ответственных
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<UserDto> Publishers { get; set; } = Enumerable.Empty<UserDto>();
|
||||
|
||||
/// <summary>
|
||||
/// Количество файлов этой категории загруженных ранее
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int FilesCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
@ -11,11 +12,13 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Идентификатор категории файла
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Список ответственных
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<int> IdsPublishers { get; set; } = Enumerable.Empty<int>();
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
@ -10,16 +11,19 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// Вышка
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Наименование категории файла
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Файлы
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<FileInfoDto> Files { get; set; } = null!;
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace AsbCloudApp.Data;
|
||||
@ -10,6 +11,7 @@ public class WellGroupOpertionDto
|
||||
/// <summary>
|
||||
/// Id категории
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -26,11 +28,13 @@ public class WellGroupOpertionDto
|
||||
/// <summary>
|
||||
/// Количество операций
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Count { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Суммарное время операций, мин
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double TotalMinutes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -51,6 +55,7 @@ public class WellGroupOpertionDto
|
||||
/// <summary>
|
||||
/// Общая глубина забоя
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double DeltaDepth { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -8,6 +8,7 @@ namespace AsbCloudApp.Data
|
||||
public class WellOperationCategoryDto : IId
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
@ -14,6 +15,7 @@ namespace AsbCloudApp.Data
|
||||
/// <summary>
|
||||
/// коллекция плановых операций
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<WellOperationDto> WellOperationsPlan { get; set; } = Enumerable.Empty<WellOperationDto>();
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,3 +1,5 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data;
|
||||
|
||||
/// <summary>
|
||||
@ -5,18 +7,21 @@ namespace AsbCloudApp.Data;
|
||||
/// </summary>
|
||||
public class WellSectionTypeDto : IId
|
||||
{
|
||||
/// <summary>
|
||||
/// Id секции
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// Id секции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Название типа секции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Caption { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Порядок
|
||||
/// </summary>
|
||||
[Required]
|
||||
public float Order { get; set; }
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data;
|
||||
|
||||
@ -15,30 +16,36 @@ public class WellboreDto
|
||||
/// <summary>
|
||||
/// Идентификатор
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Название
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Начальная глубина ствола
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double DepthStart { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Конечная глубина скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double DepthEnd { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Дата начала первой операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTimeOffset DateStart { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Дата завершения последней операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTimeOffset DateEnd { get; set; }
|
||||
}
|
@ -6,6 +6,8 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
|
||||
namespace AsbCloudInfrastructure.Repository;
|
||||
|
||||
@ -14,10 +16,13 @@ public class FileStorageRepository : IFileStorageRepository
|
||||
/// <summary>
|
||||
/// Директория хранения файлов
|
||||
/// </summary>
|
||||
private readonly string RootPath = "files";
|
||||
|
||||
public FileStorageRepository()
|
||||
public string RootPath { get; }
|
||||
|
||||
|
||||
public FileStorageRepository(IConfiguration configuration)
|
||||
{
|
||||
RootPath = configuration.GetValue<string>("ContentPath") ?? "../data";
|
||||
}
|
||||
|
||||
public async Task SaveFileAsync(string filePathRec, Stream fileStreamSrc, CancellationToken token)
|
||||
|
@ -7,7 +7,6 @@ using AsbCloudApp.Data.SAUB;
|
||||
using AsbCloudApp.Repositories;
|
||||
using AsbCloudApp.Requests;
|
||||
using AsbCloudApp.Services;
|
||||
using AsbCloudInfrastructure.Services.SAUB;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services;
|
||||
|
||||
@ -68,10 +67,10 @@ public class WellboreService : IWellboreService
|
||||
if (dataCache is not null)
|
||||
{
|
||||
wellbore.DateStart = dataCache.Value.First.DateTime;
|
||||
wellbore.DepthStart = dataCache.Value.First.WellDepth!.Value;
|
||||
wellbore.DepthStart = dataCache.Value.First.WellDepth;
|
||||
|
||||
wellbore.DateEnd = dataCache.Value.Last.DateTime;
|
||||
wellbore.DepthEnd = dataCache.Value.Last.WellDepth!.Value;
|
||||
wellbore.DepthEnd = dataCache.Value.Last.WellDepth;
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,7 +123,7 @@ public class WellboreService : IWellboreService
|
||||
if (dataCache is not null)
|
||||
{
|
||||
wellbore.DateEnd = dataCache.Value.Last.DateTime;
|
||||
wellbore.DepthEnd = dataCache.Value.Last.WellDepth!.Value;
|
||||
wellbore.DepthEnd = dataCache.Value.Last.WellDepth;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -13,9 +13,7 @@
|
||||
"LocalConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True"
|
||||
},
|
||||
"AllowedHosts": "*",
|
||||
//"userLimits": {
|
||||
// "parallelRequestsToController": 5
|
||||
//},
|
||||
"ContentPath": "../data",
|
||||
"email": {
|
||||
"smtpServer": "smtp.timeweb.ru",
|
||||
"sender": "bot@digitaldrilling.ru",
|
||||
@ -28,28 +26,5 @@
|
||||
},
|
||||
"DirectoryNameHelpPageFiles": "helpPages",
|
||||
"DirectoryManualFiles": "manuals",
|
||||
"Urls": "http://0.0.0.0:5000" //;https://0.0.0.0:5001" //,
|
||||
// See https man: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-6.0
|
||||
//"Kestrel": {
|
||||
// "Endpoints": {
|
||||
// "Http": {
|
||||
// "Url": "http://0.0.0.0:5000"
|
||||
// },
|
||||
// "Https": {
|
||||
// "Url": "https://0.0.0.0:5001",
|
||||
// "Certificate": {
|
||||
// // use store
|
||||
// "Subject": "localhost",
|
||||
// "Store": "My",
|
||||
// "Location": "CurrentUser",
|
||||
// "AllowInvalid": true
|
||||
|
||||
// // use file
|
||||
// "Path": "<path to .pem/.crt file>",
|
||||
// "KeyPath": "<path to .key file>",
|
||||
// "Password": "<certificate password>"
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
"Urls": "http://0.0.0.0:5000"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user