⟨/⟩ Ntr/50_Domain/ConsumptionModel/WallsModel.cs

137 строк · в начало

using System;
using Rugrid.Sdaid.Notation.Documents;

using InsulationMaterial = Rugrid.Sdaid.Epas.Ntr.Domain.Reference.InsulationMaterial;
using Material = Rugrid.Sdaid.Epas.Ntr.Domain.Reference.Material;

namespace Rugrid.Sdaid.Epas.Ntr.Domain.ConsumptionModel
{
    /// <summary>
    /// Доменная сущность. Перенесено дословно из ntr-01/domain/consumption-model/walls-model.md.
    /// </summary>
    public class DOC_WallsModel : IDomainEntityDocument, IHasStructuralLinks, IFolder<NtrDomainFolder>
    {
        public SdaidLink[] Links => new[]
        {
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.ConsumptionModel.DOC_ConsumptionModel>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.Reference.DOC_InsulationMaterial>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.Reference.DOC_Material>(),
        };

        public static string _refName = "Стены";

        public string Name => "Стены";

        public string Description => "Алиасы: Стены. parents: [consumption-model-diagram].";

        public string Version => "1.0";
        public string Status => "accepted";
        public string[] Comments => new string[0];
        public Type Entity => typeof(WallsModel);
    }

    /// <summary>
    /// Доменная сущность «Стены».
    /// Класс — источник структуры: таблица свойств и диаграмма связей на странице документа
    /// строятся генератором по нему. Прозу и разбор ведёт документ DOC_WallsModel.
    /// </summary>
    [DomainEntity]
    public class WallsModel
    {
        /// <summary>Идентификатор записи</summary>
        [DomainField(Alias = "id", RequiredOnCreate = true, Range = "UUID", Immutable = true)]
        public Guid Id { get; set; }

        /// <summary>Модель потребления</summary>
        [Relation]
        [DomainField(Alias = "consumption_model_id", RequiredOnCreate = true)]
        public ConsumptionModel? ConsumptionModel { get; set; }

        /// <summary>Несущий слой: материал</summary>
        [Relation]
        [DomainField(Alias = "carrier_layer_material_id", RequiredForCalc = "Да")]
        public Material? CarrierLayerMaterial { get; set; }

        /// <summary>Несущий слой: толщина, мм</summary>
        [DomainField(Alias = "carrier_layer_thickness", RequiredForCalc = "Да", Unit = "мм", Range = "вещественное > 0")]
        public decimal CarrierLayerThickness { get; set; }

        /// <summary>Основной утеплитель: материал</summary>
        [Relation]
        [DomainField(Alias = "main_insulation_material_id")]
        public InsulationMaterial? MainInsulationMaterial { get; set; }

        /// <summary>Основной утеплитель: толщина, мм</summary>
        [DomainField(
            Alias = "main_insulation_thickness",
            RequiredForCalc = "Да, если указан материал утеплителя.",
            Unit = "мм",
            Range = "вещественное > 0"
        )]
        public decimal MainInsulationThickness { get; set; }

        /// <summary>Дополнительный утеплитель: материал</summary>
        [Relation]
        [DomainField(Alias = "additional_insulation_material_id")]
        public InsulationMaterial? AdditionalInsulationMaterial { get; set; }

        /// <summary>Дополнительный утеплитель: толщина, мм</summary>
        [DomainField(
            Alias = "additional_insulation_thickness",
            RequiredForCalc = "Да, если указан материал утеплителя.",
            Unit = "мм",
            Range = "вещественное > 0"
        )]
        public decimal AdditionalInsulationThickness { get; set; }

        /// <summary>Энергия теплопотерь, кВт·ч</summary>
        [DomainField(
            Alias = "heat_loss_energy_k_kwt_h",
            Calculated = "Да, `methodSectionId: te.component_heat_loss_energy`",
            Unit = "кВт·ч",
            Range = "вещественное ≥ 0"
        )]
        public decimal HeatLossEnergyKKwtH { get; set; }

        /// <summary>Мощность теплопотерь, кВт</summary>
        [DomainField(
            Alias = "heat_loss_power_kwt",
            Calculated = "Да, `methodSectionId: te.transmission_heat_loss_power`",
            Unit = "кВт",
            Range = "вещественное ≥ 0"
        )]
        public decimal HeatLossPowerKwt { get; set; }

        /// <summary>Приведённое сопротивление теплопередаче стен, м²·°C/Вт</summary>
        [DomainField(
            Alias = "walls_thermal_resistance",
            RequiredForCalc = "Да",
            Calculated = "Да, `methodSectionId: te.wall_thermal_resistance`",
            Unit = "м²·°C/Вт",
            Range = "вещественное > 0"
        )]
        public decimal WallsThermalResistance { get; set; }

        /// <summary>Площадь внутренней поверхности, м²</summary>
        [DomainField(
            Alias = "walls_inner_surface_area",
            RequiredForCalc = "Да",
            Calculated = "Да, `methodSectionId: te.inner_wall_surface_area`",
            Unit = "м²",
            Range = "вещественное ≥ 0"
        )]
        public decimal WallsInnerSurfaceArea { get; set; }

        /// <summary>Внутренний периметр</summary>
        [DomainField(
            Alias = "walls_inner_perimeter",
            RequiredForCalc = "Да",
            Calculated = "Да, `methodSectionId: te.inner_wall_perimeter`",
            Unit = "м",
            Range = "вещественное ≥ 0"
        )]
        public decimal WallsInnerPerimeter { get; set; }
    }

}