Сводная статистика ТС
Агрегирующий read-model по реестру ТС: состояние обработки (количество ТС по каждому статусу обработки) и потребление топлива в разрезе вида топлива (нормативный расход — сумма, максимум, минимум, среднее). Не хранимая сущность, вычисляется по запросу из уже сохранённых данных.
1. Назначение
Сводная статистика — не хранимая сущность, а форма результата агрегирующего запроса по реестру ТС. Вычисляется по запросу (не отчётный движок, не фоновая задача), читает уже сохранённые Транспортное средство и Расчёт ТС, никаких собственных данных не хранит и ничего не пересчитывает.
Используется в двух местах: на главной странице модуля (без фильтра, по всему реестру ТС) и на вкладке «Сведения» организационного объекта (с фильтром по этому объекту). Оба места — один и тот же read-model с разным значением входного фильтра, см. Плашки сводной статистики ТС.
2. Фильтр по организационному объекту
Поле OrgObject — тот же фильтр, что и в Реестр транспортных средств:
не задан — статистика по всему реестру ТС; задан — по ТС этого объекта и, при включённом
«С потомками», подчинённых объектов (ТС числятся за МЭС и ПМЭС). На главной странице
модуля фильтр не задаётся; на вкладке «Сведения» — всегда задаётся объектом вкладки,
переключателя «С потомками» на самой вкладке нет, значение фиксировано как «с потомками»
(сводка по объекту в целом).
3. Группа 1 — состояние обработки
TotalCount — общее количество ТС, отобранных фильтром. ByProcessingStatus — одна
строка Количество ТС по статусу обработки на каждое значение
справочника Статус обработки ТС (состав — там, не повторяется
здесь) — строка выводится всегда, даже если по этому статусу нет ни одного ТС
(Count = 0), чтобы состав плашек не менялся от выборки к выборке.
| Наименование | Атрибут | Тип | Обязательно для создания | Вычисляемый, методика | Диапазон / формат |
|---|---|---|---|---|---|
| Статус обработки | processing_status_id | ProcessingStatus | Да | ||
| Количество ТС | count | Int32 | Нет | Да, количество ТС выборки с этим статусом обработки | целое, ≥ 0 |
4. Группа 2 — потребление топлива, в разрезе вида топлива
ByFuelKind — одна строка Потребление топлива по виду топлива на
каждое значение Вид автомобильного топлива, встретившееся среди ТС, отобранных
фильтром (бензин/дизельное топливо; литры разных видов топлива не складываются — два
самостоятельных разреза). VehicleCount — количество ТС этого вида топлива с успешным
расчётом (CalculationStatus = «Успешно выполнен»), участвующих в агрегации. Нормативный
расход (NormConsumptionSum/Max/Min/Avg) — сумма, максимум, минимум и среднее по полю
VehicleCalc.NormConsumption (итоговый результат расчёта \(Q_н\),
Расчёт ТС) этих ТС; источник — уже сохранённый результат
расчёта, агрегация не обращается к InputModel (контракту входа расчёта, существующему
только во время его выполнения) и не запускает расчёт повторно. ActualConsumption —
зарезервировано на будущее: в домене ЭНТС сейчас нет источника фактических данных по
топливу ТС; поле не вычисляется и не выводится, пока источник не появится. Не путать с
«Фактическое потребление» модуля ЭНЗС (Ntr) — там про тепло/электричество зданий, другая
модель данных, другой модуль.
| Наименование | Атрибут | Тип | Обязательно для создания | Вычисляемый, методика | ЕИ | Диапазон / формат | Описание |
|---|---|---|---|---|---|---|---|
| Вид топлива | fuel_kind_id | FuelKind | Да | Vehicle.FuelKindPrimary — основной вид топлива ТС | |||
| Количество ТС с успешным расчётом | vehicle_count | Int32 | Нет | Да, количество ТС этого вида топлива с CalculationStatus = «Успешно выполнен» | целое, ≥ 0 | ||
| Нормативный расход — сумма, л | norm_consumption_sum | Decimal | Нет | Да, сумма VehicleCalc.NormConsumption по ТС этого вида топлива с успешным расчётом | л | вещественное, ≥ 0 | |
| Нормативный расход — максимум, л | norm_consumption_max | Decimal | Нет | Да, максимум VehicleCalc.NormConsumption по той же выборке | л | вещественное, ≥ 0 | |
| Нормативный расход — минимум, л | norm_consumption_min | Decimal | Нет | Да, минимум VehicleCalc.NormConsumption по той же выборке | л | вещественное, ≥ 0 | |
| Нормативный расход — среднее, л | norm_consumption_avg | Decimal | Нет | Да, среднее VehicleCalc.NormConsumption по той же выборке | л | вещественное, ≥ 0 | |
| Фактический расход, л — зарезервировано | actual_consumption | Decimal | Нет | л | Зарезервировано на будущее: источник фактических данных по топливу ТС в домене ЭНТС не определён; поле не вычисляется |
Связи
classDiagram
direction LR
class VehicleSummaryStatistics {
+NavEntity org_object_id
+Int32 total_count
}
class NavEntity
VehicleSummaryStatistics "0..1" --> "1" NavEntity : org_object_id
Структура
| Наименование | Атрибут | Тип | Обязательно для создания | Вычисляемый, методика | Диапазон / формат | Описание |
|---|---|---|---|---|---|---|
| Организационный объект — фильтр | org_object_id | NavEntity | Нет | Не задан — статистика по всему реестру ТС; задан — по объекту и, при «С потомками», подчинённым объектам | ||
| Всего ТС | total_count | Int32 | Нет | Да, количество ТС, отобранных фильтром `OrgObject` | целое, ≥ 0 |
Исходник
public class VehicleSummaryStatistics
{
/// <summary>Организационный объект — фильтр</summary>
[Relation]
[DomainField(Alias = "org_object_id",
Description = "Не задан — статистика по всему реестру ТС; задан — по объекту и, при «С потомками», подчинённым объектам")]
public NavEntity? OrgObject { get; set; }
/// <summary>Всего ТС</summary>
[DomainField(Alias = "total_count", Range = "целое, ≥ 0",
Calculated = "Да, количество ТС, отобранных фильтром `OrgObject`")]
public int TotalCount { get; set; }
}Структурные связи
Использует
- Доменная сущность Вид автомобильного топлива
- Доменная сущность Организационный объект
- Доменная сущность Расчёт ТС
- Доменная сущность Статус обработки ТС
- Доменная сущность Статус расчёта
- Доменная сущность Транспортное средство
Используется
- Запрос на изменение Сводная статистика ТС (плашки)
- Запрос на изменение Учёт фактического потребления и затрат
- Компонент Плашки сводной статистики ТС
Связанные артефакты
Документы
- Доменная сущность Вид автомобильного топлива
- Доменная сущность Количество ТС по статусу обработки
- Доменная сущность Потребление топлива по виду топлива
- Доменная сущность Расчёт ТС
- Доменная сущность Статус обработки ТС
- Доменная сущность Транспортное средство
- Компонент Плашки сводной статистики ТС
- Экран Реестр транспортных средств