using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; namespace AsbCloudDb.Model { [Table("t_well_operation_category"), Comment("Справочник операций на скважине")] public class WellOperationCategory : IId { #region constants category operations ids /// <summary> /// БУРЕНИЕ /// </summary> public const int IdDrilling = 3000; /// <summary> /// Непроизводительное время (НПВ) /// </summary> public const int IdNonProductiveTime = 3005; /// <summary> /// Механическое. бурение /// </summary> public const int IdMechanicalDrilling = 4001; /// <summary> /// Разборка КНБК /// </summary> public const int IdBhaDisassembly = 5000; /// <summary> /// Сборка КНБК /// </summary> public const int IdBhaAssembly = 5001; /// <summary> /// Направленно (СЛАЙД) /// </summary> public const int IdSlide = 5002; /// <summary> /// Ротором (РУС) /// </summary> public const int IdRotor = 5003; /// <summary> /// Замер ЗТС (запись MWD) /// </summary> public const int IdStaticSurveying = 5004; /// <summary> /// Промывка перед наращиванием /// </summary> public const int IdFlashingBeforeConnection = 5005; /// <summary> /// Проработка перед наращиванием /// </summary> public const int IdDevelopment = 5007; /// <summary> /// Шаблонировка во время бурения /// </summary> public const int IdTemplatingWhileDrilling = 5008; /// <summary> /// Шаблонировка перед наращиванием /// </summary> public const int IdTemplating = 5009; /// <summary> /// Удержание в клиньях /// </summary> public const int IdSlipsTime = 5011; /// <summary> /// Подъем КНБК /// </summary> public const int IdBhaUp = 5013; /// <summary> /// Спуск КНБК /// </summary> public const int IdBhaDown = 5015; /// <summary> /// Спуск ОК /// </summary> public const int IdCasingDown = 5017; /// <summary> /// Промывка /// </summary> public const int IdFlashing = 5036; /// <summary> /// Ремонт бурового оборудования /// </summary> public const int IdEquipmentRepair = 5058; /// <summary> /// Список всех категорий НПВ /// </summary> public static readonly int[] NonProductiveTimeSubIds = { IdEquipmentRepair, 5059, 5060, 5061, 5062, 5063, 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, 5072, 5073, 5074, 5075, 5076, 5077, 5078, 5079, 5101, 4014, 4015, 4016, 4017, IdNonProductiveTime, }; public static readonly int[] MechanicalDrillingSubIds = { IdRotor, IdSlide, IdMechanicalDrilling, }; #endregion [Key] [Column("id")] public int Id { get; set; } [Column("name"), Comment("Название категории операции")] public string Name { get; set; } = null!; [Column("id_parent"), Comment("id родительской категории")] public int? IdParent { get; set; } [Column("key_value_name"), Comment("Название ключевого показателя операции"), StringLength(32)] public string? KeyValueName { get; set; } [Column("key_value_units"), Comment("Единицы измерения ключевого показателя операции"), StringLength(16)] public string? KeyValueUnits { get; set; } [JsonIgnore] [ForeignKey(nameof(IdParent))] public virtual WellOperationCategory? Parent { get; set; } = null!; } }