Commit 628cba00 by paolo

perf: precargar datos externos y agrupar grabado masivo de renta quinta

Elimina consultas por trabajador (otros empleadores, proyeccion docente-hora,
findById de pl_renta_quinta) en grabar-masivo, grilla y detalle; desacopla
el historial del contexto de persistencia y habilita JDBC batching.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
parent d5801bec
...@@ -11,4 +11,7 @@ public interface RetencionOtrosEmpleadoresRepository ...@@ -11,4 +11,7 @@ public interface RetencionOtrosEmpleadoresRepository
List<RetencionOtrosEmpleadores> findByDocumentoTrabajadorAndAnioOrderByMes( List<RetencionOtrosEmpleadores> findByDocumentoTrabajadorAndAnioOrderByMes(
String documentoTrabajador, Integer anio); String documentoTrabajador, Integer anio);
/** Declaraciones del año de varios trabajadores en una sola consulta (grilla / grabado masivo). */
List<RetencionOtrosEmpleadores> findByAnioAndDocumentoTrabajadorIn(Integer anio, List<String> documentosTrabajador);
} }
...@@ -15,6 +15,10 @@ public interface ProyeccionDocenteHoraRepository extends JpaRepository<Proyeccio ...@@ -15,6 +15,10 @@ public interface ProyeccionDocenteHoraRepository extends JpaRepository<Proyeccio
List<ProyeccionDocenteHora> findByNumeroDocumentoAndProyeccionAnioOrderByProyeccionMesAscBoletaTipoPersonalAsc( List<ProyeccionDocenteHora> findByNumeroDocumentoAndProyeccionAnioOrderByProyeccionMesAscBoletaTipoPersonalAsc(
String numeroDocumento, Integer proyeccionAnio); String numeroDocumento, Integer proyeccionAnio);
/** Filas del año de varios docentes en una sola consulta (grilla / grabado masivo). */
List<ProyeccionDocenteHora> findByProyeccionAnioAndNumeroDocumentoIn(Integer proyeccionAnio,
List<String> numerosDocumento);
/** Clave lógica (la tabla solo tiene PK sobre id_proyeccion). */ /** Clave lógica (la tabla solo tiene PK sobre id_proyeccion). */
Optional<ProyeccionDocenteHora> findFirstByNumeroDocumentoAndBoletaTipoPersonalAndProyeccionAnioAndProyeccionMes( Optional<ProyeccionDocenteHora> findFirstByNumeroDocumentoAndBoletaTipoPersonalAndProyeccionAnioAndProyeccionMes(
String numeroDocumento, String boletaTipoPersonal, Integer proyeccionAnio, Integer proyeccionMes); String numeroDocumento, String boletaTipoPersonal, Integer proyeccionAnio, Integer proyeccionMes);
......
...@@ -7,6 +7,8 @@ spring: ...@@ -7,6 +7,8 @@ spring:
password: ${DB_PASSWORD} password: ${DB_PASSWORD}
hikari: hikari:
maximum-pool-size: 10 maximum-pool-size: 10
data-source-properties:
reWriteBatchedInserts: true
jpa: jpa:
hibernate: hibernate:
ddl-auto: validate # nunca 'update'/'create' sobre esta tabla ddl-auto: validate # nunca 'update'/'create' sobre esta tabla
...@@ -15,6 +17,10 @@ spring: ...@@ -15,6 +17,10 @@ spring:
hibernate: hibernate:
default_schema: planilla default_schema: planilla
format_sql: true format_sql: true
jdbc:
batch_size: 200 # grabado masivo: inserts/updates de pl_renta_quinta en lote
order_inserts: true
order_updates: true
hbm2ddl: hbm2ddl:
# nuevo.personal es una foreign table (postgres_fdw): el driver la reporta como # nuevo.personal es una foreign table (postgres_fdw): el driver la reporta como
# TABLE_TYPE "FOREIGN TABLE", no "TABLE", y sin esto ddl-auto:validate la da como # TABLE_TYPE "FOREIGN TABLE", no "TABLE", y sin esto ddl-auto:validate la da como
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment