πŸ—οΈ Arquitetura - ecosif-reports

πŸ“‹ VisΓ£o Geral

ecosif-reports Γ© um microserviΓ§o Spring Boot especializado na geraΓ§Γ£o de relatΓ³rios contΓ‘beis utilizando JasperReports. Este serviΓ§o processa dados contΓ‘beis e os transforma em relatΓ³rios formatados em PDF, CSV ou TXT.


🎯 Objetivo do Serviço


πŸ›οΈ Arquitetura em Camadas

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  Controllers (REST)                      β”‚
β”‚  β€’ ReportsController (11 endpoints)                     β”‚
β”‚  β€’ PlanoSaldoController (3 endpoints)                   β”‚
β”‚  β€’ LancamentoContabilController (1 endpoint)            β”‚
β”‚  β€’ PreferenciasController (2 endpoints)                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Services (LΓ³gica)                     β”‚
β”‚  β€’ PrintReportService                                   β”‚
β”‚  β€’ ProcedureBalanceteGeralService                       β”‚
β”‚  β€’ ProcedureBalanceteMensalService                      β”‚
β”‚  β€’ ProcedureRazaoService                                β”‚
β”‚  β€’ RelatorioDiarioGeralService                          β”‚
β”‚  β€’ ... (13 services)                                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 Repositories (JPA)                       β”‚
β”‚  β€’ AccountbalanceRepository                             β”‚
β”‚  β€’ MonthlyAccountBalanceRepository                      β”‚
β”‚  β€’ ChartOfAccountsRepository                            β”‚
β”‚  β€’ ... (31 repositories)                                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            ecosif-database (Biblioteca)                  β”‚
β”‚  β€’ Entry β€’ Balance β€’ ChartOfAccounts                    β”‚
β”‚  β€’ Document β€’ Batch β€’ CompanyOptions                    β”‚
β”‚  β€’ ... (52+ entidades)                                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 PostgreSQL Database                      β”‚
β”‚  β€’ Tabelas contΓ‘beis                                    β”‚
β”‚  β€’ Procedures de agregaΓ§Γ£o                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              JasperReports Templates                     β”‚
β”‚  β€’ 36+ templates (.jrxml)                               β”‚
β”‚  β€’ Compilados (.jasper)                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“¦ Estrutura de Pacotes

io.ecosif.reports
β”œβ”€β”€ controller/         # 5 controllers REST
β”‚   β”œβ”€β”€ ReportsController.java
β”‚   β”œβ”€β”€ PlanoSaldoController.java
β”‚   β”œβ”€β”€ LancamentoContabilController.java
β”‚   β”œβ”€β”€ PreferenciasController.java
β”‚   └── TesteController.java
β”œβ”€β”€ service/            # Services de geraΓ§Γ£o
β”‚   β”œβ”€β”€ PrintReportService.java
β”‚   β”œβ”€β”€ ProcedureBalanceteGeralService.java
β”‚   β”œβ”€β”€ ProcedureBalanceteMensalService.java
β”‚   β”œβ”€β”€ ProcedureRazaoService.java
β”‚   └── ... (13 services)
β”œβ”€β”€ repository/         # Repositories JPA (31)
β”œβ”€β”€ model/              # Models e DTOs
β”‚   β”œβ”€β”€ dto/            # 31 DTOs
β”‚   └── ... (models temporΓ‘rios)
β”œβ”€β”€ helpers/            # Helpers de exportaΓ§Γ£o
β”‚   └── ExportReportsHelper.java
β”œβ”€β”€ config/             # ConfiguraΓ§Γ΅es Spring
β”‚   β”œβ”€β”€ OpenApiConfig.java
β”‚   β”œβ”€β”€ JasperReportsConfig.java
β”‚   └── WebSecurityConfig.java
└── procedures/         # Procedures de banco

πŸ”§ Tecnologias e DependΓͺncias

Core

GeraΓ§Γ£o de RelatΓ³rios

API e DocumentaΓ§Γ£o

SeguranΓ§a

UtilitΓ‘rios

Monitoramento


πŸ“Š Componentes Principais

Controllers (5)

Controller Endpoints Responsabilidade
ReportsController 11 GeraΓ§Γ£o de relatΓ³rios
PlanoSaldoController 3 Consultas de saldos
LancamentoContabilController 1 Consultas de lanΓ§amentos
PreferenciasController 2 PreferΓͺncias de usuΓ‘rio
TesteController 6 Endpoints de teste

Services (13+)

Principais services:

Repositories (31)


πŸ“„ Templates JasperReports

O serviΓ§o possui 36+ templates organizados por tipo:

LocalizaΓ§Γ£o: src/main/resources/templates/*.jrxml


πŸ”„ Fluxo de GeraΓ§Γ£o de RelatΓ³rio

  1. Controller recebe requisiΓ§Γ£o com parΓ’metros
  2. Service valida dados e busca informaΓ§Γ΅es do banco
  3. Repository executa queries/procedures
  4. Service prepara dados (DTOs, projections)
  5. JasperReports compila template (.jrxml β†’ .jasper)
  6. JasperReports preenche template com dados
  7. ExportHelper exporta para formato solicitado (PDF/CSV/TXT)
  8. Controller retorna relatΓ³rio em base64

Última Atualização: 2025-12-01