Java ETL-приложение для парсинга, автоматического исправления ошибок и импорта данных о начислениях водоканала в PostgreSQL. Включает REST API и веб-интерфейс на Angular.
| Слой | Технологии |
|---|---|
| Backend | Java 25, Spring Boot 4.0.5, Spring Security, HikariCP |
| Frontend | Angular 21, RxJS 7, Bootstrap 5.3 |
| Database | PostgreSQL 18, JDBC |
| Сборка | Maven |
- Java 25+
- Maven 3.8+
- PostgreSQL 18
- Node.js 20+ и Angular CLI (для веб-интерфейса)
Создайте базу данных и таблицы, выполнив скрипт:
psql -h localhost -p 5432 -U postgres -f sql/create_database.sqlНастройте подключение в src/main/resources/config.properties:
db.host=localhost
db.port=5432
db.name=vodokanal-db
db.user=postgres
db.password=postgresmvn spring-boot:runAPI доступно по адресу: http://localhost:8080
cd src/main/resources/static
npm install
ng serve --proxy-config proxy.conf.jsonВеб-интерфейс доступен по адресу: http://localhost:4200
Поместите файл с данными в корень проекта (указан в config.properties) и запустите:
mvn exec:java -Dexec.mainClass=org.example.Main| Метод | Endpoint | Описание |
|---|---|---|
GET |
/api/localities?search= |
Список населенных пунктов |
GET |
/api/localities/{id}/streets?search= |
Улицы по НП |
GET |
/api/localities/{id}/streets/{id}/houses?search= |
Дома по улице |
GET |
/api/localities/{id}/streets/{id}/houses/{id}/apartments?search= |
Квартиры по дому |
GET |
/api/apartments/{id}/accounts |
Лицевые счета по квартире |
Текстовый файл (.txt), разделитель — точка с запятой ;.
900045955;Иванов И.И.;Владимир г, Ленина ул, 12, 45;519;232.65;3300000001 ХВС;185.0000;
Поля:
- Номер ЛС (цифры)
- ФИО плательщика
- Адрес (через запятую: НП, Улица, Дом, Квартира)
- Период начисления
- Сумма начисления (обязательное поле)
- (Опционально) Пары полей:
Номер прибора; Показания(могут повторяться)
vodokanal-parser/
├── src/
│ ├── main/java/org/example/
│ │ ├── Main.java # Точка входа ETL
│ │ ├── VodokanalApplication.java # Точка входа Web
│ │ ├── config/ # Конфигурация (БД, Security)
│ │ ├── etl/ # Логика импорта (Batch, Кэш)
│ │ ├── service/parsing/ # Парсер и корректор записей
│ │ └── service/search/ # REST сервисы поиска
│ └── main/resources/static/ # Веб-интерфейс (Angular)
├── sql/ # Скрипты БД (create, clear)
└── pom.xml
Запуск тестов:
mvn testВ проекте 76 тестов, покрывающих логику парсинга валидных/невалидных записей и сценарии автоматического исправления ошибок.
MIT
Примечание о данных: Проект предназначен для работы с реальными данными из платёжной системы. Файл
records.txtсоздан программным путем и не содержит реальной персональной информации пользователей.
