|
|
@ -17,6 +17,7 @@ import com.vaadin.flow.component.grid.Grid; |
|
|
|
import com.vaadin.flow.component.grid.GridVariant; |
|
|
|
import com.vaadin.flow.component.gridpro.GridPro; |
|
|
|
import com.vaadin.flow.component.html.H3; |
|
|
|
import com.vaadin.flow.component.html.Image; |
|
|
|
import com.vaadin.flow.component.html.Span; |
|
|
|
import com.vaadin.flow.component.icon.Icon; |
|
|
|
import com.vaadin.flow.component.icon.VaadinIcon; |
|
|
@ -32,6 +33,7 @@ import com.vaadin.flow.router.BeforeEnterObserver; |
|
|
|
import com.vaadin.flow.router.PageTitle; |
|
|
|
import com.vaadin.flow.router.Route; |
|
|
|
|
|
|
|
import de.f0rce.signaturepad.SignaturePad; |
|
|
|
import jakarta.annotation.security.PermitAll; |
|
|
|
import mx.gob.jumapacelaya.models.ActualizacioneSeguridadModel; |
|
|
|
import mx.gob.jumapacelaya.models.DepartamentosModel; |
|
|
@ -40,6 +42,8 @@ import mx.gob.jumapacelaya.models.HardwareDetalle; |
|
|
|
import mx.gob.jumapacelaya.models.TiposMantenimiento; |
|
|
|
import mx.gob.jumapacelaya.models.Usuario; |
|
|
|
import mx.gob.jumapacelaya.services.DatabaseService; |
|
|
|
import mx.gob.jumapacelaya.services.SecurityService; |
|
|
|
import oracle.net.aso.f; |
|
|
|
|
|
|
|
@PageTitle("Detalles del mantenimiento") |
|
|
|
@Route(value = "detalles", layout = MainLayout.class) |
|
|
@ -70,10 +74,22 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
|
private int planAnualIdActual; |
|
|
|
private int mantenimientoIdActual; |
|
|
|
private Dialog confirmDialog; |
|
|
|
private SignaturePad userSignPad; |
|
|
|
private SignaturePad smtSignPad; |
|
|
|
private SignaturePad gciaSignPad; |
|
|
|
private final HorizontalLayout firmasLAyout = new HorizontalLayout(); |
|
|
|
|
|
|
|
// Agrega estos atributos: |
|
|
|
private VerticalLayout userSignLayout; |
|
|
|
private VerticalLayout smtSignLayout; |
|
|
|
private VerticalLayout gciaSignLayout; |
|
|
|
|
|
|
|
private final SecurityService securityService; |
|
|
|
|
|
|
|
DatabaseService service = new DatabaseService(); |
|
|
|
|
|
|
|
public DetallesMantView() { |
|
|
|
public DetallesMantView(SecurityService securityService) { |
|
|
|
this.securityService = securityService; |
|
|
|
setPadding(true); |
|
|
|
|
|
|
|
mainLayout = new VerticalLayout(); |
|
|
@ -284,7 +300,8 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
|
confirmDialog.getFooter().add(dialogButtons); |
|
|
|
|
|
|
|
|
|
|
|
mainLayout.add(headerLayout,layout2,fechasLayout,layout3,gridHardware,gridActualizaciones,botonesLayout); |
|
|
|
addSignatureSection(); |
|
|
|
mainLayout.add(headerLayout,layout2,fechasLayout,layout3,gridHardware,gridActualizaciones,firmasLAyout,botonesLayout); |
|
|
|
add(mainLayout); |
|
|
|
} |
|
|
|
|
|
|
@ -345,6 +362,37 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void addSignatureSection() { |
|
|
|
// Usa los atributos de clase, no variables locales |
|
|
|
userSignLayout = new VerticalLayout(); |
|
|
|
userSignLayout.setWidthFull(); |
|
|
|
userSignLayout.setAlignItems(Alignment.CENTER); |
|
|
|
userSignPad = new SignaturePad(); |
|
|
|
userSignPad.setHeight("200px"); |
|
|
|
userSignLayout.add(userSignPad, new Span("Usuario Interno")); |
|
|
|
|
|
|
|
smtSignLayout = new VerticalLayout(); |
|
|
|
smtSignLayout.setWidthFull(); |
|
|
|
smtSignLayout.setAlignItems(Alignment.CENTER); |
|
|
|
smtSignPad = new SignaturePad(); |
|
|
|
smtSignPad.setHeight("200px"); |
|
|
|
smtSignLayout.add(smtSignPad, new Span("Responsable de Soporte")); |
|
|
|
|
|
|
|
gciaSignLayout = new VerticalLayout(); |
|
|
|
gciaSignLayout.setWidthFull(); |
|
|
|
gciaSignLayout.setAlignItems(Alignment.CENTER); |
|
|
|
gciaSignPad = new SignaturePad(); |
|
|
|
gciaSignPad.setHeight("200px"); |
|
|
|
gciaSignLayout.add(gciaSignPad, new Span("Gcia. de T.I")); |
|
|
|
|
|
|
|
firmasLAyout.removeAll(); |
|
|
|
firmasLAyout.setWidthFull(); |
|
|
|
firmasLAyout.setSpacing(false); |
|
|
|
firmasLAyout.setJustifyContentMode(JustifyContentMode.CENTER); |
|
|
|
firmasLAyout.add(userSignLayout, smtSignLayout, gciaSignLayout); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public void beforeEnter(BeforeEnterEvent event) { |
|
|
|
String idParam = event.getLocation().getQueryParameters().getParameters().get("id") != null |
|
|
@ -392,6 +440,42 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
|
List<ActualizacioneSeguridadModel> listaActualizaciones = service.getActualizacionesSeg(mantId); |
|
|
|
gridActualizaciones.setItems(listaActualizaciones); |
|
|
|
gridActualizaciones.setVisible(!listaActualizaciones.isEmpty()); |
|
|
|
|
|
|
|
|
|
|
|
// --- Mostrar firmas como imagen si existen --- |
|
|
|
// Firma usuario |
|
|
|
if (detalle.getFirmaUser() != null && !detalle.getFirmaUser().isEmpty()) { |
|
|
|
String firmaUser = detalle.getFirmaUser(); |
|
|
|
if (!firmaUser.startsWith("data:image")) { |
|
|
|
firmaUser = "data:image/png;base64," + firmaUser; |
|
|
|
} |
|
|
|
Image firmaUsuarioImg = new Image(firmaUser, "Firma del usuario"); |
|
|
|
firmaUsuarioImg.setHeight("200px"); |
|
|
|
firmaUsuarioImg.setWidthFull(); |
|
|
|
userSignLayout.replace(userSignPad, firmaUsuarioImg); |
|
|
|
} |
|
|
|
// Firma soporte |
|
|
|
if (detalle.getFirmaSmt() != null && !detalle.getFirmaSmt().isEmpty()) { |
|
|
|
String firmaSmt = detalle.getFirmaSmt(); |
|
|
|
if (!firmaSmt.startsWith("data:image")) { |
|
|
|
firmaSmt = "data:image/png;base64," + firmaSmt; |
|
|
|
} |
|
|
|
Image firmaSmtImg = new Image(firmaSmt, "Firma del usuario de soporte"); |
|
|
|
firmaSmtImg.setHeight("200px"); |
|
|
|
firmaSmtImg.setWidthFull(); |
|
|
|
smtSignLayout.replace(smtSignPad, firmaSmtImg); |
|
|
|
} |
|
|
|
// Firma gerente (si aplica) |
|
|
|
if (detalle.getFirmaGcia() != null && !detalle.getFirmaGcia().isEmpty()) { |
|
|
|
String firmaGcia = detalle.getFirmaGcia(); |
|
|
|
if (!firmaGcia.startsWith("data:image")) { |
|
|
|
firmaGcia = "data:image/png;base64," + firmaGcia; |
|
|
|
} |
|
|
|
Image firmaGciaImg = new Image(firmaGcia, "Firma del gerente"); |
|
|
|
firmaGciaImg.setHeight("200px"); |
|
|
|
firmaGciaImg.setWidthFull(); |
|
|
|
gciaSignLayout.replace(gciaSignPad, firmaGciaImg); |
|
|
|
} |
|
|
|
} else { |
|
|
|
id.setText("No se encontro informacion para el Plan ID: " + planId); |
|
|
|
} |
|
|
|