Продажа песчано-гравийной смеси (1.0.0)

Описание

Разработать приложение, решающее задачу по управлению списком актов отгрузки песчано-гравийной смеси (ПГС).

Данные

Приложение считывает все данные из соответствующих CSV-файлов (разделитель – запятая) при старте приложения.

Список актов отгрузки ПГС

Имя файла с исходными данными передаётся приложению с ключом --swg-file

Id,Title,SWG,Measure,Count,Price,Cost,ShipmentDateTime,DumpTruck,Washing
de42a00f-7f43-4d10-808d-bee47fdeef49,Песчано-гравийная смесь (ПГС),Песок речной,т,36,640,22.3488,"2024-01-01T00:00:00",accfe76f-9a9e-4cb4-8876-d36daa22f924,True
2b52fcb1-34ec-48d2-95f2-b79f2d9c3c70,Песчано-гравийная смесь (ПГС),Щебень гранитный,м3,14,2660,36.1228,"2024-01-01T00:00:00",accfe76f-9a9e-4cb4-8876-d36daa22f924,True

Список самосвалов

Имя файла с исходными данными передаётся приложению с ключом --dump-trucks-file

Id,Model,Registration,Capacity,Volume
accfe76f-9a9e-4cb4-8876-d36daa22f924,KAMAZ-65951-СА,Д903ЧН,36.0,25
f8741785-4986-41ab-85d3-8b2fe522f9ed,МАЗ 5516А8-336,Э723ВЛ,37.0,26

Запуск приложения

Приложение запускается с помощью системы сборки Gradle, обязательные параметры:

  • --swg-file – имя файла с данными приложения
  • --dump-trucks-file – имя файла с данными приложения
  • --port – порт, по которому доступен веб-сервер
  ./gradlew run --args="--swg-file ../sample-data/swg.csv --dump-trucks-file ../sample-data/trucks.csv --port 9000"

Веб-сервер запускается и работает только при получении корректных значений всех параметров. При некорректном значении хотя бы одного параметра приложение выводит соответствующее сообщение об ошибке и завершает работу с ненулевым кодом возврата.

  Error: missing option --swg-file
  Error: file not found «abc.csv»

Базовые маршруты

Маршруты проверки работоспособности веб-сервера

Проверка, запущен ли веб-сервер

Маршрут обязательно должен быть реализован, при отсутствии приложение не будет проверяться.

Responses

ПГС

Методы, связанные со списком отгрузок ПГС

Получение списка ПГС

Список должен быть упорядочен по возрастанию даты и времени отгрузки и id.

query Parameters
page
integer >= 1
Default: 1
Example: page=1

Номер страницы.

Если номер превышает максимально возможный, приложение возвращает пустой список.

Если номер передан и не является натуральным числом, приложение возвращает сообщение об ошибке.

records-per-page
integer
Default: 10
Enum: 5 10 20 50
Example: records-per-page=10

Количество записей на странице.

Если количество передано и не входит в указанный набор значений, приложение возвращает сообщение об ошибке.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Получение информации о ПГС

path Parameters
shipment-id
required
string <UUID>
Example: de42a00f-7f43-4d10-808d-bee47fdeef49

идентификатор акта отгрузки ПГС

Responses

Response samples

Content type
application/json
{
  • "Id": "de42a00f-7f43-4d10-808d-bee47fdeef49",
  • "Title": "Песчано-гравийная смесь (ПГС)",
  • "SWG": "Песок речной",
  • "Measure": "м3",
  • "Count": 36,
  • "Price": 640,
  • "Cost": 22.3488,
  • "ShipmentDateTime": "2024-01-01T00:00:00",
  • "Model": "KAMAZ-65951-СА",
  • "Registration": "Д903ЧН",
  • "Washing": true
}

Получение списка отгрузок по типу ПГС

Список должен быть упорядочен по убыванию даты и времени отгрузки и возрастанию идентификатора

query Parameters
by-swg-type
required
string (Swg-type)
Enum: "Песок речной" "Песок карьерный" "Щебень гранитный" "Щебень гравийный" "Щебень шлаковый" "Песчано-гравийная смесь"
Example: by-swg-type=Щебень гравийный

тип ПГС

