Приложение считывает все данные из соответствующих CSV-файлов (разделитель – запятая) при старте приложения.
Имя файла с исходными данными передаётся приложению с ключом --machines-file
Id,Title,Type,StartDateTime,Condition,Capacity,Price,Duration,Specialist,Launderette
cf52ee99-f7d7-46d6-8e88-8137b99346e8,Стиральная машина Maytag 3RMTW 4905 TW,Стиральная машина,2024-01-02T00:00:00,true,8,300,45,de42a00f-7f43-4d10-808d-bee47fdeef49,24f43805-83e9-4687-bb52-c643bc93ec3b
a82eaf91-c83e-4819-991f-9175719a8ff1,Стиральная машина Maytag 3RMTW 4905 TW,Стиральная машина,2024-01-03T00:00:00,true,8,300,45,de42a00f-7f43-4d10-808d-bee47fdeef49,24f43805-83e9-4687-bb52-c643bc93ec3b
7c580384-403c-4664-9f94-66b40f75a724,Стиральная машина Maytag 3RMTW 4905 TW,Стиральная машина,2024-01-04T00:00:00,true,8,300,45,de42a00f-7f43-4d10-808d-bee47fdeef49,24f43805-83e9-4687-bb52-c643bc93ec3b
6c243167-63fc-47b8-ab8b-4db17c2f1d81,Стиральная машина Haier HCW12C,Стиральная машина,2024-01-05T00:00:00,true,12,350,55,de42a00f-7f43-4d10-808d-bee47fdeef49,24f43805-83e9-4687-bb52-c643bc93ec3b
657c2450-b03e-46f2-8d16-75fd14f47c6a,Стиральная машина Haier HCW12C,Стиральная машина,2024-01-06T00:00:00,false,12,350,55,de42a00f-7f43-4d10-808d-bee47fdeef49,24f43805-83e9-4687-bb52-c643bc93ec3b
6c2cea57-d99b-4356-98e1-c04899fe057b,Сушильная машина Haier HCD12C,Сушильная машина,2024-01-07T00:00:00,true,12,100,30,de42a00f-7f43-4d10-808d-bee47fdeef49,
32d9d122-26cf-47f0-b047-862ad4b68d3b,Сушильная машина Haier HCD12C,Сушильная машина,2024-01-08T00:00:00,true,12,100,30,de42a00f-7f43-4d10-808d-bee47fdeef49,
Имя файла с исходными данными передаётся приложению с ключом --launderettes-file
Id,Address,PhoneNumber,WorkingHours
24f43805-83e9-4687-bb52-c643bc93ec3b,"город N, улица M, 13","+7 (999) 999-99-99","с 9.00 до 21.00. Без выходных"
Имя файла с исходными данными передаётся приложению с ключом --specialists-file
Id,Name,RegistrationDateTime,Email,Launderette
de42a00f-7f43-4d10-808d-bee47fdeef49,Иванов Иван Иванович,2024-01-01T00:00:00,IvanovII@crafted.su,24f43805-83e9-4687-bb52-c643bc93ec3b
Приложение запускается с помощью системы сборки Gradle, обязательные параметры:
--machines-file – имя файла со списком оборудования--launderettes-file – имя файла со списком прачечных--specialists-file – имя файла с работниками прачечных--port – порт, по которому доступен веб-сервер./gradlew run --args="--machines-file ../sample-data/machines.csv --launderettes-file ../sample-data/launderettes.csv --specialists-file ../sample-data/specialists.csv --port 9000"
Веб-сервер запускается и работает только при получении корректных значений всех параметров. При некорректном значении хотя бы одного параметра приложение выводит соответствующее сообщение об ошибке и завершает работу с ненулевым кодом возврата.
Error: missing option --specialists-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 Прачечная, в которой установлено оборудование ( |
| Specialist required | string <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",
- "Specialist": "de42a00f-7f43-4d10-808d-bee47fdeef49"
}{- "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,
- "SpecialistEmail": "IvanovII@crafted.su",
- "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 Длительность цикла (мин) |
| Specialist | string <UUID> Работник, ответственный за оборудование ( |
| 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,
- "Specialist": "de42a00f-7f43-4d10-808d-bee47fdeef49",
- "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 устанавливается 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 Длительность цикла (мин) |
| Specialist | string <UUID> Работник, ответственный за оборудование ( |
| 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,
- "Specialist": "de42a00f-7f43-4d10-808d-bee47fdeef49",
- "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. Без выходных"
}| Id | string <UUID> Уникальный идентификатор работника |
| Name | string ФИО работника |
| RegistrationDateTime | string <date-time> Дата и время регистрации в системе |
string Уникальная электронная почта работника | |
| Launderette | string or null <UUID> Прачечная, в которой работает работник (
Если работник привязан к прачечной, оборудование под его ответственностью расположено в той же прачечной. |
{- "Id": "de42a00f-7f43-4d10-808d-bee47fdeef49",
- "Name": "Иванов Иван Иванович",
- "RegistrationDateTime": "2024-01-01T00:00:00",
- "Email": "IvanovII@crafted.su",
- "Launderette": "24f43805-83e9-4687-bb52-c643bc93ec3b"
}