В задании требуется написать приложение, моделирующее работу информационной системы некоторой компании, осуществляющей перевозку грузов. Ниже более подробно описаны предметная область и технические требования.
Существуют следующие виды сущностей:
-
Фура
-
Рег. номер (2 лат.буквы + 5 цифр)
-
Размер смены водителей
-
Вместимость (тонн)
-
Состояние (исправен, неисправен)
-
Текущий город
-
-
Водитель
-
Имя
-
Фамилия
-
Личный номер
-
Отработано часов в этом месяце
-
Статус (отдых, в смене, за рулем)
-
Текущий город
-
Текущая фура
-
-
Заказ
-
Уникальный номер
-
Выполнен (да/нет)
-
Список маршрутных точек
-
Город
-
Груз
-
Тип (погрузка/выгрузка)
-
-
Фура назначенная выполнять заказ
-
Список водителей, которые выполняют заказ
-
-
Груз
-
Номер груза
-
Наименование
-
Масса (в кг)
-
Статус (подготовлен, отгружен, доставлен)
-
-
Карта страны
-
Города
-
Расстояния
-
Приложение должно обеспечивать следующую функциональность:
-
Для сотрудников компании (через UI-интерфейс):
-
просмотр списка, добавление, редактирование и удаление фур, водителей;
-
просмотр списка и добавление новых заказов с проверкой, что:
-
все загружаемые грузы должны быть где-то выгружены;
-
все выгружаемые грузы должны быть где-то загружены;
-
-
просмотр состояния заказов и грузов;
-
вывод списка фур, которые подходят для доставки заказа, если:
-
фура находится в исправном состоянии;
-
фура подходит по вместимости (с учетом погрузки/выгрузки грузов в городах по маршруту следования);
-
фура не выполняет в данный момент никаких заказов;
-
-
подбор и назначение водителей на основании размера смены используемой фуры и примерного времени в пути (рассчитывается по карте городов и путевым точкам):
-
лимит времени за месяц (176 часов) для каждого из водителей в смене не будет превышен в ходе выполнения этого заказа (учесть также смену месяцев в ходе заказа);
-
водитель не выполняет сейчас другие заказы;
-
при назначении водитель находится в том же городе, что и фура.
-
-
-
Для водителей (через UI-интерфейс):
-
отобразить следующую информацию:
-
личный номер водителя
-
личные номера со-водителя (-ей)
-
рег. номер фуры
-
номер заказа
-
список маршрутных точек
-
-
изменять фактическое время работы и статус заказа:
-
водитель заступил/окончил смену
-
водитель изменил статус:
-
За рулём
-
Второй водитель
-
Погрузочно-разгрузочные работы
-
Отдых
-
-
водитель получил/выгрузил груз (изменить статус заказа)
-
Загрузил
-
Выгрузил
-
-
-
В итоге требуется получить многопользовательское приложение типа клиент-сервер с соединением по сети.
Все данные хранятся на стороне сервера. Каждый клиент может загружать некоторые данные, после каждой операции изменения данные должны быть синхронизованы с сервером.
Клиент должен иметь графический интерфейс.
Приложение должно обрабатывать аппаратные и программные ошибки.
Используемые технологии:
-
IDE - Any (Eclipse, IDEA)
-
Tomcat
-
DB -- MySQL
-
Maven
-
JPA
-
Spring Framework (кроме Boot, Data)
-
JSP
Реализовать отдельное клиент-приложение типа электронное табло, которое будет показывать полную информацию о последних заказах (минимум 10), их количество будет зависеть от вашего UI.
На этом же экране должна отображаться сводная информация по водителям и фурам за текущий месяц. Сколько всего водителей, сколько доступных/недоступных. Сколько всего фур, сколько доступных/занятых на заказе/неисправных.
Данные должны подгружаться при старте и храниться на стороне клиента. Перезагрузка данных осуществляется в случае получения уведомления от сервера.
Используемые технологии:
-
Maven
-
AS -- WildFly
-
EJB
-
JSF
-
MQ (для уведомлений от сервера)
-
WebServices (для обмена данных между клиентом и сервером)
1. Функциональность работает (обязательно наличие UI)
2. Maven-based проект, разбитый на модули (билд одной командой, деплой одной командой)
3. Описаны интерфейсы предметной области
4. Подключена БД MySQL
5. Созданы сущности предметной области; маппинг на таблицы в БД
6. Работа с сущностями через DAO
7. Приложение развернуто на AS
8. Реализована обработка исключений
9. Подключено логгирование
10. Наличие technical solution description
11. Наличие unit-тестов на бизнес логику
Подключение любого фреймворка/библиотеки принимаются в зачет только при условии выполнения пунктов, описанных выше.
Lombock -- допускается. Spring Boot и Data допустимы для использования во 2й части обучения.
Рекомендуем использовать последнюю стабильную версию технологий, обязательных к использованию.
Плюсом будет использование следующих технологий: Selenium, Sonar, Angular/React (например, админка для табло), Docker, Microservices, использования доступного cloud для развертывания приложения (например, https://cloud.yandex.ru/ - 1 месяц бесплатного использования) и/или наличие «killer features».