Browse Source

Se puso una imagen fija en el lugar donde va la firma de la gerencia, en lo que se tiene una imagen de la firma real, ya no se pueden modificar las firmas una vez guadado el mantenimiento

master
mramirezg 1 month ago
parent
commit
cfbed03ff7
5 changed files with 27 additions and 88 deletions
  1. BIN
      src/main/bundles/prod.bundle
  2. +7
    -28
      src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java
  3. +7
    -46
      src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java
  4. +13
    -14
      src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java
  5. BIN
      src/main/resources/META-INF/resources/images/firmaGcia.png

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


+ 7
- 28
src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java View File

@ -322,10 +322,10 @@ public class DatabaseService {
// INSERTAR EN TABLA: MANTENIMINETOS
public int insertarMantenimiento(LocalDate fecha, String tipoMantId, String departamentoId, String empleadoId,
String formaMant, String equipoId, String userSignatureBase64,
String smtSignatureBase64, String gciaSignatureBase64, String planAnualId) {
String smtSignatureBase64, String planAnualId) {
String query = "INSERT INTO MANTENIMIENTOS (fecha, tipoMantId, departamentoId, empleadoId, formaMant, nombreequipo," +
" firmaUsuario, firmaSmt, firmaGcia, planAnualId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING MANTENIMIENTOID INTO ?";
" firmaUsuario, firmaSmt, planAnualId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING MANTENIMIENTOID INTO ?";
String updateStatusQuery = "UPDATE PLANANUAL SET estado = 'REALIZADO' WHERE planAnualId = ?";
@ -364,15 +364,9 @@ public class DatabaseService {
preparedStatement.setNull(8, Types.VARCHAR);
}
if (gciaSignatureBase64 != null) {
preparedStatement.setString(9, gciaSignatureBase64);
} else {
preparedStatement.setNull(9, Types.VARCHAR);
}
preparedStatement.setLong(10, Long.parseLong(planAnualId));
preparedStatement.setLong(9, Long.parseLong(planAnualId));
preparedStatement.registerReturnParameter(11, Types.NUMERIC);
preparedStatement.registerReturnParameter(10, Types.NUMERIC);
preparedStatement.executeUpdate();
@ -624,8 +618,8 @@ public class DatabaseService {
}
}
public boolean actualizarMantenimiento(int mantenimientoId, int tipoId, String departamentoId, int empleadoId, LocalDate fechaRealizado, String nombreEquipo, String firmausuario, String firmasmt, String firmagcia) {
String sql = "UPDATE MANTENIMIENTOS SET TIPOMANTID=?, DEPARTAMENTOID=?, EMPLEADOID=?, FECHA=?, NOMBREEQUIPO=?, FIRMAUSUARIO=?, FIRMASMT=?, FIRMAGCIA=? WHERE MANTENIMIENTOID=?";
public boolean actualizarMantenimiento(int mantenimientoId, int tipoId, String departamentoId, int empleadoId, LocalDate fechaRealizado, String nombreEquipo) {
String sql = "UPDATE MANTENIMIENTOS SET TIPOMANTID=?, DEPARTAMENTOID=?, EMPLEADOID=?, FECHA=?, NOMBREEQUIPO=? WHERE MANTENIMIENTOID=?";
try (Connection conn = getMysqlConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setInt(1, tipoId); // tipoId es int
@ -633,22 +627,7 @@ public class DatabaseService {
stmt.setInt(3, empleadoId); // empleadoId es int
stmt.setDate(4, fechaRealizado != null ? Date.valueOf(fechaRealizado) : null);
stmt.setString(5, nombreEquipo);
if (firmausuario != null) {
stmt.setString(6, firmausuario);
} else {
stmt.setNull(6, Types.VARCHAR);
}
if (firmasmt != null) {
stmt.setString(7, firmasmt);
} else {
stmt.setNull(7, Types.VARCHAR);
}
if (firmagcia != null) {
stmt.setString(8, firmagcia);
} else {
stmt.setNull(8, Types.VARCHAR);
}
stmt.setInt(9, mantenimientoId);
stmt.setInt(6, mantenimientoId);
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();


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

@ -223,15 +223,6 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
btnCancelar.setVisible(true);
gridHardware.setEditOnClick(true);
gridActualizaciones.setEditOnClick(true);
if (firmaUsuarioImg != null && firmaUsuarioImg.getParent().isPresent()) {
userSignLayout.replace(firmaUsuarioImg, userSignPad);
userSignPad.clear();
}
if (firmaSmtImg != null && firmaSmtImg.getParent().isPresent()) {
smtSignLayout.replace(firmaSmtImg, smtSignPad);
smtSignPad.clear();
}
});
btnCancelar.addClickListener(e -> {
@ -350,28 +341,6 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
LocalDate fechaRealizado = !txtFecha.getValue().isEmpty() ? LocalDate.parse(txtFecha.getValue(), formatter) : null;
// Obtener las firmas como en MantenimientoView
byte[] userSignatureBytes = userSignPad.getImageBase64();
byte[] smtSignatureBytes = smtSignPad.getImageBase64();
byte[] gciaSignatureBytes = gciaSignPad.getImageBase64();
String userSignatureBase64 = (userSignatureBytes != null)
? Base64.getEncoder().encodeToString(userSignatureBytes)
: null;
String smtSignatureBase64 = (smtSignatureBytes != null)
? Base64.getEncoder().encodeToString(smtSignatureBytes)
: null;
String gciaSignatureBase64 = (gciaSignatureBytes != null)
? Base64.getEncoder().encodeToString(gciaSignatureBytes)
: null;
// Si la firma es vacía, asigna null
if (userSignatureBase64 != null && esFirmaVacia(userSignatureBase64))
userSignatureBase64 = null;
if (smtSignatureBase64 != null && esFirmaVacia(smtSignatureBase64))
smtSignatureBase64 = null;
if (gciaSignatureBase64 != null && esFirmaVacia(gciaSignatureBase64))
gciaSignatureBase64 = null;
// ACTUALIZA PLANANUAL (nombre del equipo y fecha programada)
@ -385,10 +354,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
departamentoId,
empleadoId,
fechaRealizado,
txtEquipo.getValue(),
userSignatureBase64,
smtSignatureBase64,
gciaSignatureBase64
txtEquipo.getValue()
)) {
exito = false;
}
@ -551,17 +517,12 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
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;
}
firmaGciaImg = new Image(firmaGcia, "Firma del gerente");
firmaGciaImg.setHeight("200px");
firmaGciaImg.setWidthFull();
gciaSignLayout.replace(gciaSignPad, firmaGciaImg);
}
Image firmaGcia = new Image("images/firmaGcia.png", "Firma de la Gcia. de T.I");
firmaGcia.setHeight("200px");
firmaGcia.setWidthFull();
gciaSignLayout.replace(gciaSignPad, firmaGcia);
} else {
id.setText("No se encontro informacion para el Plan ID: " + planId);
}


