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

Обзор системы

Назначение

WMS (Warehouse Management System) — система управления складскими операциями. Автоматизирует полный цикл складской логистики: от приёмки товаров до отгрузки заказов.

Технологический стек

Runtime

  • Java 21 — основной язык
  • Spring Boot 3.4.2 — фреймворк
  • Gradle 8.5 — система сборки

Persistence

  • PostgreSQL — основная СУБД
  • Hibernate 6.x — ORM, стратегия наследования JOINED
  • Hibernate Envers — аудит изменений сущностей (ValidityAuditStrategy)
  • Liquibase 4.31 — версионирование схемы БД
  • Caffeine 3.2 — in-memory кеш

Security

  • Spring Security 6 — аутентификация и авторизация
  • JWT (jjwt 0.12.6) — токены для Employee и Merchant API

Отчёты и документы

  • JasperReports 7.0.1 — PDF-отчёты
  • Apache POI 5.4.1 — Excel
  • Apache PDFBox 3.0.5 — работа с PDF
  • Barcode4J — генерация штрихкодов
  • ZPL — этикетки для термопринтеров

Внешние интеграции

  • AWS S3 (Spring Cloud AWS 3.4.0) — хранение файлов
  • Telegram Bots API 6.9.7.1 — уведомления
  • HTTP-клиенты — ERP, ApiShip, сервис серийных номеров

Мониторинг

  • Micrometer — сбор метрик
  • Prometheus — экспорт метрик

Структура проекта

src/main/java/ai/sigmation/wms/
├── WmsApplication.java # Точка входа Spring Boot
├── annotation/ # Кастомные аннотации
├── configuration/ # Конфигурация Spring
│ ├── ApiSecurityConfig.java # 3 security filter chains
│ ├── CacheConfig.java # Caffeine кеши
│ └── filters/ # Security-фильтры
├── controller/ # REST-контроллеры
│ ├── employeeapi/ # Employee API (основной)
│ │ ├── entity/ # Справочники и документы
│ │ └── operation/ # Складские операции
│ ├── merchantapi/ # Merchant API (интеграции)
│ └── systemapi/ # System API (администрирование)
├── model/ # Доменная модель
│ ├── entity/ # 378 JPA-сущностей
│ ├── dto/ # 751 DTO-класс
│ └── enums/ # 226 перечислений
├── repository/ # 209 Spring Data JPA репозиториев
├── service/ # 1009 сервисов
│ ├── entity/ # Управление сущностями
│ │ ├── document/ # Менеджеры документов (34+)
│ │ ├── movement/ # Сервисы движений
│ │ └── view/ # Конструктор форм (Templates)
│ ├── movement/ # Обработка движений
│ ├── picking/ # Алгоритмы отбора
│ ├── replenishment/ # Подпитка
│ ├── order/ # Обработка заказов
│ ├── print/ # Печать (JasperReports)
│ ├── notification/ # Telegram
│ └── security/ # JWT, аутентификация
├── event/ # 103 класса событий
├── exception/ # 7 типов исключений
└── util/ # Утилиты

Статистика кодовой базы

КомпонентКоличество
Entity-классы378
Сервисы1009
Репозитории209
Контроллеры72
DTO751
Enum'ы226
Типы событий103
Типы документов33

Конфигурация

application.properties (ключевые параметры)

# Порт
server.port=30040

# База данных
spring.datasource.url=jdbc:postgresql://localhost/wms

# Liquibase
spring.liquibase.change-log=classpath:/db/changelog/changelog.xml

# Аудит Hibernate Envers
spring.jpa.properties.hibernate.envers.audit_strategy=ValidityAuditStrategy

# Внешние сервисы
wms.serial-number-service.url=http://localhost:30140
wms.erp.url=http://mx-dev-app01.mixit.local
wms.apiship.url=https://api.dev.apiship.ru

application.yaml (метрики и OpenAPI)

Настройки management endpoints (Prometheus), OpenAPI groups (employee-api, merchant-api, system-api).

Локализация

17 файлов .properties в двух языках (ru/en):

ФайлНазначение
entities_ru.propertiesНазвания полей сущностей
enums_ru.propertiesЗначения перечислений
messages_ru.propertiesСообщения об ошибках
validation_ru.propertiesСообщения валидации
available_actions_ru.propertiesДействия в интерфейсе
other_ru.propertiesПрочие строки

Правила: значения отсортированы по ключу (case-insensitive), основной язык — русский.