Форма и габариты

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

Алиасы: Форма и габариты. parents: [consumption-model-diagram].

⟨/⟩ Исходник

Связи

classDiagram
    direction LR
    class ShapeAndDimensions {
        +Guid id
        +ConsumptionModel consumption_model_id
        +BuildingShape building_shape_id
        +Decimal total_volume
        +Decimal heated_volume
        +Decimal total_area
        +Decimal heated_area
        +Decimal building_height
        +Int32 floor_count
        +CardinalDirection cardinal_direction_id
        +Decimal dimension_a
        +Decimal dimension_b
        +Decimal dimension_c
        +Decimal dimension_d
        +Decimal dimension_e
        +Decimal dimension_f
        +Decimal dimension_g
        +Decimal dimension_h
    }
    class ConsumptionModel
    class BuildingShape
    class CardinalDirection
    ShapeAndDimensions "1" --> "1" ConsumptionModel : consumption_model_id
    ShapeAndDimensions "0..1" --> "1" BuildingShape : building_shape_id
    ShapeAndDimensions "0..1" --> "1" CardinalDirection : cardinal_direction_id

Структура

НаименованиеАтрибутТипОбязательно для созданияТребуется для расчётаЕИДиапазон / форматНеизменяемостьОписание
Идентификатор записиidGuidДаUUIDДаИдентификатор сущности «Форма и габариты».
Модель потребленияconsumption_model_idConsumptionModelДаДаВнешний ключ на корневую модель потребления; подмодуль входит в состав агрегата (1:1).
Форма зданияbuilding_shape_idBuildingShapeНетДаКлассификация геометрической формы; связь на диаграмме «имеет_форму» (* : 1).
Объём общий, м³total_volumeDecimalНетм³Вещественное (15,4) [0; 10000000]Полный объём здания.
Объём отапливаемый, м³heated_volumeDecimalНетДам³Вещественное (15,4) (0; 10000000]Объём отапливаемой части.
Площадь общая, м²total_areaDecimalНетм²Вещественное (15,4) [0; 10000000]Общая площадь
Площадь отапливаемая, м²heated_areaDecimalНетДам²Вещественное (15,4) (0; 10000000]Отапливаемая площадь.
Высота здания, мbuilding_heightDecimalНетДамВещественное (15,4) (0; 100]Высота здания для геометрии.
Этажность надземная, шт.floor_countInt32НетДацелое > 0Число этажей.
Ориентация стороны Аcardinal_direction_idCardinalDirectionНетДаОриентация условной стороны «А» относительно сторон света; связь «ориентация_стороны_А» (* : 1).
Размер по габариту A, мdimension_aDecimalНетДа, если `Форма здания. Код в списке (rect, g, gr, p)`мВещественное (15,4) (0; 1000]Линейный габарит A по схеме выбранной формы здания.
Размер по габариту B, мdimension_bDecimalНетДа, если `Форма здания. Код ов списке (rect, g, gr, p)`мВещественное (15,4) (0; 1000]Линейный габарит B по схеме выбранной формы здания.
Размер по габариту C, мdimension_cDecimalНетДа, если `Форма здания. Код в списке (g, gr, p)`мВещественное (15,4) (0; 1000]Линейный габарит C по схеме выбранной формы здания.
Размер по габариту D, мdimension_dDecimalНетДа, если `Форма здания. Код в списке (g, gr, p)`мВещественное (15,4) (0; 1000]Линейный габарит D по схеме выбранной формы здания.
Размер по габариту E, мdimension_eDecimalНетДа, если `Форма здания. Код в списке (g, gr, p)`мВещественное (15,4) (0; 1000]Линейный габарит E по схеме выбранной формы здания.
Размер по габариту F, мdimension_fDecimalНетДа, если `Форма здания. Код в списке (g, gr, p)`мВещественное (15,4) (0; 1000]Линейный габарит F по схеме выбранной формы здания.
Размер по габариту G, мdimension_gDecimalНетДа, если `Форма здания. Код в списке (p)`мВещественное (15,4) (0; 1000]Линейный габарит G по схеме выбранной формы здания.
Размер по габариту H, мdimension_hDecimalНетДа, если `Форма здания. Код в списке (p)`мВещественное (15,4) (0; 1000]Линейный габарит H по схеме выбранной формы здания.

