Данный проект демонстрирует прототип сервера для управления находящимся на складах товарами.
По-умолчанию проект стартует с in-memory базой-данных H2, которая сразу наполняется dummy-данными из файла src/main/resources/data.sql. Также реализовано подключение к БД PostgreSQL. Для подключения необходимо настроить через src/main/resources/application.properties предусмотренный раздел, предварительно отключив раздел для H2 Database.
К проекту прилагается POSTMAN-коллекция для ручного тестирования с готовыми JSON-ами, расположена в корне проекта.
Сервер работает посредством REST API. Ниже дано описание эндпоинтов.
Выводит логированный документ по номеру. Структура логированного документа не тождественна оригинальному документу. Для документа выводятся:
- Номер
- Дата
- Тип
- Содержание
Обязательный параметр: docNumber - номер документа
Выводит список всех товаров, зарегистрированных на всех складах. Для товаров показывается следующая информация:
- Артикул
- Наименование
- Цена последней закупки
- Цена последней продажи
Дополнительные параметры:
- name - для выдачи информации по конкретному товару
Выводит остаток товаров на всех складах. Для остатка товаров показывается следующая информация:
- Артикул
- Наименование
- Остаток
Дополнительные параметры:
- warehouse - для выдачи информации по конкретному складу
Принимает документ о поступлении товаров на один конкретный склад. Документ должен быть в формате JSON и содержать следующие поля (все значения передавать строковым типом):
- number - номер документа, должен быть уникальным.
- warehouse - идентификатор склада.
- products - массив, содержащий данные о товарах. В массив разрешается вносить одновременно несколько товаров одного артикула, в этом случае цена и наименование будут взять из последнего товара по списку.
Товары для массива product должны содержать следующие поля:
- vendorCode - уникальный для данного типа товара артикул, целое положительное число со значением не больше 2^63 - 1.
- name - наименование товара. Важно! Если товар с данным артикулом уже существует, то его имя будет перезаписано.
- quantity - количество товара, только целое число больше нуля.
- price - стоимость покупки товара, не отрицательное целое или дробное число чез точку.
Принимает документ о продаже товаров с конкретного склада. Документ должен быть в формате JSON и содержать следующие поля (все значения передавать строковым типом):
- number - номер документа, должен быть уникальным.
- warehouse - идентификатор склада.
- products - массив, содержащий данные о товарах. В массив разрешается вносить одновременно несколько товаров одного артикула, в этом случае цена и наименование будут взять из последнего товара по списку.
Товары для массива product должны содержать следующие поля:
- vendorCode - уникальный для данного типа товара артикул, целое положительное число со значением не больше 2^63 - 1.
- quantity - количество товара, только целое число больше нуля.
- price - стоимость продажи товара, не отрицательное целое или дробное число чез точку.
Принимает документ о перемещении товаров с одного склада на другой. Документ должен быть в формате JSON и содержать следующие поля (все значения передавать строковым типом):
- number - номер документа, должен быть уникальным.
- fromWarehouse - идентификатор склада, ИЗ которого перемещается товар.
- toWarehouse - идентификатор склада, НА который перемещается товар.
- products - массив, содержащий данные о товарах. В массив разрешается вносить одновременно несколько товаров одного артикула, в этом случае цена и наименование будут взять из последнего товара по списку.
Товары для массива product должны содержать следующие поля:
- vendorCode - уникальный для данного типа товара артикул, целое положительное число со значением не больше 2^63 - 1.
- quantity - количество товара, только целое положительное число.
Добавляет новый склад в базу данных. Запрос должен иметь "тело" в формате JSON со следующими полями (все значения передавать строковым типом):
- warehouse - код нового склада.