Browse Source

Se agrego el reporte para buscar por rango de fechas

master
mramirezg 1 week ago
parent
commit
28747c20b1
6 changed files with 102 additions and 11 deletions
  1. +5
    -0
      pom.xml
  2. BIN
      src/main/bundles/prod.bundle
  3. +1
    -4
      src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java
  4. +1
    -1
      src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java
  5. +95
    -6
      src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java
  6. BIN
      src/main/resources/META-INF/resources/reportes/mantenimientoFechas.jasper

+ 5
- 0
pom.xml View File

@ -178,6 +178,11 @@
<version>7.0.3</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
</dependencies>


BIN
src/main/bundles/prod.bundle View File


+ 1
- 4
src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java View File

@ -1,9 +1,6 @@
package mx.gob.jumapacelaya.api;
import com.nimbusds.jose.shaded.gson.*;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.data.renderer.ComponentRenderer;
import com.google.gson.*;
import mx.gob.jumapacelaya.models.RedmineUser;
import mx.gob.jumapacelaya.models.Ticket;
import org.springframework.beans.factory.annotation.Value;


+ 1
- 1
src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java View File

@ -283,7 +283,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
// Se crea el recurso para descarga
StreamResource resource = new StreamResource("reporte.pdf", () -> new ByteArrayInputStream(pdf));
Anchor downloadLink = new Anchor(resource, "Descargar Reporte");
downloadLink.getElement().setAttribute("download", true);
downloadLink.setTarget("_blank");
downloadLink.setId("descargar-reporte-link");
add(downloadLink);


+ 95
- 6
src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java View File

