Skip to content

Commit

Permalink
Report refactoring (#472)
Browse files Browse the repository at this point in the history
* Change the reporting compile strategy and move files to the new report folder

* Refactoring JasperReports

* Revert application.properties

* Fix tests
  • Loading branch information
belluccifranco authored Dec 8, 2023
1 parent 37522a8 commit abce9b5
Show file tree
Hide file tree
Showing 42 changed files with 343 additions and 493 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ nb-configuration.xml
.idea/
*.iml
/newrelic
src/main/resources/**/*.jasper
17 changes: 9 additions & 8 deletions src/main/java/sic/controller/CuentaCorrienteController.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import sic.service.IClienteService;
import sic.service.ICuentaCorrienteService;
import sic.service.IProveedorService;
import sic.util.FormatoReporte;

@RestController
@RequestMapping("/api/v1")
Expand Down Expand Up @@ -119,7 +120,7 @@ public ResponseEntity<byte[]> getReporteCuentaCorriente(
cuentaCorrienteService.getReporteCuentaCorrienteCliente(
cuentaCorrienteService.getCuentaCorrientePorCliente(
clienteService.getClienteNoEliminadoPorId(criteria.getIdCliente())),
formato);
FormatoReporte.XLSX);
headers.setContentLength(reporteXls.length);
return new ResponseEntity<>(reporteXls, headers, HttpStatus.OK);
}
Expand All @@ -130,7 +131,7 @@ public ResponseEntity<byte[]> getReporteCuentaCorriente(
cuentaCorrienteService.getReporteCuentaCorrienteCliente(
cuentaCorrienteService.getCuentaCorrientePorCliente(
clienteService.getClienteNoEliminadoPorId(criteria.getIdCliente())),
formato);
FormatoReporte.PDF);
return new ResponseEntity<>(reportePDF, headers, HttpStatus.OK);
}
default -> throw new BusinessServiceException(messageSource.getMessage(
Expand All @@ -148,32 +149,32 @@ public ResponseEntity<byte[]> getReporteListaDeCuentasCorrienteClientePorCriteri
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
return switch (formato) {
case "xlsx" ->
this.getReporteListaDeCuentasCorrienteClienteEnXlsx(headers, criteria, claims, formato);
this.getReporteListaDeCuentasCorrienteClienteEnXlsx(headers, criteria, claims);
case "pdf" ->
this.getReporteListaDeCuentasCorrienteClienteEnPdf(headers, criteria, claims, formato);
this.getReporteListaDeCuentasCorrienteClienteEnPdf(headers, criteria, claims);
default -> throw new BusinessServiceException(
messageSource.getMessage("mensaje_formato_no_valido", null, Locale.getDefault()));
};
}

private ResponseEntity<byte[]> getReporteListaDeCuentasCorrienteClienteEnXlsx(
HttpHeaders headers, BusquedaCuentaCorrienteClienteCriteria criteria, Claims claims, String formato) {
HttpHeaders headers, BusquedaCuentaCorrienteClienteCriteria criteria, Claims claims) {
headers.setContentType(new MediaType("application", "vnd.ms-excel"));
headers.set(CONTENT_DISPOSITION_HEADER, "attachment; filename=ListaClientes.xlsx");
byte[] reporteXls =
cuentaCorrienteService.getReporteListaDeCuentasCorrienteClientePorCriteria(
criteria, (int) claims.get(ID_USUARIO), formato);
criteria, (int) claims.get(ID_USUARIO), FormatoReporte.XLSX);
headers.setContentLength(reporteXls.length);
return new ResponseEntity<>(reporteXls, headers, HttpStatus.OK);
}