Исходник

    public class ShapeAndDimensions
    {
        /// <summary>Идентификатор записи</summary>
        [DomainField(
            Alias = "id",
            RequiredOnCreate = true,
            Range = "UUID",
            Description = "Идентификатор сущности «Форма и габариты».",
            Immutable = true
        )]
        public Guid Id { get; set; }

        /// <summary>Модель потребления</summary>
        [Relation]
        [DomainField(
            Alias = "consumption_model_id",
            RequiredOnCreate = true,
            Description = "Внешний ключ на корневую модель потребления; подмодуль входит в состав агрегата (1:1).",
            Immutable = true
        )]
        public ConsumptionModel? ConsumptionModel { get; set; }

        /// <summary>Форма здания</summary>
        [Relation]
        [DomainField(
            Alias = "building_shape_id",
            RequiredForCalc = "Да",
            Description = "Классификация геометрической формы; связь на диаграмме «имеет_форму» (* : 1)."
        )]
        public BuildingShape? BuildingShape { get; set; }

        /// <summary>Объём общий, м³</summary>
        [DomainField(Alias = "total_volume", Unit = "м³", Range = "Вещественное (15,4) [0; 10000000]", Description = "Полный объём здания.")]
        public decimal TotalVolume { get; set; }

        /// <summary>Объём отапливаемый, м³</summary>
        [DomainField(
            Alias = "heated_volume",
            RequiredForCalc = "Да",
            Unit = "м³",
            Range = "Вещественное (15,4) (0; 10000000]",
            Description = "Объём отапливаемой части."
        )]
        public decimal HeatedVolume { get; set; }

        /// <summary>Площадь общая, м²</summary>
        [DomainField(Alias = "total_area", Unit = "м²", Range = "Вещественное (15,4) [0; 10000000]", Description = "Общая площадь")]
        public decimal TotalArea { get; set; }

        /// <summary>Площадь отапливаемая, м²</summary>
        [DomainField(
            Alias = "heated_area",
            RequiredForCalc = "Да",
            Unit = "м²",
            Range = "Вещественное (15,4) (0; 10000000]",
            Description = "Отапливаемая площадь."
        )]
        public decimal HeatedArea { get; set; }

        /// <summary>Высота здания, м</summary>
        [DomainField(
            Alias = "building_height",
            RequiredForCalc = "Да",
            Unit = "м",
            Range = "Вещественное (15,4) (0; 100]",
            Description = "Высота здания для геометрии."
        )]
        public decimal BuildingHeight { get; set; }

        /// <summary>Этажность надземная, шт.</summary>
        [DomainField(Alias = "floor_count", RequiredForCalc = "Да", Range = "целое > 0", Description = "Число этажей.")]
        public int FloorCount { get; set; }

        /// <summary>Ориентация стороны А</summary>
        [Relation]
        [DomainField(
            Alias = "cardinal_direction_id",
            RequiredForCalc = "Да",
            Description = "Ориентация условной стороны «А» относительно сторон света; связь «ориентация_стороны_А» (* : 1)."
        )]
        public CardinalDirection? CardinalDirection { get; set; }

        /// <summary>Размер по габариту A, м</summary>
        [DomainField(
            Alias = "dimension_a",
            RequiredForCalc = "Да, если `Форма здания. Код в списке (rect, g, gr, p)`",
            Unit = "м",
            Range = "Вещественное (15,4) (0; 1000]",
            Description = "Линейный габарит A по схеме выбранной формы здания."
        )]
        public decimal DimensionA { get; set; }

        /// <summary>Размер по габариту B, м</summary>
        [DomainField(
            Alias = "dimension_b",
            RequiredForCalc = "Да, если `Форма здания. Код ов списке (rect, g, gr, p)`",
            Unit = "м",
            Range = "Вещественное (15,4) (0; 1000]",
            Description = "Линейный габарит B по схеме выбранной формы здания."
        )]
        public decimal DimensionB { get; set; }

        /// <summary>Размер по габариту C, м</summary>
        [DomainField(
            Alias = "dimension_c",
            RequiredForCalc = "Да, если `Форма здания. Код в списке (g, gr, p)`",
            Unit = "м",
            Range = "Вещественное (15,4) (0; 1000]",
            Description = "Линейный габарит C по схеме выбранной формы здания."
        )]
        public decimal DimensionC { get; set; }

        /// <summary>Размер по габариту D, м</summary>
        [DomainField(
            Alias = "dimension_d",
            RequiredForCalc = "Да, если `Форма здания. Код в списке (g, gr, p)`",
            Unit = "м",
            Range = "Вещественное (15,4) (0; 1000]",
            Description = "Линейный габарит D по схеме выбранной формы здания."
        )]
        public decimal DimensionD { get; set; }

        /// <summary>Размер по габариту E, м</summary>
        [DomainField(
            Alias = "dimension_e",
            RequiredForCalc = "Да, если `Форма здания. Код в списке (g, gr, p)`",
            Unit = "м",
            Range = "Вещественное (15,4) (0; 1000]",
            Description = "Линейный габарит E по схеме выбранной формы здания."
        )]
        public decimal DimensionE { get; set; }

        /// <summary>Размер по габариту F, м</summary>
        [DomainField(
            Alias = "dimension_f",
            RequiredForCalc = "Да, если `Форма здания. Код в списке (g, gr, p)`",
            Unit = "м",
            Range = "Вещественное (15,4) (0; 1000]",
            Description = "Линейный габарит F по схеме выбранной формы здания."
        )]
        public decimal DimensionF { get; set; }

        /// <summary>Размер по габариту G, м</summary>
        [DomainField(
            Alias = "dimension_g",
            RequiredForCalc = "Да, если `Форма здания. Код в списке (p)`",
            Unit = "м",
            Range = "Вещественное (15,4) (0; 1000]",
            Description = "Линейный габарит G по схеме выбранной формы здания."
        )]
        public decimal DimensionG { get; set; }

        /// <summary>Размер по габариту H, м</summary>
        [DomainField(
            Alias = "dimension_h",
            RequiredForCalc = "Да, если `Форма здания. Код в списке (p)`",
            Unit = "м",
            Range = "Вещественное (15,4) (0; 1000]",
            Description = "Линейный габарит H по схеме выбранной формы здания."
        )]
        public decimal DimensionH { get; set; }
    }