Перейти к основному содержимому

Доменная модель

Обзор

КатегорияКоличествоОписание
Entity-классы378JPA-сущности
DTO751Data Transfer Objects
Enum'ы226Перечисления
Типы документов33Наследники BaseDoc

Содержание

РазделОписание
ДокументыИерархия BaseDoc, 33 типа, parent-child связи
СущностиОсновные справочники: склад, товар, сотрудник, мерчант
РегистрыСкладской учёт: StorageRegistry, WorkflowRegistry и др.

Ключевые паттерны доменной модели

Наследование (JOINED)

Все документы наследуют BaseDoc (таблица wms_doc_base), каждый тип имеет свою таблицу с дополнительными полями. Дискриминатор — поле type.

BaseDoc (wms_doc_base)
├── OrderDoc (wms_doc_order)
├── PickingDoc (wms_doc_picking)
├── SupplyDoc (wms_doc_supply)
└── ... (30+ типов)

Аналогично для позиций: BaseDocItem (wms_doc_base_item) → конкретные позиции.

Soft Delete

Все сущности наследуют BaseSoftDeleteEntity:

  • Поле isDeleted (boolean)
  • Hibernate @Filter исключает удалённые записи из запросов
  • Физическое удаление не используется

Аудит (Envers)

  • Аннотация @Audited на сущностях
  • Стратегия ValidityAuditStrategy — временные интервалы валидности
  • История доступна через endpoint /changes

EntityChanges

Механизм отслеживания изменённых полей документа:

  • Перед сохранением снимается snapshot текущих значений
  • После сохранения вычисляется delta
  • Используется для определения, нужно ли пересчитывать движения