private ResponseEntity<byte[]> getReporteListaDeCuentasCorrienteClienteEnPdf(
HttpHeaders headers, BusquedaCuentaCorrienteClienteCriteria criteria, Claims claims, String formato) {
HttpHeaders headers, BusquedaCuentaCorrienteClienteCriteria criteria, Claims claims) {
headers.setContentType(MediaType.APPLICATION_PDF);
headers.add(CONTENT_DISPOSITION_HEADER, "attachment; filename=ListaClientes.pdf");
byte[] reportePDF =
cuentaCorrienteService.getReporteListaDeCuentasCorrienteClientePorCriteria(
criteria, (int) claims.get(ID_USUARIO), formato);
criteria, (int) claims.get(ID_USUARIO), FormatoReporte.PDF);
return new ResponseEntity<>(reportePDF, headers, HttpStatus.OK);
}
}
9 changes: 4 additions & 5 deletions src/main/java/sic/controller/ProductoController.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import sic.modelo.dto.*;
import sic.service.*;
import sic.exception.BusinessServiceException;
import sic.util.FormatoReporte;

import javax.persistence.EntityNotFoundException;

Expand Down Expand Up @@ -126,12 +127,10 @@ public void getListaDePrecios(
@RequestBody BusquedaProductoCriteria criteria,
@PathVariable long idSucursal,
@RequestParam(required = false) String formato) {
if (formato == null || formato.isEmpty()) {
formato = "xlsx";
}
if (formato == null || formato.isEmpty()) formato = "pdf";
switch (formato) {
case "xlsx" -> productoService.getListaDePreciosEnXls(criteria, idSucursal);
case "pdf" -> productoService.getListaDePreciosEnPdf(criteria, idSucursal);
case "xlsx" -> productoService.procesarReporteListaDePrecios(criteria, idSucursal, FormatoReporte.XLSX);
case "pdf" -> productoService.procesarReporteListaDePrecios(criteria, idSucursal, FormatoReporte.PDF);
default -> throw new BusinessServiceException(
messageSource.getMessage("mensaje_formato_no_valido", null, Locale.getDefault()));
}
Expand Down
20 changes: 8 additions & 12 deletions src/main/java/sic/service/ICuentaCorrienteService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import sic.modelo.*;
import sic.modelo.criteria.BusquedaCuentaCorrienteClienteCriteria;
import sic.modelo.criteria.BusquedaCuentaCorrienteProveedorCriteria;

import sic.util.FormatoReporte;
import java.math.BigDecimal;
import java.util.List;

Expand All @@ -18,11 +18,9 @@ public interface ICuentaCorrienteService {

BigDecimal getSaldoCuentaCorriente(long idCliente);

CuentaCorrienteCliente guardarCuentaCorrienteCliente(
CuentaCorrienteCliente cuentaCorrienteCliente);
CuentaCorrienteCliente guardarCuentaCorrienteCliente(CuentaCorrienteCliente cuentaCorrienteCliente);

CuentaCorrienteProveedor guardarCuentaCorrienteProveedor(
CuentaCorrienteProveedor cuentaCorrienteProveedor);
CuentaCorrienteProveedor guardarCuentaCorrienteProveedor(CuentaCorrienteProveedor cuentaCorrienteProveedor);

void validarReglasDeNegocio(CuentaCorriente cuentaCorriente);

Expand Down Expand Up @@ -50,8 +48,10 @@ Page<CuentaCorrienteProveedor> buscarCuentaCorrienteProveedor(

void asentarEnCuentaCorriente(Remito remito, TipoDeOperacion tipo);

byte[] getReporteCuentaCorrienteCliente(
CuentaCorrienteCliente cuentaCorrienteCliente, String formato);
byte[] getReporteCuentaCorrienteCliente(CuentaCorrienteCliente cuentaCorrienteCliente, FormatoReporte formato);

byte[] getReporteListaDeCuentasCorrienteClientePorCriteria(
BusquedaCuentaCorrienteClienteCriteria criteria, long idUsuarioLoggedIn, FormatoReporte formato);

List<RenglonCuentaCorriente> getUltimosDosMovimientos(CuentaCorriente cuentaCorriente);

Expand All @@ -65,11 +65,7 @@ byte[] getReporteCuentaCorrienteCliente(

RenglonCuentaCorriente getRenglonCuentaCorrienteDeRemito(Remito remito, boolean eliminado);

byte[] getReporteListaDeCuentasCorrienteClientePorCriteria(
BusquedaCuentaCorrienteClienteCriteria criteria, long idUsuarioLoggedIn, String formato);

BooleanBuilder getBuilder(
BusquedaCuentaCorrienteClienteCriteria criteria, long idUsuarioLoggedIn);
BooleanBuilder getBuilder(BusquedaCuentaCorrienteClienteCriteria criteria, long idUsuarioLoggedIn);

List<CuentaCorrienteCliente> buscarCuentasCorrienteClienteParaReporte(
BusquedaCuentaCorrienteClienteCriteria criteria, long idUsuarioLoggedIn);
Expand Down
18 changes: 11 additions & 7 deletions src/main/java/sic/service/IProductoService.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import sic.modelo.dto.*;
import sic.modelo.embeddable.CantidadProductoEmbeddable;
import sic.modelo.embeddable.PrecioProductoEmbeddable;
import sic.util.FormatoReporte;

public interface IProductoService {

Expand Down Expand Up @@ -38,9 +39,11 @@ void actualizarStockNotaCredito(

Page<Producto> buscarProductos(BusquedaProductoCriteria criteria, Long idSucursal);

Page<Producto> buscarProductosDeCatalogoParaUsuario(BusquedaProductoCriteria criteria, Long idSucursal, Long isSucursal);
Page<Producto> buscarProductosDeCatalogoParaUsuario(
BusquedaProductoCriteria criteria, Long idSucursal, Long isSucursal);

Page<Producto> buscarProductosDeCatalogoParaVenta(BusquedaProductoCriteria criteria, Long idSucursal, Long idUsuario, Long idCliente);
Page<Producto> buscarProductosDeCatalogoParaVenta(
BusquedaProductoCriteria criteria, Long idSucursal, Long idUsuario, Long idCliente);

void marcarFavoritos(Page<Producto> productos, long idUsuario);

Expand Down Expand Up @@ -75,17 +78,17 @@ BigDecimal calcularGananciaPorcentaje(

Producto getProductoPorCodigo(String codigo);

Producto getProductoPorDescripcion(String descripciona);
Producto getProductoPorDescripcion(String descripcion);

Producto getProductoNoEliminadoPorId(long idProducto);

BigDecimal calcularValorStock(BusquedaProductoCriteria criteria);

void getListaDePreciosEnXls(BusquedaProductoCriteria criteria, long idSucursal);
void procesarReporteListaDePrecios(BusquedaProductoCriteria criteria, long idSucursal, FormatoReporte formato);

void getListaDePreciosEnPdf(BusquedaProductoCriteria criteria, long idSucursal);
void enviarListaDeProductosPorEmail(String mailTo, byte[] listaDeProductos, FormatoReporte formato);

void enviarListaDeProductosPorEmail(String mailTo, byte[] listaDeProductos, String formato);
byte[] getReporteListaDePrecios(List<Producto> productos, FormatoReporte formato);

Producto guardar(NuevoProductoDTO producto, long idMedida, long idRubro, long idProveedor);

Expand Down Expand Up @@ -119,7 +122,8 @@ BigDecimal calcularGananciaPorcentaje(

void validarLongitudDeArrays(int longitudIds, int longitudCantidades);

ProductoFaltanteDTO construirNuevoProductoFaltante(Producto producto, BigDecimal cantidadSolicitada, BigDecimal cantidadDisponible, long idSucursal);
ProductoFaltanteDTO construirNuevoProductoFaltante(
Producto producto, BigDecimal cantidadSolicitada, BigDecimal cantidadDisponible, long idSucursal);

PrecioProductoEmbeddable construirPrecioProductoEmbeddable(ProductoDTO productoDTO);

Expand Down
Loading

0 comments on commit abce9b5

Please sign in to comment.