⟨/⟩ Ntr/50_Domain/ActualConsumptionModel/BC_ActualConsumptionModel.cs

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

using Rugrid.Sdaid.Notation.Documents;
using Rugrid.Sdaid.Notation.Glossary;
using Rugrid.Sdaid.Epas.Ntr.Glossary.Terms;

namespace Rugrid.Sdaid.Epas.Ntr.Domain.ActualConsumptionModel
{
    /// <summary>
    /// Доменный модуль фактического потребления: данные учёта потребления зданиями электрической и
    /// тепловой энергии, загружаемые из АИС ОИА ПЭО.
    /// </summary>
    public class BC_ActualConsumptionModel : IBoundedContextModuleDocument, IHasStructuralLinks, IFolder<NtrDomainFolder>
    {
        public SdaidLink[] Links => new[]
        {
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.BuildingModel.DOC_Building>(),
        };

        public static string _refName = "Фактическое потребление";

        public string Name => "Фактическое потребление";

        public string Description =>
            "Доменный модуль фактического потребления ТЭР: данные учёта потребления зданиями электрической и тепловой энергии за месяц.";

        public string Version => "0.1";
        public string Status => "draft";
        public string[] Comments => new string[0];

        public static string Purpose = $"""
            ## Назначение

            Модуль хранит данные учёта: сколько электрической и тепловой энергии от сторонних источников
            потреблено за месяц по данным {GlossaryAnchors.RefTo<AisOiaPeo>(AisOiaPeo.Name)}. Единицы измерения — тыс. кВт·ч
            для электрической энергии, Гкал для тепловой.

            Единица хранения — месячное потребление
            {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Domain.BuildingModel.DOC_Building>()} по виду ТЭР.
            Месяц — наименьшая единица, в которой факт существует в источнике; хранить его
            агрегированным до года нельзя: годовая сумма не разбирается обратно на месяцы, а
            отопительный период приходится на два календарных года.
            В источнике учёт ведётся по точкам учёта здания, но точки учёта — уровень
            {GlossaryAnchors.RefTo<AisOiaPeo>(AisOiaPeo.Name)}: их значения сводятся к зданию при
            загрузке, и в домене Сервиса точка учёта не существует.

            Данные учёта существуют независимо от моделей потребления и энергопрофилей: они не
            создаются Сервисом, не редактируются пользователем и не зависят от того, заведены ли для
            здания расчётные модели.
            """;

        public static string Boundaries = $"""
            ## Границы

            **Модуль не содержит расчётных величин.** Характеристики потребления, полученные расчётом,
            ведутся модулем модели потребления; данные учёта с ними не смешиваются и в расчёт не
            подаются.

            **Справочник учётных периодов — вне модуля.** Период задаётся ссылкой на
            {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Domain.Reference.DOC_Period>()}, который ведётся среди
            прочих справочников Сервиса.

            **Годовые итоги не хранятся.** Итог за год — сумма месяцев, вычисляется при чтении.

            **Сопоставление факта с расчётом — вне модуля.** Сведение учётных величин с расчётными
            происходит при формировании отчётов и в домене не хранится.
            """;

        public static string Composition = $"""
            ## Состав

            Модуль содержит две сущности, по одной на вид ТЭР:
            {SdaidAnchors.RefTo<DOC_EeConsumption>()} и {SdaidAnchors.RefTo<DOC_TeConsumption>()}.
            Структура у них одинакова — здание, год, учётный период, значение потребления — и различны
            единицы измерения. Вид ТЭР задан самой сущностью и отдельным признаком не хранится: в
            источнике каждый ресурс ведётся собственным набором таблиц.
            """;
    }
}