Приложение считывает все данные из соответствующих CSV-файлов (разделитель – запятая) при старте приложения.
Имя файла с исходными данными передаётся приложению с ключом --equipment-file
Id,Equipment,Category,GuaranteeDate,IsUsed,Price,Location,ResponsiblePerson
1d0f861e-9d0c-4340-acad-69ade7b83085,"Монитор 19.5"" LG 20M47D",Монитор,2028-01-01,false,2800,склад,Иванов Иван Иванович
4cc3098f-fa98-4312-b351-fce99fde825f,"Монитор 19.5"" Acer K202HQL",Монитор,2028-01-01,false,5700,склад,Иванов Иван Иванович
bf7c82ce-334a-470b-89be-f7ae283ce564,"Системный блок Acer Intel Core i5-6500, RAM 16 ГБ, SSD 480 ГБ, Intel HD Graphics 530",ПК,2028-01-01,false,15300,склад,Иванов Иван Иванович
f463afc0-3088-4ba4-92ae-5859faedc585,"Принтер Canon PIXMA G540 ",Принтер,2030-01-01,true,21550,"офис, кабинет № 26",Иванов Иван Иванович
d7494a0f-6929-4d71-9bbc-fb067356bfeb,IP-телефон Cisco CP-7940G,Телефон,2030-01-01,true,6100,"офис, кабинет № 26",Иванов Иван Иванович
fe385d95-f916-47c0-b042-557435b2e160,Проектор Epson EB-E20,Другое,2030-01-01,true,60600,"офис, кабинет № 15",Иванов Иван Иванович
f920444e-3741-497c-a6b2-b9fa1bc5b741,"Принтер Canon PIXMA G540 ",Принтер,2030-01-01,true,21550,"офис, кабинет № 15",Иванов Иван Иванович
Имя файла с исходными данными передаётся приложению с ключом --log-file
Id,Equipment,ResponsiblePerson,Operation,Text,LogDateTime
29478648-3524-4d60-9176-22aad1c3bb4a,1d0f861e-9d0c-4340-acad-69ade7b83085,Иванов Иван Иванович,Приобретение,Приобретение,2024-01-01T00:00:00
Приложение запускается с помощью системы сборки Gradle, обязательные параметры:
--equipment-file
– имя файла со списком оборудования--log-file
– имя файла с журналом--port
– порт, по которому доступен веб-сервер./gradlew run --args="--equipment-file ../sample-data/equipment.csv --log-file ../sample-data/log.csv --port 9000"
Веб-сервер запускается и работает только при получении корректных значений всех параметров. При некорректном значении хотя бы одного параметра приложение выводит соответствующее сообщение об ошибке и завершает работу с ненулевым кодом возврата.
Error: missing option --equipment-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": "67bfcd12-6c8f-45fc-bc6b-265c23d7d881",
- "Equipment": "Системный блок Acer",
- "IsUsed": true
}
]
Добавление нового оборудования:
Добавление записи о новом оборудовании в журнал:
Equipment required | string Наименование оборудования |
Category required | string Enum: "Монитор" "ПК" "Телефон" "Принтер" "Другое" Тип техники |
GuaranteeDate required | string <date> Гарантийный срок |
Price required | number <double> >= 0 Балансная стоимость |
IsUsed | boolean Default: false Используется или свободно
|
Location required | string Место хранения |
ResponsiblePerson required | string Сохраняется в поле |
Operation required | string Журналируемая операция. Поле не может быть пустым |
Text | string Default: "" Комментарий к операции |
{- "Equipment": "Системный блок Acer",
- "Category": "ПК",
- "GuaranteeDate": "2028-01-01",
- "Price": 15300,
- "IsUsed": true,
- "Location": "дома",
- "ResponsiblePerson": "Иванов Иван Иванович",
- "Operation": "Приобретение",
- "Text": "Приобретение нового ПК в связи с поломкой предыдущего"
}
{- "EquipmentId": "67bfcd12-6c8f-45fc-bc6b-265c23d7d881",
- "LogId": "29478648-3524-4d60-9176-22aad1c3bb4a"
}
equipment-id required | string <UUID> Example: 67bfcd12-6c8f-45fc-bc6b-265c23d7d881 Идентификатор техники |
{- "Id": "67bfcd12-6c8f-45fc-bc6b-265c23d7d881",
- "Equipment": "Системный блок Acer",
- "Category": "ПК",
- "GuaranteeDate": "2028-01-01",
- "IsUsed": true,
- "Price": 15300,
- "Location": "дома",
- "ResponsiblePerson": "Иванов Иван Иванович",
- "Log": [
- {
- "Id": "29478648-3524-4d60-9176-22aad1c3bb4a",
- "ResponsiblePerson": "Иванов Иван Иванович",
- "Operation": "Приобретение",
- "Text": "Приобретение нового ПК в связи с поломкой предыдущего",
- "LogDateTime": "2024-01-01T00:00:00"
}
]
}
Отсутствие необязательных полей (не required) подразумевает, что поля не изменяются.
Добавление записи об изменении оборудования в журнал:
equipment-id required | string <UUID> Example: 67bfcd12-6c8f-45fc-bc6b-265c23d7d881 Идентификатор техники |
Equipment required | string Наименование оборудования |
Category | string Enum: "Монитор" "ПК" "Телефон" "Принтер" "Другое" Тип техники |
GuaranteeDate | string <date> Гарантийный срок |
IsUsed | boolean Используется или свободно
|
Price | number <double> >= 0 Балансная стоимость |
Location required | string Место хранения |
ResponsiblePerson required | string Материально-ответственное лицо. Сохраняется в поле |
Operation required | string Журналируемая операция. Поле не может быть пустым |
Text required | string Комментарий к операции |
{- "Equipment": "Системный блок Acer",
- "Category": "ПК",
- "GuaranteeDate": "2028-01-01",
- "IsUsed": true,
- "Price": 15300,
- "Location": "дома",
- "ResponsiblePerson": "Иванов Иван Иванович",
- "Operation": "Приобретение",
- "Text": "Приобретение нового ПК в связи с поломкой предыдущего"
}
{- "LogId": "29478648-3524-4d60-9176-22aad1c3bb4a"
}
Элемент техники удаляется. Для удалённого оборудования добавляется запись в журнал:
Operation
соответствует «Списание: [поле Equipment]» (например «Списание: Системный блок Acer»).equipment-id required | string <UUID> Example: 67bfcd12-6c8f-45fc-bc6b-265c23d7d881 Идентификатор техники |
{- "LogId": "29478648-3524-4d60-9176-22aad1c3bb4a"
}
Получение списка свободной (не использующейся) техники переданных типов.
Список упорядочен по возрастанию типа техники лексикографически и id.
category | string Enum: "Монитор" "ПК" "Телефон" "Принтер" "Другое" Example: category=Монитор,Телефон Тип техники. Содержит ноль, один или несколько типов техники через запятую. Если параметр пустой или отсутствует, приложение возвращает список без фильтрации по типу. Тип техники должен точно соответствовать одному из указанных значений.
Например, Если хотя бы один из переданных типов не является корректным, значение параметра считается некорректным. |
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": "67bfcd12-6c8f-45fc-bc6b-265c23d7d881",
- "Equipment": "Системный блок Acer"
}
]
Получение списка техники, которую нужно заменить к моменту времени: в переданный момент времени истечёт гарантийный срок.
Список упорядочен по возрастанию типа техники лексикографически и id.
time required | string <date-time> Example: time=2030-01-01T00:00:00.0 Дата и время в формате ISO |
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": "67bfcd12-6c8f-45fc-bc6b-265c23d7d881",
- "Equipment": "Системный блок Acer",
- "GuaranteeDate": "2028-01-01"
}
]
by-type required | string Enum: "category" "person" Example: by-type=category Тип статистики.
Статистика упорядочена по полю |
{- "StatisticsByCategory": [
- {
- "Category": "ПК",
- "Count": 3,
- "Price": 15300
}
]
}
log-id required | string <UUID> Example: 29478648-3524-4d60-9176-22aad1c3bb4a Идентификатор запииси в журнале |
{- "Id": "29478648-3524-4d60-9176-22aad1c3bb4a",
- "Equipment": "67bfcd12-6c8f-45fc-bc6b-265c23d7d881",
- "ResponsiblePerson": "Иванов Иван Иванович",
- "Operation": "Приобретение",
- "Text": "Приобретение нового ПК в связи с поломкой предыдущего",
- "LogDateTime": "2024-01-01T00:00:00"
}
log-id required | string <UUID> Example: 29478648-3524-4d60-9176-22aad1c3bb4a Идентификатор запииси в журнале |
Operation required | string Журналируемая операция. Поле не может быть пустым |
Text required | string Комментарий к операции |
Operation=%D0%9F%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B0&Text=%D0%9F%D0%9A%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D0%BD%20%D0%9F%D0%B5%D1%82%D1%80%D0%BE%D0%B2%D1%83%20%D0%9F.%20%D0%9F.
{- "Operation": {
- "Value": null,
- "Error": "Отсутствует поле"
}, - "Text": {
- "Value": null,
- "Error": "Отсутствует поле"
}
}
Id | string <UUID> Уникальный идентификатор оборудования |
Equipment | string Наименование оборудования |
Category | string Enum: "Монитор" "ПК" "Телефон" "Принтер" "Другое" Тип техники |
GuaranteeDate | string <date> Гарантийный срок |
IsUsed | boolean Используется или свободно
|
Price | number <double> >= 0 Балансная стоимость |
Location | string Место хранения |
ResponsiblePerson | string ФИО материально-ответственного лица |
{- "Id": "67bfcd12-6c8f-45fc-bc6b-265c23d7d881",
- "Equipment": "Системный блок Acer",
- "Category": "ПК",
- "GuaranteeDate": "2028-01-01",
- "IsUsed": true,
- "Price": 15300,
- "Location": "дома",
- "ResponsiblePerson": "Иванов Иван Иванович"
}
Id | string <UUID> Идентификатор записи в журнале. |
Equipment | string <UUID> Уникальный идентификатор оборудования |
ResponsiblePerson | string ФИО материально-ответственного лица |
Operation | string Журналируемая операция. Поле не может быть пустым |
Text | string Комментарий к операции |
LogDateTime | string <date-time> Дата и время создания записи |
{- "Id": "29478648-3524-4d60-9176-22aad1c3bb4a",
- "Equipment": "67bfcd12-6c8f-45fc-bc6b-265c23d7d881",
- "ResponsiblePerson": "Иванов Иван Иванович",
- "Operation": "Приобретение",
- "Text": "Приобретение нового ПК в связи с поломкой предыдущего",
- "LogDateTime": "2024-01-01T00:00:00"
}