+ 13
- 14
src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java View File

@ -9,6 +9,7 @@ import com.vaadin.flow.component.datepicker.DatePicker;
import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.html.H1;
import com.vaadin.flow.component.html.H2;
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;
@ -72,7 +73,7 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
private RadioButtonGroup<String> masActualizacionesGroup;
private SignaturePad userSignPad;
private SignaturePad smtSignPad;
private SignaturePad gciatiSignPad;
//private SignaturePad gciatiSignPad;
Span userSignSpan = new Span("Nombre Usuario");
@ -459,17 +460,15 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
smtSignLayout.add(smtSignPad, smtSignSpan, tituloSMT);
VerticalLayout gcialSignLayout = new VerticalLayout();
gciatiSignPad = new SignaturePad();
gciatiSignPad.setBackgroundColor("#FFFFFF");
gciatiSignPad.setHeight("200px");
gciatiSignPad.setPenColor("#000000");
gciatiSignPad.getElement().getStyle().set("border", "1px solid black");
Span gciatiSignSpan = new Span("L.I. David Olivares Ramos");
Span tituloGerente = new Span("Encargado de Despacho Gcia. T.I");
Image firmaGcia = new Image("images/firmaGcia.png", "Firma Gerente de Sistemas");
firmaGcia.setHeight("200px");
firmaGcia.setWidthFull();
Span gciatiSignSpan = new Span("Lic. Juan Pablo Torres Alvárez");
Span tituloGerente = new Span("Gerente de T.I");
gcialSignLayout.setSizeFull();
gcialSignLayout.setSpacing(false);
gcialSignLayout.setAlignItems(Alignment.CENTER);
gcialSignLayout.add(gciatiSignPad, gciatiSignSpan, tituloGerente);
gcialSignLayout.add(firmaGcia, gciatiSignSpan, tituloGerente);
@ -526,15 +525,15 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
byte[] userSignatureBytes = userSignPad.getImageBase64();
byte[] smtSignatureBytes = smtSignPad.getImageBase64();
byte[] gciaSignatureBytes = gciatiSignPad.getImageBase64();
//byte[] gciaSignatureBytes = gciatiSignPad.getImageBase64();
String userSignatureBase64 = Base64.getEncoder().encodeToString(userSignatureBytes);
String smtSignatureBase64 = Base64.getEncoder().encodeToString(smtSignatureBytes);
String gciaSignatureBase64 = Base64.getEncoder().encodeToString(gciaSignatureBytes);
//String gciaSignatureBase64 = Base64.getEncoder().encodeToString(gciaSignatureBytes);
if (esFirmaVacia(userSignatureBase64)) userSignatureBase64 = null;
if (esFirmaVacia(smtSignatureBase64)) smtSignatureBase64 = null;
if (esFirmaVacia(gciaSignatureBase64)) gciaSignatureBase64 = null;
//if (esFirmaVacia(gciaSignatureBase64)) gciaSignatureBase64 = null;
// Validación de campos de hardware
@ -585,7 +584,7 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
// Una vez que validamos todos los campos del formulario, procedemos a insertar en BD
try {
int isInserted = databaseService.insertarMantenimiento(fechaSeleccionada, tipoMantId, departamentoId, empleadoId, formaMantt, equipoId, userSignatureBase64, smtSignatureBase64, gciaSignatureBase64, planAnualValue);
int isInserted = databaseService.insertarMantenimiento(fechaSeleccionada, tipoMantId, departamentoId, empleadoId, formaMantt, equipoId, userSignatureBase64, smtSignatureBase64, planAnualValue);
if (isInserted <= 0) {
Notification.show("Error al guardar el mantenimiento", 4000, Notification.Position.MIDDLE)
@ -654,7 +653,7 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
txtCuales.clear();
userSignPad.clear();
smtSignPad.clear();
gciatiSignPad.clear();
//gciatiSignPad.clear();
for (HorizontalLayout layout : hardwareLayouts) {
((ComboBox<?>) layout.getComponentAt(0)).clear();


BIN
src/main/resources/META-INF/resources/images/firmaGcia.png View File

Before After
Width: 451  |  Height: 301  |  Size: 7.0 KiB

Loading…
Cancel
Save