diff --git a/AsbCloudApp/Data/ProcessMap/ProcessMapWellboreDevelopmentDto.cs b/AsbCloudApp/Data/ProcessMap/ProcessMapWellboreDevelopmentDto.cs new file mode 100644 index 00000000..d249d734 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMap/ProcessMapWellboreDevelopmentDto.cs @@ -0,0 +1,92 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMap; + +/// +/// Проработка ствола скважины +/// +public class ProcessMapWellboreDevelopmentDto : IId, IWellRelated +{ + /// + public int Id { get; set; } + + /// + public int IdWell { get; set; } + + /// + /// Дата последнего изменения + /// + public DateTimeOffset LastUpdate { get; set; } + + /// + /// Стартовая глубина + /// + [Range(0, 99999.9, ErrorMessage = "Значение стартовой глубины должна быть в пределах от 0 до 99999.9")] + public double DepthStart { get; set; } + + /// + /// Окончательная глубина + /// + [Range(0, 99999.9, ErrorMessage = "Значение окончательной глубины должна быть в пределах от 0 до 99999.9")] + public double DepthEnd { get; set; } + + /// + /// Количество повторений + /// + [Range(0, 100, ErrorMessage = "Значение количества повторений должно быть в пределах от 0 до 100")] + public double Repeats { get; set; } + + /// + /// Вращение вверх, об/мин + /// + [Range(0, 99999.9, ErrorMessage = "Значение количества вращений вверх должно быть в пределах от 0 до 99999.9")] + public double SpinUpward { get; set; } + + /// + /// Вращение вниз, об/мин + /// + [Range(0, 99999.9, ErrorMessage = "Значение количества вращений вниз должно быть в пределах от 0 до 99999.9")] + public double SpinDownward { get; set; } + + /// + /// Скорость подъема, м/ч + /// + [Range(0, 99999.9, ErrorMessage = "Значение скорости подъёма должна быть в пределах от 0 до 99999.9")] + public double SpeedUpward { get; set; } + + /// + /// Скорость спуска, м/ч + /// + [Range(0, 99999.9, ErrorMessage = "Значение скорости спуска должна быть в пределах от 0 до 99999.9")] + public double SpeedDownward { get; set; } + + /// + /// Уставка зятяжки, т + /// + [Range(0, 99999.9, ErrorMessage = "Значение затяжек уставки должно быть в пределах от 0 до 99999.9")] + public double SetpointDrags { get; set; } + + /// + /// Уставка посадки, т + /// + [Range(0, 99999.9, ErrorMessage = "Значение посадки уставки должно быть в пределах от 0 до 99999.9")] + public double SetpointTights { get; set; } + + /// + /// Давление, атм + /// + [Range(0, 99999.9, ErrorMessage = "Значение давления должно быть в пределах от 0 до 99999.9")] + public double Pressure { get; set; } + + /// + /// Момент, кН м + /// + [Range(0, 99999.9, ErrorMessage = "Значение крутящего момента должно быть в пределах от 0 до 99999.9")] + public double Torque { get; set; } + + /// + /// Комментарий + /// + public string? Comment { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Repositories/IProcessMapWellboreDevelopmentRepository.cs b/AsbCloudApp/Repositories/IProcessMapWellboreDevelopmentRepository.cs new file mode 100644 index 00000000..11e8607e --- /dev/null +++ b/AsbCloudApp/Repositories/IProcessMapWellboreDevelopmentRepository.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using AsbCloudApp.Data.ProcessMap; +using AsbCloudApp.Services; + +namespace AsbCloudApp.Repositories; + +/// +/// Репозиторий для проработки скважины +/// +public interface IProcessMapWellboreDevelopmentRepository : IRepositoryWellRelated +{ + /// + /// Получить проработку начиная с даты + /// + /// + /// + /// + /// + Task> GetAllAsync(int idWell, DateTime? updateFrom, CancellationToken cancellationToken); +} \ No newline at end of file diff --git a/AsbCloudApp/Services/IProcessMapWellboreDevelopmentService.cs b/AsbCloudApp/Services/IProcessMapWellboreDevelopmentService.cs new file mode 100644 index 00000000..6a03e957 --- /dev/null +++ b/AsbCloudApp/Services/IProcessMapWellboreDevelopmentService.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using AsbCloudApp.Data.ProcessMap; + +namespace AsbCloudApp.Services; + +/// +/// Сервис для проработок скважины +/// +public interface IProcessMapWellboreDevelopmentService +{ + /// + /// Добавить запись проработки + /// + /// + /// + /// + Task InsertAsync(ProcessMapWellboreDevelopmentDto processMapWellboreDevelopment, CancellationToken cancellationToken); + + /// + /// Обновить запись проработки + /// + /// + /// + /// + Task UpdateAsync(ProcessMapWellboreDevelopmentDto processMapWellboreDevelopment, CancellationToken cancellationToken); + + /// + /// Получить записи проработок по уникальному ключу телеметрии + /// + /// + /// + /// + /// + Task> GetByTelemetryAsync(string uid, DateTime updateFrom, + CancellationToken cancellationToken); +} \ No newline at end of file