Приложение считывает все данные из соответствующих CSV-файлов (разделитель – запятая) при старте приложения.
Имя файла с исходными данными передаётся приложению с ключом --machines-file
Id,Title,Type,StartDateTime,Condition,Capacity,Price,Duration,Launderette
cf52ee99-f7d7-46d6-8e88-8137b99346e8,Стиральная машина Maytag 3RMTW 4905 TW,Стиральная машина,2024-01-02T00:00:00,true,8,300,45,24f43805-83e9-4687-bb52-c643bc93ec3b
a82eaf91-c83e-4819-991f-9175719a8ff1,Стиральная машина Maytag 3RMTW 4905 TW,Стиральная машина,2024-01-03T00:00:00,true,8,300,45,24f43805-83e9-4687-bb52-c643bc93ec3b
7c580384-403c-4664-9f94-66b40f75a724,Стиральная машина Maytag 3RMTW 4905 TW,Стиральная машина,2024-01-04T00:00:00,true,8,300,45,24f43805-83e9-4687-bb52-c643bc93ec3b
6c243167-63fc-47b8-ab8b-4db17c2f1d81,Стиральная машина Haier HCW12C,Стиральная машина,2024-01-05T00:00:00,true,12,350,55,24f43805-83e9-4687-bb52-c643bc93ec3b
657c2450-b03e-46f2-8d16-75fd14f47c6a,Стиральная машина Haier HCW12C,Стиральная машина,2024-01-06T00:00:00,false,12,350,55,24f43805-83e9-4687-bb52-c643bc93ec3b
6c2cea57-d99b-4356-98e1-c04899fe057b,Сушильная машина Haier HCD12C,Сушильная машина,2024-01-07T00:00:00,true,12,100,30,
32d9d122-26cf-47f0-b047-862ad4b68d3b,Сушильная машина Haier HCD12C,Сушильная машина,2024-01-08T00:00:00,true,12,100,30,
Имя файла с исходными данными передаётся приложению с ключом --launderettes-file
Id,Address,PhoneNumber,WorkingHours
24f43805-83e9-4687-bb52-c643bc93ec3b,"город N, улица M, 13","+7 (999) 999-99-99","с 9.00 до 21.00. Без выходных"
Приложение запускается с помощью системы сборки Gradle, обязательные параметры:
--machines-file
– имя файла со списком оборудования--launderettes-file
– имя файла со списком прачечных--port
– порт, по которому доступен веб-сервер./gradlew run --args="--machines-file ../sample-data/machines.csv --launderettes-file ../sample-data/launderettes.csv --port 9000"
Веб-сервер запускается и работает только при получении корректных значений всех параметров. При некорректном значении хотя бы одного параметра приложение выводит соответствующее сообщение об ошибке и завершает работу с ненулевым кодом возврата.
Error: missing option --machines-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": "cf52ee99-f7d7-46d6-8e88-8137b99346e8",
- "Title": "Стиральная машина Maytag 3RMTW 4905 TW",
- "Condition": true
}
]
Идентификатор оборудования генерируется автоматически.
Title required | string Наименование оборудования |
Type required | string Enum: "Стиральная машина" "Сушильная машина" Тип оборудования |
StartDateTime | string <date-time> Default: "Текущие сутки и время «00:00:00»" Начало эксплуатации |
Condition | boolean Default: true Исправность оборудования |
Capacity required | number <double> > 0 Максимальная вместимость (кг) |
Price required | integer >= 0 Стоимость использования (руб) |
Duration required | integer > 0 Длительность цикла (мин) |
Launderette | string or null <UUID> Default: null Прачечная, в которой установлено оборудование ( |
{- "Title": "Стиральная машина Maytag 3RMTW 4905 TW",
- "Type": "Стиральная машина",
- "StartDateTime": "2024-01-01T00:00:00",
- "Condition": true,
- "Capacity": 8,
- "Price": 300,
- "Duration": 60,
- "Launderette": "24f43805-83e9-4687-bb52-c643bc93ec3b"
}
{- "Id": "cf52ee99-f7d7-46d6-8e88-8137b99346e8"
}
machine-id required | string <UUID> Example: cf52ee99-f7d7-46d6-8e88-8137b99346e8 Идентификатор оборудования |
{- "Id": "cf52ee99-f7d7-46d6-8e88-8137b99346e8",
- "Title": "Стиральная машина Maytag 3RMTW 4905 TW",
- "Type": "Стиральная машина",
- "StartDateTime": "2024-01-01T00:00:00",
- "Condition": true,
- "Capacity": 8,
- "Price": 300,
- "Duration": 60,
- "LaunderetteAddress": "город N, улица M, 13"
}
Отсутствие необязательных параметров подразумевает, что поля не изменяются.
Title | string Наименование оборудования |
Type | string Enum: "Стиральная машина" "Сушильная машина" Тип оборудования |
StartDateTime | string <date-time> Начало эксплуатации |
Condition | boolean Исправность оборудования |
Capacity | number <double> > 0 Максимальная вместимость (кг) |
Price | integer >= 0 Стоимость использования (руб) |
Duration | integer > 0 Длительность цикла (мин) |
Launderette | string or null <UUID> Прачечная, в которой установлено оборудование ( |
{- "Title": "Стиральная машина Maytag 3RMTW 4905 TW",
- "Type": "Стиральная машина",
- "StartDateTime": "2024-01-01T00:00:00",
- "Condition": true,
- "Capacity": 8,
- "Price": 300,
- "Duration": 60,
- "Launderette": "24f43805-83e9-4687-bb52-c643bc93ec3b"
}
{- "Value": "{",
- "Error": "Missing a name for object member."
}
В выдаче должны присутствовать только те типы оборудования, которые есть в списке данных.
Список упорядочен лексикографически по типу оборудования.
[- {
- "Type": "Стиральная машина",
- "Count": 3,
- "CountServiceable": 2,
- "CapacityStatistics": [
- {
- "Capacity": 8,
- "CountServiceable": 2,
- "Price": 300
}
]
}
]
Срок эксплуатации оборудования – разница между переданными моментом времени и началом эксплуатации.
Для корректной работы рекомендуется сравнивать даты с помощью методов minusMonths
/plusMonths
, minusYears
/plusYears
Список должен содержать только те пункты, для которых есть данные.
now required | string <date-time> Example: now=2026-01-01T00:00:00 Момент времени, для которого рассчитывается статистика |
{- "Пора менять": 2,
- "Изношено": 1,
- "Работает": 5,
- "Новое": 3
}
launderette-id required | string <UUID> Example: 24f43805-83e9-4687-bb52-c643bc93ec3b Идентификатор прачечной |
{- "Id": "24f43805-83e9-4687-bb52-c643bc93ec3b",
- "Address": "город N, улица M, 13",
- "PhoneNumber": "+7 (999) 999-99-99",
- "WorkingHours": "с 9.00 до 21.00. Без выходных",
- "Machines": [
- {
- "Id": "cf52ee99-f7d7-46d6-8e88-8137b99346e8",
- "Title": "Стиральная машина Maytag 3RMTW 4905 TW"
}
]
}
Для всего оборудования удаляемой прачечной значение Launderette
устанавливается null
.
launderette-id required | string <UUID> Example: 24f43805-83e9-4687-bb52-c643bc93ec3b Идентификатор прачечной |
[- {
- "Id": "cf52ee99-f7d7-46d6-8e88-8137b99346e8",
- "Title": "Стиральная машина Maytag 3RMTW 4905 TW"
}
]
Address required | string Адрес прачечной. Не может быть пустым |
PhoneNumber required | string Телефон. Не может быть пустым |
WorkingHours required | string Режим работы. Не может быть пустым |
Address=%D0%B3%D0%BE%D1%80%D0%BE%D0%B4%20N%2C%20%D1%83%D0%BB%D0%B8%D1%86%D0%B0%20M%2C%2013&PhoneNumber=%2B7%20%28999%29%20999-99-99&WorkingHours=%D1%81%209.00%20%D0%B4%D0%BE%2021.00.%20%D0%91%D0%B5%D0%B7%20%D0%B2%D1%8B%D1%85%D0%BE%D0%B4%D0%BD%D1%8B%D1%85
{- "LaunderetteId": "24f43805-83e9-4687-bb52-c643bc93ec3b"
}
Подбор списка исправных стиральных машин прачечной, в которые можно загрузить указанный вес и использование стоит не больше указанного бюджета.
Список упорядочен по возрастанию стоимости, возрастанию длительности цикла и id.
launderette-id required | string <UUID> Example: 24f43805-83e9-4687-bb52-c643bc93ec3b Идентификатор прачечной |
weight required | number <double> > 0 Example: weight=5.23 Вес (кг) |
budget required | integer > 0 Example: budget=300 Бюджет (руб) |
[- {
- "Id": "cf52ee99-f7d7-46d6-8e88-8137b99346e8",
- "Title": "Стиральная машина Maytag 3RMTW 4905 TW",
- "Capacity": 8,
- "Price": 300,
- "Duration": 60
}
]
Id | string <UUID> Уникальный идентификатор оборудования |
Title | string Наименование оборудования |
Type | string (Machine-type) Enum: "Стиральная машина" "Сушильная машина" Тип оборудования |
StartDateTime | string <date-time> Начало эксплуатации |
Condition | boolean Исправность оборудования |
Capacity | number <double> > 0 Максимальная вместимость (кг) |
Price | integer >= 0 Стоимость использования (руб) |
Duration | integer > 0 Длительность цикла (мин) |
Launderette | string or null <UUID> Прачечная, в которой установлено оборудование ( |
{- "Id": "cf52ee99-f7d7-46d6-8e88-8137b99346e8",
- "Title": "Стиральная машина Maytag 3RMTW 4905 TW",
- "Type": "Стиральная машина",
- "StartDateTime": "2024-01-01T00:00:00",
- "Condition": true,
- "Capacity": 8,
- "Price": 300,
- "Duration": 60,
- "Launderette": "24f43805-83e9-4687-bb52-c643bc93ec3b"
}
Id | string <UUID> Уникальный идентификатор прачечной |
Address | string Адрес прачечной |
PhoneNumber | string Телефон |
WorkingHours | string Режим работы |
{- "Id": "24f43805-83e9-4687-bb52-c643bc93ec3b",
- "Address": "город N, улица M, 13",
- "PhoneNumber": "+7 (999) 999-99-99",
- "WorkingHours": "с 9.00 до 21.00. Без выходных"
}