Разработать приложение, решающее задачу по управлению списком актов отгрузки песчано-гравийной смеси (ПГС).
Приложение считывает все данные из соответствующих 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»
Список должен быть упорядочен по возрастанию даты и времени отгрузки и id.
| page | integer >= 1 Default: 1 Example: page=1 Номер страницы. Если номер превышает максимально возможный, приложение возвращает пустой список. Если номер передан и не является натуральным числом, приложение возвращает сообщение об ошибке. |
| records-per-page | integer Default: 10 Enum: 5 10 20 50 Example: records-per-page=10 Количество записей на странице. Если количество передано и не входит в указанный набор значений, приложение возвращает сообщение об ошибке. |
[- {
- "Id": "de42a00f-7f43-4d10-808d-bee47fdeef49",
- "Title": "Песчано-гравийная смесь (ПГС)",
- "Cost": 22.3488
}
]| shipment-id required | string <UUID> Example: de42a00f-7f43-4d10-808d-bee47fdeef49 идентификатор акта отгрузки ПГС |
{- "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
}Список должен быть упорядочен по убыванию даты и времени отгрузки и возрастанию идентификатора
| 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 Количество записей на странице. Если количество передано и не входит в указанный набор значений, приложение возвращает сообщение об ошибке. |
[- {
- "Id": "de42a00f-7f43-4d10-808d-bee47fdeef49",
- "Title": "Песчано-гравийная смесь (ПГС)",
- "Cost": 22.3488
}
]Список должен быть упорядочен по возрастанию даты и времени отгрузки и id.
| 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 Количество записей на странице. Если количество передано и не входит в указанный набор значений, приложение возвращает сообщение об ошибке. |
[- {
- "Id": "de42a00f-7f43-4d10-808d-bee47fdeef49",
- "Title": "Песчано-гравийная смесь (ПГС)",
- "ShipmentDate": "2024-01-01",
- "Cost": 22.3488
}
]Список должен содержать только те месяцы, для которых есть данные, и быть упорядочен по номеру месяца.
| year required | integer >= 2000 Example: year=2024 отчётный год |
[- {
- "Month": 1,
- "MonthTitle": "Январь",
- "Count": 1,
- "Cost": 100,
- "Weight": 36,
- "Volume": 0
}
]| dump-truck-id required | string <UUID> Example: accfe76f-9a9e-4cb4-8876-d36daa22f924 идентификатор самосвала |
{- "Id": "accfe76f-9a9e-4cb4-8876-d36daa22f924",
- "Model": "KAMAZ-65951-СА",
- "Registration": "Д903ЧН",
- "Capacity": 32.5,
- "Volume": 25,
- "Shipments": [
- {
- "Id": "de42a00f-7f43-4d10-808d-bee47fdeef49",
- "Title": "Песчано-гравийная смесь (ПГС)",
- "ShipmentDateTime": "2024-01-01T00:00:00"
}
]
}| Id | string <UUID> идентификатор акта отгрузки ПГС | ||||||||||||||
| Title | string Наименование ПГС | ||||||||||||||
| SWG | string (Swg-type) Enum: "Песок речной" "Песок карьерный" "Щебень гранитный" "Щебень гравийный" "Щебень шлаковый" "Песчано-гравийная смесь"
| ||||||||||||||
| 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> Транспортное средство, на которое осуществлялась отгрузка (соответствует | ||||||||||||||
| 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
}| 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
}