Aplicación de consola desarrollada en Java 21 con Maven que permite cargar, consultar y exportar registros de impuestos desde un archivo de texto plano hacia una base de datos PostgreSQL, con opción de exportación a Excel.
- Tecnologías
- Estructura del Proyecto
- Requisitos Previos
- Configuración de Base de Datos
- Configuración de Conexión
- Formato del Archivo de Datos
- Compilación y Ejecución
- Funcionalidades
| Tecnología | Versión |
|---|---|
| Java | 21 |
| Maven | 3.x |
| PostgreSQL JDBC Driver | 42.7.2 |
| Apache POI (Excel) | 5.2.5 |
| Log4j2 | 2.20.0 |
prueba-desarrollador-impuestos/
├── pom.xml
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── App.java # Punto de entrada / Menú principal
│ │ │ ├── db/
│ │ │ │ └── DBConnection.java # Conexión a PostgreSQL
│ │ │ ├── model/
│ │ │ │ └── Impuesto.java # Modelo de datos
│ │ │ └── service/
│ │ │ └── ImpuestoService.java # Lógica de negocio
│ │ └── resources/
│ │ ├── datos.TXT # Archivo de datos de entrada
│ │ └── log4j2.xml # Configuración de logs
│ └── test/
│ └── java/
│ └── org/example/
│ └── AppTest.java
- JDK 21 o superior instalado
- Maven 3.x instalado
- PostgreSQL instalado y en ejecución (puerto
5432) - Base de datos y tabla creadas (ver sección siguiente)
Ejecuta el siguiente script en tu instancia de PostgreSQL para crear la base de datos y la tabla requerida:
-- Crear la base de datos
CREATE DATABASE prueba01;
-- Conectarse a la base de datos
\c prueba01
-- Crear la tabla de impuestos
CREATE TABLE impuestos (
sticker BIGINT PRIMARY KEY,
fecha_movimiento DATE NOT NULL,
fecha_recaudo DATE NOT NULL,
tipo_horario VARCHAR(1) NOT NULL,
nro_id BIGINT NOT NULL,
nro_form BIGINT NOT NULL,
valor BIGINT NOT NULL
);Los parámetros de conexión se encuentran en el archivo src/main/java/db/DBConnection.java:
private static final String URL = "jdbc:postgresql://localhost:5432/prueba01";
private static final String USER = "jhon";
private static final String PASSWORD = "admin";Modifica estos valores según tu entorno antes de compilar.
El archivo datos.TXT (ubicado en src/main/resources/) contiene registros separados por comas con el siguiente formato:
sticker,fechaMovimiento,fechaRecaudo,tipoHorario,nroId,nroForm,valor
Ejemplo:
1000020628634,20250311,20250311,N,8600029644,4910052408623,3000000
| Campo | Descripción | Formato |
|---|---|---|
sticker |
Identificador único del registro | Numérico |
fechaMovimiento |
Fecha del movimiento | AAAAMMDD |
fechaRecaudo |
Fecha del recaudo | AAAAMMDD |
tipoHorario |
Tipo de horario | A (Ampliado) / N (Normal) |
nroId |
Número de identificación del contribuyente | Numérico |
nroForm |
Número de formulario | Numérico |
valor |
Valor del impuesto en pesos | Numérico |
git clone https://github.com/tu-usuario/prueba-desarrollador-impuestos.git
cd prueba-desarrollador-impuestosmvn clean packagemvn exec:java -Dexec.mainClass="App"Al ejecutar la aplicación se despliega el siguiente menú interactivo:
===== MENÚ IMPUESTOS =====
1. Cargar archivo DATOS.TXT
2. Consultar por fecha
3. Consultar cantidad y suma por tipo de horario (A / N)
4. Buscar registro por sticker
5. Exportar todos los datos a archivo Excel (.xls)
0. Salir
Lee el archivo src/main/resources/datos.TXT e inserta los registros en la base de datos PostgreSQL. Los registros duplicados (mismo sticker) se ignoran automáticamente.
Permite buscar todos los registros cuya fecha_movimiento coincida con la fecha ingresada en formato AAAA-MM-DD.
Muestra la cantidad total de registros y la suma de valores para un tipo de horario específico:
A→ Horario AmpliadoN→ Horario Normal
Muestra el detalle completo de un registro a partir de su número de sticker. Ofrece la opción de exportar ese registro individual a un archivo Excel (sticker_<número>.xls).
Exporta la totalidad de los registros almacenados en la base de datos al archivo impuestos_exportados.xls en el directorio raíz del proyecto.
Desarrollado con cariño por @JhonSnakee