Энергопрофиль

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

Алиасы: Энергопрофиль, Энергопрофиль здания. parents: [energy-profile-diagram].

⟨/⟩ Исходник

Поведение:

При сохранении Энергопрофиля необходимо выполнять Проверить энергопрофиль:

**Условия, обязательные для сохранения Энергопрофиля:

Если условия выполняются, сохранить ЭП, перейти в режим просмотра. Если нет, подсветить ошибку: сообщить об ошибке, предупредить, что при сохранении статус ЭП будет сброшен в Формируется, предложить: отменить, выполнить.

Связи

classDiagram
    direction LR
    class EnergyProfile {
        +Guid id
        +EnergyProfileCollectionTask energy_profile_collection_task_id
        +Building building_id
        +String name
        +ConsumptionModel normative_calculation_model_id
        +ConsumptionModel standard_calculation_model_id
        +ConsumptionModel technological_calculation_model_id
        +ConsumptionModel custom_calculation_model_id
        +EnergyProfileStatus status_id
        +ModelConsistencyStatus model_consistency_status_id
    }
    class EnergyProfileCollectionTask
    class Building
    class ConsumptionModel
    class EnergyProfileStatus
    class ModelConsistencyStatus
    EnergyProfile "1" --> "1" EnergyProfileCollectionTask : energy_profile_collection_task_id
    EnergyProfile "1" --> "1" Building : building_id
    EnergyProfile "0..1" --> "1" ConsumptionModel : normative_calculation_model_id
    EnergyProfile "0..1" --> "1" ConsumptionModel : standard_calculation_model_id
    EnergyProfile "0..1" --> "1" ConsumptionModel : technological_calculation_model_id
    EnergyProfile "0..1" --> "1" ConsumptionModel : custom_calculation_model_id
    EnergyProfile "1" --> "1" EnergyProfileStatus : status_id
    EnergyProfile "1" --> "1" ModelConsistencyStatus : model_consistency_status_id

Структура

НаименованиеАтрибутТипОбязательно для созданияВычисляемый, методикаДиапазон / форматЗначение по умолчаниюНеизменяемостьОписание
Идентификатор записиidGuidДаДа
Задание на сбор энергопрофилейenergy_profile_collection_task_idEnergyProfileCollectionTaskДаДа
Зданиеbuilding_idBuildingДаДа
НаименованиеnameStringНетДа, вычисляется при чтении / на UI; не хранится. Формула: "{FK → Здание. Наименование} ({FK → Задание на сбор энергопрофилей. Год начала отчётного периода}-{Задание на сбор энергопрофилей. Год окончания отчётного периода})" Пример: Гараж №1 (2026-2026)
Модель нормативного расчётаnormative_calculation_model_idConsumptionModelНетЕсли выбрана, то может быть только модель с Вид расчёта == Нормативный
Модель эталонного расчётаstandard_calculation_model_idConsumptionModelНетЕсли выбрана, то может быть только модель с Вид расчёта == Эталонный
Модель технологического расчётаtechnological_calculation_model_idConsumptionModelНетЕсли выбрана, то может быть только модель с Вид расчёта == Технологический
Модель произвольного расчётаcustom_calculation_model_idConsumptionModelНетЕсли выбрана, то может быть только модель с Вид расчёта == Произвольный
Статус энергопрофиляstatus_idEnergyProfileStatusДа{Формируется; Сформирован}ФормируетсяУстанавливается пользователем
Статус выполнения условий расчётовmodel_consistency_status_idModelConsistencyStatusДаДа{Выполнены; Не выполнены}.Не выполненыВычисляется автоматически

Исходник

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

        /// <summary>Задание на сбор энергопрофилей</summary>
        [Relation]
        [DomainField(Alias = "energy_profile_collection_task_id", RequiredOnCreate = true, Immutable = true)]
        public EnergyProfileCollectionTask? EnergyProfileCollectionTask { get; set; }

        /// <summary>Здание</summary>
        [Relation]
        [DomainField(Alias = "building_id", RequiredOnCreate = true, Immutable = true)]
        public Building? Building { get; set; }

        /// <summary>Наименование</summary>
        [DomainField(
            Alias = "name",
            Calculated = "Да, вычисляется при чтении / на UI; не хранится. Формула: \"{FK → Здание. Наименование} ({FK → Задание на сбор энергопрофилей. Год начала отчётного периода}-{Задание на сбор энергопрофилей. Год окончания отчётного периода})\" Пример: Гараж №1 (2026-2026)"
        )]
        public string? Name { get; set; }

        /// <summary>Модель нормативного расчёта</summary>
        [Relation]
        [DomainField(Alias = "normative_calculation_model_id", Range = "Если выбрана, то может быть только модель с `Вид расчёта` == `Нормативный`")]
        public ConsumptionModelEntity? NormativeCalculationModel { get; set; }

        /// <summary>Модель эталонного расчёта</summary>
        [Relation]
        [DomainField(Alias = "standard_calculation_model_id", Range = "Если выбрана, то может быть только модель с `Вид расчёта` == `Эталонный`")]
        public ConsumptionModelEntity? StandardCalculationModel { get; set; }

        /// <summary>Модель технологического расчёта</summary>
        [Relation]
        [DomainField(
            Alias = "technological_calculation_model_id",
            Range = "Если выбрана, то может быть только модель с `Вид расчёта` == `Технологический`"
        )]
        public ConsumptionModelEntity? TechnologicalCalculationModel { get; set; }

        /// <summary>Модель произвольного расчёта</summary>
        [Relation]
        [DomainField(Alias = "custom_calculation_model_id", Range = "Если выбрана, то может быть только модель с `Вид расчёта` == `Произвольный`")]
        public ConsumptionModelEntity? CustomCalculationModel { get; set; }

        /// <summary>Статус энергопрофиля</summary>
        [Relation]
        [DomainField(
            Alias = "status_id",
            RequiredOnCreate = true,
            Range = "{Формируется; Сформирован}",
            Default = "Формируется",
            Description = "Устанавливается пользователем"
        )]
        public EnergyProfileStatus? Status { get; set; }

        /// <summary>Статус выполнения условий расчётов</summary>
        [Relation]
        [DomainField(
            Alias = "model_consistency_status_id",
            RequiredOnCreate = true,
            Calculated = "Да",
            Range = "{Выполнены; Не выполнены}.",
            Default = "Не выполнены",
            Description = "Вычисляется автоматически"
        )]
        public ModelConsistencyStatus? ModelConsistencyStatus { get; set; }
    }

Связанные артефакты

Документы