@ -6,15 +6,14 @@ import com.vaadin.flow.component.button.ButtonVariant;
import com.vaadin.flow.component.checkbox.Checkbox;
import com.vaadin.flow.component.checkbox.CheckboxGroup;
import com.vaadin.flow.component.checkbox.CheckboxGroupVariant;
import com.vaadin.flow.component.datepicker.DatePicker;
import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.dialog.Dialog;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.grid.GridVariant;
import com.vaadin.flow.component.grid.HeaderRow;
import com.vaadin.flow.component.grid.dataview.GridListDataView;
import com.vaadin.flow.component.html.Div;
import com.vaadin.flow.component.html.H4;
import com.vaadin.flow.component.html.H5;
import com.vaadin.flow.component.html.Span;
import com.vaadin.flow.component.html.*;
import com.vaadin.flow.component.icon.Icon;
import com.vaadin.flow.component.icon.VaadinIcon;
import com.vaadin.flow.component.notification.Notification;
@ -31,9 +30,13 @@ import com.vaadin.flow.data.value.ValueChangeMode;
import com.vaadin.flow.function.ValueProvider;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.StreamResource;
import jakarta.annotation.security.PermitAll;
import mx.gob.jumapacelaya.models.PlanAnual;
import mx.gob.jumapacelaya.services.DatabaseService;
import mx.gob.jumapacelaya.services.ReportService;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.*;
import org.springframework.core.env.Environment;
@ -41,6 +44,7 @@ import org.vaadin.lineawesome.LineAwesomeIcon;
import java.io.*;
import java.lang.reflect.Array;
import java.sql.Date;
import java.time.LocalDate;
import java.time.Year;
import java.time.format.DateTimeFormatter;
@ -54,6 +58,7 @@ import java.util.function.Consumer;
public class PlanAnualView extends VerticalLayout {
private final Environment env;
private final ReportService reportService;
H4 titulo = new H4();
H5 titulo1 = new H5();
@ -65,10 +70,14 @@ public class PlanAnualView extends VerticalLayout {
private final DatabaseService databaseService;
Grid<PlanAnual> planAnualGrid;
Button btnColumns;
Button btnImprimirRpt;
HorizontalLayout btnImprimirLayout;
public PlanAnualView(DatabaseService databaseService, Environment env) {
public PlanAnualView(DatabaseService databaseService, Environment env, ReportService reportService) {
this.databaseService = databaseService;
this.env = env;
this.reportService = reportService;
setupHeader();
Grid<PlanAnual> planAnualGrid = setupGrid();
@ -154,7 +163,7 @@ public class PlanAnualView extends VerticalLayout {
btnInsertar = new Button("Insertar archivo", event -> insertarDatos());
btnInsertar.setVisible(false);
gridLayout.add(btnColumns,planAnualGrid);
gridLayout.add(btnImprimirLayout,planAnualGrid);
gridLayout.setSizeFull();
uploadLayout.add(upload, btnInsertar);
@ -309,6 +318,12 @@ public class PlanAnualView extends VerticalLayout {
btnColumns = new Button(VaadinIcon.GRID_H.create());
btnColumns.addThemeVariants(ButtonVariant.LUMO_ICON);
btnColumns.setAriaLabel("Show/Hide Columns");
btnColumns.setTooltipText("Show/Hide Columns");
btnImprimirRpt = new Button(VaadinIcon.PRINT.create());
btnImprimirRpt.addClickListener(event -> sacarReporte());
btnImprimirRpt.setTooltipText("Imprimir reporte");
btnImprimirLayout = new HorizontalLayout(btnColumns, btnImprimirRpt);
HorizontalLayout columnSelectorLayout = new HorizontalLayout();
columnSelectorLayout.setAlignItems(Alignment.END);
@ -519,4 +534,78 @@ public class PlanAnualView extends VerticalLayout {
gridLayout.setVisible(hasItems);
uploadLayout.setVisible(!hasItems);
}
private void sacarReporte() {
Dialog dialog = new Dialog();
dialog.setHeaderTitle("Seleccione la fecha de inicio y fin");
DatePicker.DatePickerI18n i18n = new DatePicker.DatePickerI18n()
.setWeekdays(List.of("Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sabado"))
.setWeekdaysShort(List.of("Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"))
.setMonthNames(List.of("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"))
.setFirstDayOfWeek(1)
.setToday("Hoy")
.setCancel("Cancelar")
.setDateFormat("dd/MM/yyyy");
DatePicker fechaInicio = new DatePicker("Fecha de inicio:");
fechaInicio.setRequired(true);
fechaInicio.setI18n(i18n);
DatePicker fechaFin = new DatePicker("Fecha de fin:");
fechaFin.setRequired(true);
fechaFin.setI18n(i18n);
Button btnGenerar = new Button("Generar", VaadinIcon.PRINT.create());
btnGenerar.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
btnGenerar.addClickListener(e -> {
if (fechaInicio.getValue() == null || fechaFin.getValue() == null) {
Notification.show("Por favor, seleccione ambas fechas.", 3000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR);
return;
}
LocalDate inicio = fechaInicio.getValue();
LocalDate fin = fechaFin.getValue();
try {
// Prepara los parámetros para el reporte
Map<String, Object> parametros = new HashMap<>();
parametros.put("FECHAINICIO", java.sql.Date.valueOf(inicio));
parametros.put("FECHAFIN", java.sql.Date.valueOf(fin));
// Genera el PDF
byte[] pdf = reportService.generarReporte("mantenimientoFechas", parametros);
// Creando el recurso de descarga
StreamResource resource = new StreamResource("reporte.pdf", () -> new ByteArrayInputStream(pdf));
Anchor downloadLink = new Anchor(resource, "Descargar Reporte");
downloadLink.setTarget("_blank");
downloadLink.setId("descargar-reporte-link");
add(downloadLink);
getUI().ifPresent(ui ->
ui.getPage().executeJs("document.getElementById('descargar-reporte-link').click();")
);
} catch (Exception ex) {
Notification.show("Error al genrar el reporte: " + ex.getMessage(), 5000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR);
ex.printStackTrace();
}
});
Button btnCancelar = new Button("Cancelar", VaadinIcon.CLOSE_CIRCLE.create(), e -> dialog.close());
dialog.getFooter().add(btnCancelar);
dialog.getFooter().add(btnGenerar);
HorizontalLayout fechasLayout = new HorizontalLayout(fechaInicio, fechaFin);
dialog.add(fechasLayout);
dialog.open();
}
}

BIN
src/main/resources/META-INF/resources/reportes/mantenimientoFechas.jasper View File


Loading…
Cancel
Save