using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; namespace AsbCloudDb.Model { [Table("t_data_saub_stat"), Comment("Кеш-таблица для хранения данных для РТК-отчета")] public class DataSaubStat : IId { [Key] [Column("id")] public int Id { get; set; } [Column("date_start", TypeName = "timestamp with time zone"), Comment("Дата и время начала")] public DateTimeOffset DateStart { get; set; } [Column("date_end", TypeName = "timestamp with time zone"), Comment("Дата и время окончания")] public DateTimeOffset DateEnd { get; set; } [Column("depth_start"), Comment("Глубина забоя по стволу начальная")] public double DepthStart { get; set; } [Column("depth_end"), Comment("Глубина забоя по стволу конечная")] public double DepthEnd { get; set; } [Column("speed"), Comment("Скорость бурения")] public double Speed { get; set; } [Column("block_speed_sp"), Comment("Ограничение скорости блока")] public double? BlockSpeedSp { get; set; } [Column("pressure"), Comment("Давление")] public double Pressure { get; set; } [Column("pressure_idle"), Comment("Давление холостого хода")] public double? PressureIdle { get; set; } [Column("pressure_sp"), Comment("Ограничение фактического давления")] public double? PressureSp { get; set; } [Column("axial_load"), Comment("Фактическая нагрузка")] public double AxialLoad { get; set; } [Column("axial_load_sp"), Comment("Ограничение факт. нагрузки")] public double? AxialLoadSp { get; set; } [Column("axial_load_limit_max"), Comment("Максимально допустимая нагрузка")] public double? AxialLoadLimitMax { get; set; } [Column("rotor_torque"), Comment("Фактический момент")] public double RotorTorque { get; set; } [Column("rotor_torque_sp"), Comment("Ограничение факт. момента")] public double? RotorTorqueSp { get; set; } [Column("rotor_torque_limit_max"), Comment("Максимально допустимый момент")] public double? RotorTorqueLimitMax { get; set; } [Column("id_feed_regulator"), Comment("Работа при достижении ограничения")] public short? IdFeedRegulator { get; set; } [Column("rotor_speed"), Comment("Фактическая скорость оборотов ВСП")] public double RotorSpeed { get; set; } [Column("id_category"), Comment("Название автоопределённой операции")] public int IdCategory { get; set; } [Column("enabled_subsystems"), Comment("Флаги подсистем")] public int EnabledSubsystems { get; set; } [Column("has_oscillation"), Comment("Наличие или отсутствие осцилляции")] public bool HasOscillation { get; set; } [Column("flow"), Comment("Фактический расход")] public double Flow { get; set; } [Column("id_telemetry"), Comment("Ключ телеметрии")] public int IdTelemetry { get; set; } [ForeignKey(nameof(IdTelemetry))] public virtual Telemetry Telemetry { get; set; } = null!; [JsonIgnore] [ForeignKey(nameof(IdCategory))] public virtual WellOperationCategory OperationCategory { get; set; } = null!; } }