Запуск импорта из АИС

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

Запись истории приёма данных из АИС ОИА ПЭО: источник запуска, организационный объект и ТС (для одиночного обновления), статус, счётчики принятых записей по наборам и ошибки.

⟨/⟩ Исходник

1. Назначение

Одна запись — один запуск приёма данных: либо пакетный (со страницы импорта, Импорт данных из АИС ОИА ПЭО), либо по одному ТС (иконка «Обновить из АИС» в карточке, Карточка транспортного средства). Запуски обоих видов пишутся в одну историю и различаются полем «Источник».

Начало запуска — техническая дата создания записи, инициатор — автор создания; собственных полей для них у сущности нет. Запуск создаётся со статусом «Выполняется» и завершается статусом «Успешно» или «С ошибками» с датой завершения.

Связи

classDiagram
    direction LR
    class NtsImportRun {
        +Guid id
        +String source
        +NavEntity nav_id
        +Vehicle vehicle_id
        +NtsImportRunStatus status_id
        +String result_json
        +String errors_json
        +DateTime finished_date
    }
    class NavEntity
    class Vehicle
    class NtsImportRunStatus
    NtsImportRun "1" --> "1" NavEntity : nav_id
    NtsImportRun "0..1" --> "1" Vehicle : vehicle_id
    NtsImportRun "1" --> "1" NtsImportRunStatus : status_id

Структура

НаименованиеАтрибутТипОбязательно для созданияДиапазон / форматЗначение по умолчаниюНеизменяемостьОписание
Идентификатор записиidGuidДаUUIDДа
Источник запускаsourceStringДа{batch; vehicle}Пакетный запуск по организационному объекту или обновление одного ТС из карточки
Организационный объект, по которому выполняется приёмnav_idNavEntityДаДаПакетный запуск — корневая компания; обновление ТС — его владелец
Транспортное средствоvehicle_idVehicleНетЗаполнено только для источника «vehicle»
Статус запускаstatus_idNtsImportRunStatusДа{Выполняется; Успешно; С ошибками}Выполняется
Счётчики принятых записей по наборамresult_jsonStringДаКоличество принятых записей по наборам, JSON
Ошибки запускаerrors_jsonStringДаОшибки запуска, JSON
Дата и время завершения запускаfinished_dateDateTimeНетПусто — запуск выполняется

Исходник

    public class NtsImportRun
    {
        /// <summary>Идентификатор записи</summary>
        [DomainField(Alias = "id", RequiredOnCreate = true, Range = "UUID", Immutable = true)]
        public Guid Id { get; set; }

        /// <summary>Источник запуска</summary>
        [DomainField(Alias = "source", RequiredOnCreate = true, Range = "{batch; vehicle}",
            Description = "Пакетный запуск по организационному объекту или обновление одного ТС из карточки")]
        public string? SourceCode { get; set; }

        /// <summary>Организационный объект, по которому выполняется приём</summary>
        [Relation]
        [DomainField(Alias = "nav_id", RequiredOnCreate = true, Immutable = true,
            Description = "Пакетный запуск — корневая компания; обновление ТС — его владелец")]
        public NavEntity? Nav { get; set; }

        /// <summary>Транспортное средство</summary>
        [Relation]
        [DomainField(Alias = "vehicle_id",
            Description = "Заполнено только для источника «vehicle»")]
        public Vehicle? Vehicle { get; set; }

        /// <summary>Статус запуска</summary>
        [Relation]
        [DomainField(Alias = "status_id", RequiredOnCreate = true, Default = "Выполняется",
            Range = "{Выполняется; Успешно; С ошибками}")]
        public NtsImportRunStatus? Status { get; set; }

        /// <summary>Счётчики принятых записей по наборам</summary>
        [DomainField(Alias = "result_json", RequiredOnCreate = true,
            Description = "Количество принятых записей по наборам, JSON")]
        public string? ResultJson { get; set; }

        /// <summary>Ошибки запуска</summary>
        [DomainField(Alias = "errors_json", RequiredOnCreate = true, Description = "Ошибки запуска, JSON")]
        public string? ErrorsJson { get; set; }

        /// <summary>Дата и время завершения запуска</summary>
        [DomainField(Alias = "finished_date",
            Description = "Пусто — запуск выполняется")]
        public DateTime? FinishedDate { get; set; }
    }

Связанные артефакты

Документы