Организационный объект (сущность)

Доменная сущность Версия: 1.0 changed

Алиасы: Организационный объект (сущность), Организационный объект. parents: [org-object-model].

⟨/⟩ Исходник

Связи

classDiagram
    direction LR
    class OrgObject {
        +Guid id
        +Guid ais_id
        +String name
        +String nav_type_eid
        +Guid nav_type_id
        +Company company_id
        +ExecutiveApparatus ia_id
        +MES mes_id
        +PMES pmes_id
        +Substation substation_id
        +Guid parent_id
    }
    class Company
    class ExecutiveApparatus
    class MES
    class PMES
    class Substation
    OrgObject "1" --> "1" Company : company_id
    OrgObject "0..1" --> "1" ExecutiveApparatus : ia_id
    OrgObject "0..1" --> "1" MES : mes_id
    OrgObject "0..1" --> "1" PMES : pmes_id
    OrgObject "0..1" --> "1" Substation : substation_id

Структура

НаименованиеАтрибутТипОбязательно для созданияДиапазон / форматНеизменяемостьОписание
Идентификатор записиidGuidДаДа
ИД объекта в АИСais_idGuidНетДаИД объекта в АИС ОИА ПЭО
НаименованиеnameStringДа
Тип организационного объектаnav_type_eidStringДа{Company; Ia; Mes; Pmes; Substation}
Тип организационного объекта (ссылка)nav_type_idGuidДаСсылка на запись типа оргобъекта; nav_type_eid — её дискриминатор
Компанияcompany_idCompanyДа
ИАia_idExecutiveApparatusНет
МЭСmes_idMESНет
ПМЭСpmes_idPMESНет
Подстанцияsubstation_idSubstationНет
Вышестоящий организационный объектparent_idGuidНетСсылка на вышестоящий оргобъект в иерархии

Исходник

    public class OrgObject
    {
        /// <summary>Идентификатор записи</summary>
        [DomainField(Alias = "id", RequiredOnCreate = true, Immutable = true)]
        public Guid Id { get; set; }

        /// <summary>ИД объекта в АИС</summary>
        [DomainField(Alias = "ais_id", Description = "ИД объекта в АИС ОИА ПЭО", Immutable = true)]
        public Guid AisId { get; set; }

        /// <summary>Наименование</summary>
        [DomainField(Alias = "name", RequiredOnCreate = true)]
        public string? Name { get; set; }

        /// <summary>Тип организационного объекта</summary>
        [DomainField(Alias = "nav_type_eid", RequiredOnCreate = true, Range = "{Company; Ia; Mes; Pmes; Substation}")]
        public string? NavTypeEid { get; set; }

        /// <summary>Тип организационного объекта (ссылка)</summary>
        [DomainField(
            Alias = "nav_type_id",
            RequiredOnCreate = true,
            Description = "Ссылка на запись типа оргобъекта; `nav_type_eid` — её дискриминатор"
        )]
        public Guid NavTypeId { get; set; }

        /// <summary>Компания</summary>
        [Relation]
        [DomainField(Alias = "company_id", RequiredOnCreate = true)]
        public Company? Company { get; set; }

        /// <summary>ИА</summary>
        [Relation]
        [DomainField(Alias = "ia_id")]
        public ExecutiveApparatus? Ia { get; set; }

        /// <summary>МЭС</summary>
        [Relation]
        [DomainField(Alias = "mes_id")]
        public MES? Mes { get; set; }

        /// <summary>ПМЭС</summary>
        [Relation]
        [DomainField(Alias = "pmes_id")]
        public PMES? Pmes { get; set; }

        /// <summary>Подстанция</summary>
        [Relation]
        [DomainField(Alias = "substation_id")]
        public Substation? Substation { get; set; }

        /// <summary>Вышестоящий организационный объект</summary>
        [DomainField(Alias = "parent_id", Description = "Ссылка на вышестоящий оргобъект в иерархии")]
        public Guid ParentId { get; set; }
    }