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; }
}
}