102 строк · в начало
using System;
using Rugrid.Sdaid.Notation.Documents;
namespace Rugrid.Sdaid.Epas.Ntr.Domain.OrgObjectModel
{
/// <summary>
/// Доменная сущность. Перенесено дословно из ntr-01/domain/org-object-model/org-object.md.
/// </summary>
public class DOC_OrgObject : IDomainEntityDocument, IHasStructuralLinks, IFolder<NtrDomainFolder>
{
public SdaidLink[] Links => new[]
{
Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.OrgObjectModel.DOC_Company>(),
Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.OrgObjectModel.DOC_ExecutiveApparatus>(),
Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.OrgObjectModel.DOC_MES>(),
Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.OrgObjectModel.DOC_PMES>(),
Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.OrgObjectModel.DOC_Substation>(),
};
public static string _refName = "Организационный объект (сущность)";
public string Name => "Организационный объект (сущность)";
public string Description => "Алиасы: Организационный объект (сущность), Организационный объект. parents: [org-object-model].";
public string Version => "1.0";
public string Status => "changed";
public string[] Comments => new[]
{
"2026-08-31, фаза 5 миграции (сверка спеки с реализацией): в таблицу свойств добавлены атрибуты, которые есть в БД, но не были описаны в спеке.",
};
public Type Entity => typeof(OrgObject);
}
/// <summary>
/// Доменная сущность «Организационный объект (сущность)».
/// Класс — источник структуры: таблица свойств и диаграмма связей на странице документа
/// строятся генератором по нему. Прозу и разбор ведёт документ DOC_OrgObject.
/// </summary>
[DomainEntity]
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; }
}
}