page
integer >= 1
Default: 1
Example: page=1

Номер страницы.

Если номер превышает максимально возможный, приложение возвращает пустой список.

Если номер передан и не является натуральным числом, приложение возвращает сообщение об ошибке.

records-per-page
integer
Default: 10
Enum: 5 10 20 50
Example: records-per-page=10

Количество записей на странице.

Если количество передано и не входит в указанный набор значений, приложение возвращает сообщение об ошибке.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Получение списка отгрузок за период

Список должен быть упорядочен по возрастанию даты и времени отгрузки и id.

query Parameters
from
required
string <date>
Example: from=2024-01-01

Начало периода (дата отгрузки ≥ начало периода)

to
required
string <date>
Example: to=2024-02-01

Окончание периода (дата отгрузки ≤ окончание периода)

page
integer >= 1
Default: 1
Example: page=1

Номер страницы.

Если номер превышает максимально возможный, приложение возвращает пустой список.

Если номер передан и не является натуральным числом, приложение возвращает сообщение об ошибке.

records-per-page
integer
Default: 10
Enum: 5 10 20 50
Example: records-per-page=10

Количество записей на странице.

Если количество передано и не входит в указанный набор значений, приложение возвращает сообщение об ошибке.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Получение отчётной информации по объёму загрузки

Список должен содержать только те месяцы, для которых есть данные, и быть упорядочен по номеру месяца.

query Parameters
year
required
integer >= 2000
Example: year=2024

отчётный год

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Самосвалы

Методы, связанные со списком самосвалов

Получение информации о самосвале

path Parameters
dump-truck-id
required
string <UUID>
Example: accfe76f-9a9e-4cb4-8876-d36daa22f924

идентификатор самосвала

Responses

Response samples

Content type
application/json
{
  • "Id": "accfe76f-9a9e-4cb4-8876-d36daa22f924",
  • "Model": "KAMAZ-65951-СА",
  • "Registration": "Д903ЧН",
  • "Capacity": 32.5,
  • "Volume": 25,
  • "Shipments": [
    ]
}

Акт отгрузки ПГС (Swg)

Id
string <UUID>

идентификатор акта отгрузки ПГС

Title
string

Наименование ПГС

SWG
string (Swg-type)
Enum: "Песок речной" "Песок карьерный" "Щебень гранитный" "Щебень гравийный" "Щебень шлаковый" "Песчано-гравийная смесь"
Тип ПГС Насыпная плотность (т/м3)
Песок речной 1.5
Песок карьерный 1.5
Щебень гранитный 1.4
Щебень гравийный 1.43
Щебень шлаковый 1.17
Песчано-гравийная смесь 1.6
Measure
string (Swg-measure)
Enum: "м3" "т"

Единица измерения

Count
number <double> > 0

Отгруженное количество

Price
number <double> > 0

Цена за ед. измерения (руб.)

Cost
number <double> > 0

Стоимость (тыс. руб.)

ShipmentDateTime
string <date-time>

Дата и время отгрузки

DumpTruck
string <UUID>

Транспортное средство, на которое осуществлялась отгрузка (соответствует DumpTruck→Id)

Washing
boolean

Была ли оказана услуга мытья ТС?

{
  • "Id": "de42a00f-7f43-4d10-808d-bee47fdeef49",
  • "Title": "Песчано-гравийная смесь (ПГС)",
  • "SWG": "Песок речной",
  • "Measure": "м3",
  • "Count": 36,
  • "Price": 640,
  • "Cost": 22.3488,
  • "ShipmentDateTime": "2024-01-01T00:00:00",
  • "DumpTruck": "accfe76f-9a9e-4cb4-8876-d36daa22f924",
  • "Washing": true
}

Самосвал (DumpTruck)

Id
string <UUID>

Уникальный идентификатор самосвала

Model
string

Модель транспортного средства

Registration
string

Регистрационный номер ТС

Capacity
number <double> > 0

Грузоподъёмность

Volume
number <double> > 0

Объём кузова

{
  • "Id": "accfe76f-9a9e-4cb4-8876-d36daa22f924",
  • "Model": "KAMAZ-65951-СА",
  • "Registration": "Д903ЧН",
  • "Capacity": 32.5,
  • "Volume": 25
}