|
|
@ -54,28 +54,23 @@ import mx.gob.jumapacelaya.services.SecurityService; |
|
|
@CssImport("./themes/sistema-mantenimiento/styles.css") |
|
|
@CssImport("./themes/sistema-mantenimiento/styles.css") |
|
|
public class DetallesMantView extends VerticalLayout implements BeforeEnterObserver { |
|
|
public class DetallesMantView extends VerticalLayout implements BeforeEnterObserver { |
|
|
|
|
|
|
|
|
private H3 id; |
|
|
|
|
|
private VerticalLayout mainLayout; |
|
|
|
|
|
private HorizontalLayout headerLayout; |
|
|
|
|
|
private HorizontalLayout layout2; |
|
|
|
|
|
private HorizontalLayout layout3; |
|
|
|
|
|
private HorizontalLayout botonesLayout; |
|
|
|
|
|
|
|
|
private final H3 id; |
|
|
private HorizontalLayout fechasLayout; |
|
|
private HorizontalLayout fechasLayout; |
|
|
private TextField txtId; |
|
|
private TextField txtId; |
|
|
private TextField txtEquipo; |
|
|
|
|
|
private ComboBox<TiposMantenimiento> cbTipo; |
|
|
|
|
|
private TextField txtFecha; |
|
|
|
|
|
private TextField txtFechaProgramada; |
|
|
|
|
|
private TextField txtSituacion; |
|
|
|
|
|
private ComboBox<Usuario> cbUsuario; |
|
|
|
|
|
private ComboBox<DepartamentosModel> cbDepartamento; |
|
|
|
|
|
private GridPro<HardwareDetalle> gridHardware; |
|
|
|
|
|
private GridPro<ActualizacioneSeguridadModel> gridActualizaciones; |
|
|
|
|
|
private Button btnEditar; |
|
|
|
|
|
private Button btnEditarFirmas; |
|
|
|
|
|
private Button btnImprimirRepo; |
|
|
|
|
|
private Button btnCancelar; |
|
|
|
|
|
private Button btnGuardar; |
|
|
|
|
|
|
|
|
private final TextField txtEquipo; |
|
|
|
|
|
private final ComboBox<TiposMantenimiento> cbTipo; |
|
|
|
|
|
private final TextField txtFecha; |
|
|
|
|
|
private final TextField txtFechaProgramada; |
|
|
|
|
|
private final TextField txtSituacion; |
|
|
|
|
|
private final ComboBox<Usuario> cbUsuario; |
|
|
|
|
|
private final ComboBox<DepartamentosModel> cbDepartamento; |
|
|
|
|
|
private final GridPro<HardwareDetalle> gridHardware; |
|
|
|
|
|
private final GridPro<ActualizacioneSeguridadModel> gridActualizaciones; |
|
|
|
|
|
private final Button btnEditar; |
|
|
|
|
|
private final Button btnEditarFirmas; |
|
|
|
|
|
private final Button btnImprimirRepo; |
|
|
|
|
|
private final Button btnCancelar; |
|
|
|
|
|
private final Button btnGuardar; |
|
|
private int planAnualIdActual; |
|
|
private int planAnualIdActual; |
|
|
private int mantenimientoIdActual; |
|
|
private int mantenimientoIdActual; |
|
|
private Dialog confirmDialog; |
|
|
private Dialog confirmDialog; |
|
|
@ -91,29 +86,25 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
private VerticalLayout smtSignLayout; |
|
|
private VerticalLayout smtSignLayout; |
|
|
private VerticalLayout gciaSignLayout; |
|
|
private VerticalLayout gciaSignLayout; |
|
|
|
|
|
|
|
|
private final SecurityService securityService; |
|
|
|
|
|
private final DatabaseService service; |
|
|
private final DatabaseService service; |
|
|
private final ReportService reportService; |
|
|
|
|
|
|
|
|
|
|
|
public DetallesMantView(SecurityService securityService, DatabaseService service, ReportService reportService) { |
|
|
public DetallesMantView(SecurityService securityService, DatabaseService service, ReportService reportService) { |
|
|
this.service = service; |
|
|
this.service = service; |
|
|
this.securityService = securityService; |
|
|
|
|
|
this.reportService = reportService; |
|
|
|
|
|
setPadding(true); |
|
|
setPadding(true); |
|
|
|
|
|
|
|
|
mainLayout = new VerticalLayout(); |
|
|
|
|
|
|
|
|
VerticalLayout mainLayout = new VerticalLayout(); |
|
|
mainLayout.setHeightFull(); |
|
|
mainLayout.setHeightFull(); |
|
|
mainLayout.getStyle() |
|
|
mainLayout.getStyle() |
|
|
.set("box-shadow","0 4px 8px rgba(0,0,0,0.2)") |
|
|
|
|
|
.set("border-radius", "12px") |
|
|
|
|
|
.set("background-color", "white") |
|
|
|
|
|
.set("padding", "1rem") |
|
|
|
|
|
.set("margin", "1rem auto"); |
|
|
|
|
|
|
|
|
.set("box-shadow","0 4px 8px rgba(0,0,0,0.2)") |
|
|
|
|
|
.set("border-radius", "12px") |
|
|
|
|
|
.set("background-color", "white") |
|
|
|
|
|
.set("padding", "1rem") |
|
|
|
|
|
.set("margin", "1rem auto"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
id = new H3(); |
|
|
id = new H3(); |
|
|
|
|
|
|
|
|
headerLayout = new HorizontalLayout(); |
|
|
|
|
|
|
|
|
HorizontalLayout headerLayout = new HorizontalLayout(); |
|
|
headerLayout.setWidthFull(); |
|
|
headerLayout.setWidthFull(); |
|
|
headerLayout.add(id); |
|
|
headerLayout.add(id); |
|
|
|
|
|
|
|
|
@ -129,7 +120,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
cbDepartamento.setItems(service.getDepartamentos()); |
|
|
cbDepartamento.setItems(service.getDepartamentos()); |
|
|
cbDepartamento.setItemLabelGenerator(DepartamentosModel::getNombre); |
|
|
cbDepartamento.setItemLabelGenerator(DepartamentosModel::getNombre); |
|
|
|
|
|
|
|
|
layout2 = new HorizontalLayout(); |
|
|
|
|
|
|
|
|
HorizontalLayout layout2 = new HorizontalLayout(); |
|
|
layout2.setWidthFull(); |
|
|
layout2.setWidthFull(); |
|
|
txtEquipo = new TextField("Equipo:"); |
|
|
txtEquipo = new TextField("Equipo:"); |
|
|
txtEquipo.setReadOnly(true); |
|
|
txtEquipo.setReadOnly(true); |
|
|
@ -147,7 +138,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
txtSituacion.setReadOnly(true); |
|
|
txtSituacion.setReadOnly(true); |
|
|
fechasLayout.add(txtFechaProgramada,txtFecha,txtSituacion); |
|
|
fechasLayout.add(txtFechaProgramada,txtFecha,txtSituacion); |
|
|
|
|
|
|
|
|
layout3 = new HorizontalLayout(); |
|
|
|
|
|
|
|
|
HorizontalLayout layout3 = new HorizontalLayout(); |
|
|
layout3.setWidthFull(); |
|
|
layout3.setWidthFull(); |
|
|
cbUsuario.setReadOnly(true); |
|
|
cbUsuario.setReadOnly(true); |
|
|
cbDepartamento.setReadOnly(true); |
|
|
cbDepartamento.setReadOnly(true); |
|
|
@ -159,22 +150,22 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
// Grid que muestra los detalles del hardware |
|
|
// Grid que muestra los detalles del hardware |
|
|
gridHardware = new GridPro<>(); |
|
|
gridHardware = new GridPro<>(); |
|
|
gridHardware.addColumn(item -> item.getDescripcion()) |
|
|
gridHardware.addColumn(item -> item.getDescripcion()) |
|
|
.setHeader("Descripción"); |
|
|
|
|
|
|
|
|
.setHeader("Descripción"); |
|
|
|
|
|
|
|
|
gridHardware.addEditColumn(HardwareDetalle::getNumSerie) |
|
|
gridHardware.addEditColumn(HardwareDetalle::getNumSerie) |
|
|
.text((item, newValue) -> item.setNumSerie(newValue)) |
|
|
|
|
|
.setHeader("No. Serie") |
|
|
|
|
|
.setEditorComponent(new TextField()); |
|
|
|
|
|
|
|
|
.text((item, newValue) -> item.setNumSerie(newValue)) |
|
|
|
|
|
.setHeader("No. Serie") |
|
|
|
|
|
.setEditorComponent(new TextField()); |
|
|
|
|
|
|
|
|
gridHardware.addEditColumn(HardwareDetalle::getModelo) |
|
|
gridHardware.addEditColumn(HardwareDetalle::getModelo) |
|
|
.text((item, newValue) -> item.setModelo(newValue)) |
|
|
|
|
|
.setHeader("Modelo") |
|
|
|
|
|
.setEditorComponent(new TextField()); |
|
|
|
|
|
|
|
|
.text((item, newValue) -> item.setModelo(newValue)) |
|
|
|
|
|
.setHeader("Modelo") |
|
|
|
|
|
.setEditorComponent(new TextField()); |
|
|
|
|
|
|
|
|
gridHardware.addEditColumn(HardwareDetalle::getPlaca) |
|
|
gridHardware.addEditColumn(HardwareDetalle::getPlaca) |
|
|
.text((item, newValue) -> item.setPlaca(newValue)) |
|
|
|
|
|
.setHeader("Placa") |
|
|
|
|
|
.setEditorComponent(new TextField()); |
|
|
|
|
|
|
|
|
.text((item, newValue) -> item.setPlaca(newValue)) |
|
|
|
|
|
.setHeader("Placa") |
|
|
|
|
|
.setEditorComponent(new TextField()); |
|
|
|
|
|
|
|
|
gridHardware.setWidthFull(); |
|
|
gridHardware.setWidthFull(); |
|
|
gridHardware.setEditOnClick(false); |
|
|
gridHardware.setEditOnClick(false); |
|
|
@ -186,14 +177,14 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
// Grid que muestra las actualizaciones de seguridad |
|
|
// Grid que muestra las actualizaciones de seguridad |
|
|
gridActualizaciones = new GridPro<>(); |
|
|
gridActualizaciones = new GridPro<>(); |
|
|
gridActualizaciones.addEditColumn(ActualizacioneSeguridadModel::getDescripcion) |
|
|
gridActualizaciones.addEditColumn(ActualizacioneSeguridadModel::getDescripcion) |
|
|
.text((item, newValue) -> item.setDescripcion(newValue)) |
|
|
|
|
|
.setHeader("Descripción") |
|
|
|
|
|
.setEditorComponent(new TextField()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.text((item, newValue) -> item.setDescripcion(newValue)) |
|
|
|
|
|
.setHeader("Descripción") |
|
|
|
|
|
.setEditorComponent(new TextField()); |
|
|
|
|
|
|
|
|
gridActualizaciones.addEditColumn(ActualizacioneSeguridadModel::getOtrasactualizaciones) |
|
|
gridActualizaciones.addEditColumn(ActualizacioneSeguridadModel::getOtrasactualizaciones) |
|
|
.text((item, newValue) -> item.setOtrasactualizaciones(newValue)) |
|
|
|
|
|
.setHeader("Otras Actualizaciones") |
|
|
|
|
|
.setEditorComponent(new TextField()); |
|
|
|
|
|
|
|
|
.text((item, newValue) -> item.setOtrasactualizaciones(newValue)) |
|
|
|
|
|
.setHeader("Otras Actualizaciones") |
|
|
|
|
|
.setEditorComponent(new TextField()); |
|
|
|
|
|
|
|
|
gridActualizaciones.setWidthFull(); |
|
|
gridActualizaciones.setWidthFull(); |
|
|
gridActualizaciones.setEditOnClick(false); |
|
|
gridActualizaciones.setEditOnClick(false); |
|
|
@ -201,8 +192,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
gridActualizaciones.addThemeVariants(GridVariant.LUMO_ROW_STRIPES); |
|
|
gridActualizaciones.addThemeVariants(GridVariant.LUMO_ROW_STRIPES); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
botonesLayout = new HorizontalLayout(); |
|
|
|
|
|
|
|
|
HorizontalLayout botonesLayout = new HorizontalLayout(); |
|
|
botonesLayout.setWidthFull(); |
|
|
botonesLayout.setWidthFull(); |
|
|
botonesLayout.setJustifyContentMode(JustifyContentMode.CENTER); |
|
|
botonesLayout.setJustifyContentMode(JustifyContentMode.CENTER); |
|
|
btnEditar = new Button("Editar", new Icon(VaadinIcon.EDIT)); |
|
|
btnEditar = new Button("Editar", new Icon(VaadinIcon.EDIT)); |
|
|
@ -317,10 +307,10 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
txtJustificacion.setRequired(true); |
|
|
txtJustificacion.setRequired(true); |
|
|
|
|
|
|
|
|
confirmDialog.add( |
|
|
confirmDialog.add( |
|
|
new VerticalLayout( |
|
|
|
|
|
new Span("¿Estás seguro de que deseas actualizar el mantenimiento?"), |
|
|
|
|
|
txtJustificacion |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
new VerticalLayout( |
|
|
|
|
|
new Span("¿Estás seguro de que deseas actualizar el mantenimiento?"), |
|
|
|
|
|
txtJustificacion |
|
|
|
|
|
) |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
Button btnConfirmar = new Button("Actualizar", event -> { |
|
|
Button btnConfirmar = new Button("Actualizar", event -> { |
|
|
@ -371,7 +361,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
addSignatureSection(); |
|
|
addSignatureSection(); |
|
|
mainLayout.add(headerLayout,layout2,fechasLayout,layout3,gridHardware,gridActualizaciones,firmasLAyout,botonesLayout); |
|
|
|
|
|
|
|
|
mainLayout.add(headerLayout, layout2,fechasLayout, layout3,gridHardware,gridActualizaciones,firmasLAyout, botonesLayout); |
|
|
add(mainLayout); |
|
|
add(mainLayout); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -379,103 +369,103 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
private void realizarActualizacion() { |
|
|
private void realizarActualizacion() { |
|
|
boolean exito = true; |
|
|
boolean exito = true; |
|
|
|
|
|
|
|
|
// Obtén los objetos seleccionados |
|
|
|
|
|
TiposMantenimiento tipoSeleccionado = cbTipo.getValue(); |
|
|
|
|
|
Usuario usuarioSeleccionado = cbUsuario.getValue(); |
|
|
|
|
|
DepartamentosModel departamentoSeleccionado = cbDepartamento.getValue(); |
|
|
|
|
|
|
|
|
// Obtén los objetos seleccionados |
|
|
|
|
|
TiposMantenimiento tipoSeleccionado = cbTipo.getValue(); |
|
|
|
|
|
Usuario usuarioSeleccionado = cbUsuario.getValue(); |
|
|
|
|
|
DepartamentosModel departamentoSeleccionado = cbDepartamento.getValue(); |
|
|
|
|
|
|
|
|
int tipoId = tipoSeleccionado != null ? Integer.parseInt(tipoSeleccionado.getTipomantId()) : 0; |
|
|
|
|
|
int empleadoId = usuarioSeleccionado != null ? Integer.parseInt(usuarioSeleccionado.getEmpleadoId()) : 0; |
|
|
|
|
|
String departamentoId = departamentoSeleccionado != null ? departamentoSeleccionado.getDepartamentoId() : null; |
|
|
|
|
|
|
|
|
int tipoId = tipoSeleccionado != null ? Integer.parseInt(tipoSeleccionado.getTipomantId()) : 0; |
|
|
|
|
|
int empleadoId = usuarioSeleccionado != null ? Integer.parseInt(usuarioSeleccionado.getEmpleadoId()) : 0; |
|
|
|
|
|
String departamentoId = departamentoSeleccionado != null ? departamentoSeleccionado.getDepartamentoId() : null; |
|
|
|
|
|
|
|
|
// Fechas (corrige el campo) |
|
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); |
|
|
|
|
|
LocalDate fechaProg = !txtFechaProgramada.getValue().isEmpty() ? LocalDate.parse(txtFechaProgramada.getValue(), formatter) : null; |
|
|
|
|
|
LocalDate fechaRealizado = !txtFecha.getValue().isEmpty() ? LocalDate.parse(txtFecha.getValue(), formatter) : null; |
|
|
|
|
|
|
|
|
// Fechas (corrige el campo) |
|
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); |
|
|
|
|
|
LocalDate fechaProg = !txtFechaProgramada.getValue().isEmpty() ? LocalDate.parse(txtFechaProgramada.getValue(), formatter) : null; |
|
|
|
|
|
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(); |
|
|
|
|
|
|
|
|
// Obtener las firmas como en MantenimientoView |
|
|
|
|
|
byte[] userSignatureBytes = userSignPad.getImageBase64(); |
|
|
|
|
|
byte[] smtSignatureBytes = smtSignPad.getImageBase64(); |
|
|
|
|
|
|
|
|
String userSignatureBase64 = (userSignatureBytes != null) ? Base64.getEncoder().encodeToString(userSignatureBytes) : null; |
|
|
|
|
|
String smtSignatureBase64 = (smtSignatureBytes != null) ? Base64.getEncoder().encodeToString(smtSignatureBytes) : null; |
|
|
|
|
|
|
|
|
String userSignatureBase64 = (userSignatureBytes != null) ? Base64.getEncoder().encodeToString(userSignatureBytes) : null; |
|
|
|
|
|
String smtSignatureBase64 = (smtSignatureBytes != null) ? Base64.getEncoder().encodeToString(smtSignatureBytes) : null; |
|
|
|
|
|
|
|
|
// Si la firma está vacía, conserva la anterior |
|
|
|
|
|
if (userSignatureBase64 == null || esFirmaVacia(userSignatureBase64)) { |
|
|
|
|
|
userSignatureBase64 = service.getDetalleMantenimientoPorPlanAnualId(planAnualIdActual).getFirmaUser(); |
|
|
|
|
|
} |
|
|
|
|
|
if (smtSignatureBase64 == null || esFirmaVacia(smtSignatureBase64)) { |
|
|
|
|
|
smtSignatureBase64 = service.getDetalleMantenimientoPorPlanAnualId(planAnualIdActual).getFirmaSmt(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// Si la firma está vacía, conserva la anterior |
|
|
|
|
|
if (userSignatureBase64 == null || esFirmaVacia(userSignatureBase64)) { |
|
|
|
|
|
userSignatureBase64 = service.getDetalleMantenimientoPorPlanAnualId(planAnualIdActual).getFirmaUser(); |
|
|
|
|
|
} |
|
|
|
|
|
if (smtSignatureBase64 == null || esFirmaVacia(smtSignatureBase64)) { |
|
|
|
|
|
smtSignatureBase64 = service.getDetalleMantenimientoPorPlanAnualId(planAnualIdActual).getFirmaSmt(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ACTUALIZA PLANANUAL (nombre del equipo y fecha programada) |
|
|
|
|
|
if (!service.actualizarPlanAnual(planAnualIdActual, txtEquipo.getValue())) { |
|
|
|
|
|
exito = false; |
|
|
|
|
|
} |
|
|
|
|
|
// ACTUALIZA MANTENIMIENTOS (tipo, departamento, usuario, fecha realizado) |
|
|
|
|
|
if (!service.actualizarMantenimiento( |
|
|
|
|
|
|
|
|
// ACTUALIZA PLANANUAL (nombre del equipo y fecha programada) |
|
|
|
|
|
if (!service.actualizarPlanAnual(planAnualIdActual, txtEquipo.getValue())) { |
|
|
|
|
|
exito = false; |
|
|
|
|
|
} |
|
|
|
|
|
// ACTUALIZA MANTENIMIENTOS (tipo, departamento, usuario, fecha realizado) |
|
|
|
|
|
if (!service.actualizarMantenimiento( |
|
|
mantenimientoIdActual, |
|
|
mantenimientoIdActual, |
|
|
tipoId, |
|
|
tipoId, |
|
|
departamentoId, |
|
|
departamentoId, |
|
|
empleadoId, |
|
|
empleadoId, |
|
|
fechaRealizado, |
|
|
fechaRealizado, |
|
|
txtEquipo.getValue(), |
|
|
txtEquipo.getValue(), |
|
|
userSignatureBase64, |
|
|
|
|
|
smtSignatureBase64 |
|
|
|
|
|
)) { |
|
|
|
|
|
exito = false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
userSignatureBase64, |
|
|
|
|
|
smtSignatureBase64 |
|
|
|
|
|
)) { |
|
|
|
|
|
exito = false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// ACTUALIZA HARDWARE (grid) |
|
|
|
|
|
for (HardwareDetalle detalle : gridHardware.getListDataView().getItems().toList()) { |
|
|
|
|
|
if (!service.actualizarHardwareDetalle(detalle)) { |
|
|
|
|
|
exito = false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// ACTUALIZA HARDWARE (grid) |
|
|
|
|
|
for (HardwareDetalle detalle : gridHardware.getListDataView().getItems().toList()) { |
|
|
|
|
|
if (!service.actualizarHardwareDetalle(detalle)) { |
|
|
|
|
|
exito = false; |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// ACTUALIZA ACTUALIZACIONES DE SEGURIDAD (grid) |
|
|
|
|
|
for (ActualizacioneSeguridadModel actualizacion : gridActualizaciones.getListDataView().getItems().toList()) { |
|
|
|
|
|
if (!service.actualizarActualizacionSeg(actualizacion)) { |
|
|
|
|
|
exito = false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// ACTUALIZA ACTUALIZACIONES DE SEGURIDAD (grid) |
|
|
|
|
|
for (ActualizacioneSeguridadModel actualizacion : gridActualizaciones.getListDataView().getItems().toList()) { |
|
|
|
|
|
if (!service.actualizarActualizacionSeg(actualizacion)) { |
|
|
|
|
|
exito = false; |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if (exito) { |
|
|
|
|
|
Notification.show("Registros actualizados correctamente", 3000, Notification.Position.MIDDLE) |
|
|
|
|
|
|
|
|
if (exito) { |
|
|
|
|
|
Notification.show("Registros actualizados correctamente", 3000, Notification.Position.MIDDLE) |
|
|
.addThemeVariants(NotificationVariant.LUMO_SUCCESS); |
|
|
.addThemeVariants(NotificationVariant.LUMO_SUCCESS); |
|
|
} else { |
|
|
|
|
|
Notification.show("Error al actualizar uno o más registros", 3000, Notification.Position.MIDDLE) |
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
Notification.show("Error al actualizar uno o más registros", 3000, Notification.Position.MIDDLE) |
|
|
.addThemeVariants(NotificationVariant.LUMO_ERROR); |
|
|
.addThemeVariants(NotificationVariant.LUMO_ERROR); |
|
|
} |
|
|
|
|
|
// Opcional: volver a modo solo lectura |
|
|
|
|
|
txtEquipo.setReadOnly(true); |
|
|
|
|
|
cbTipo.setReadOnly(true); |
|
|
|
|
|
txtFecha.setReadOnly(true); |
|
|
|
|
|
cbUsuario.setReadOnly(true); |
|
|
|
|
|
cbDepartamento.setReadOnly(true); |
|
|
|
|
|
btnImprimirRepo.setVisible(true); |
|
|
|
|
|
btnEditar.setVisible(true); |
|
|
|
|
|
btnEditarFirmas.setVisible(true); |
|
|
|
|
|
btnGuardar.setVisible(false); |
|
|
|
|
|
btnCancelar.setVisible(false); |
|
|
|
|
|
gridHardware.setEditOnClick(false); |
|
|
|
|
|
gridHardware.getEditor().cancel(); |
|
|
|
|
|
if (firmaUsuarioImg != null && userSignPad.getParent().isPresent()) { |
|
|
|
|
|
userSignLayout.replace(userSignPad, firmaUsuarioImg); |
|
|
|
|
|
} |
|
|
|
|
|
if (firmaSmtImg != null && smtSignPad.getParent().isPresent()) { |
|
|
|
|
|
smtSignLayout.replace(smtSignPad, firmaSmtImg); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
// Opcional: volver a modo solo lectura |
|
|
|
|
|
txtEquipo.setReadOnly(true); |
|
|
|
|
|
cbTipo.setReadOnly(true); |
|
|
|
|
|
txtFecha.setReadOnly(true); |
|
|
|
|
|
cbUsuario.setReadOnly(true); |
|
|
|
|
|
cbDepartamento.setReadOnly(true); |
|
|
|
|
|
btnImprimirRepo.setVisible(true); |
|
|
|
|
|
btnEditar.setVisible(true); |
|
|
|
|
|
btnEditarFirmas.setVisible(true); |
|
|
|
|
|
btnGuardar.setVisible(false); |
|
|
|
|
|
btnCancelar.setVisible(false); |
|
|
|
|
|
gridHardware.setEditOnClick(false); |
|
|
|
|
|
gridHardware.getEditor().cancel(); |
|
|
|
|
|
if (firmaUsuarioImg != null && userSignPad.getParent().isPresent()) { |
|
|
|
|
|
userSignLayout.replace(userSignPad, firmaUsuarioImg); |
|
|
|
|
|
} |
|
|
|
|
|
if (firmaSmtImg != null && smtSignPad.getParent().isPresent()) { |
|
|
|
|
|
smtSignLayout.replace(smtSignPad, firmaSmtImg); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Metodo para verificar si la firma corresponde a una cadena de firma vacia |
|
|
// Metodo para verificar si la firma corresponde a una cadena de firma vacia |
|
|
private boolean esFirmaVacia(String firmaBase64) { |
|
|
private boolean esFirmaVacia(String firmaBase64) { |
|
|
|
|
|
|
|
|
String firmaVacia = "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"; |
|
|
|
|
|
|
|
|
String firmaVacia = "iVBORw0KGgoAAAANSUhEUgAAAdQAAAD8CAYAAADOr1WDAAAKOElEQVR4Xu3VsQ0AIAwEMbL/0IBYgStNTwrrpZt93/IIECBAgACBL4ER1C8/nwkQIECAwBMQVEMgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgAABQbUBAgQIECAQCAhqgOgEAQIECBAQVBsgQIAAAQKBgKAGiE4QIECAAAFBtQECBAgQIBAICGqA6AQBAgQIEBBUGyBAgAABAoGAoAaIThAgQIAAAUG1AQIECBAgEAgIaoDoBAECBAgQEFQbIECAAAECgYCgBohOECBAgACBA8Bc7Tp3N5/2AAAAAElFTkSuQmCC"; |
|
|
return firmaBase64.equals(firmaVacia); |
|
|
return firmaBase64.equals(firmaVacia); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
@ -534,9 +524,9 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
id.setText("Plan ID: " + idParam); |
|
|
id.setText("Plan ID: " + idParam); |
|
|
txtEquipo.setValue(String.valueOf(detalle.getNombreEquipo())); |
|
|
txtEquipo.setValue(String.valueOf(detalle.getNombreEquipo())); |
|
|
cbTipo.setValue( |
|
|
cbTipo.setValue( |
|
|
cbTipo.getListDataView().getItems() |
|
|
|
|
|
.filter(t -> t.getNombre().equals(detalle.getTipo())) |
|
|
|
|
|
.findFirst().orElse(null) |
|
|
|
|
|
|
|
|
cbTipo.getListDataView().getItems() |
|
|
|
|
|
.filter(t -> t.getNombre().equals(detalle.getTipo())) |
|
|
|
|
|
.findFirst().orElse(null) |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); |
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); |
|
|
@ -548,14 +538,14 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
txtFecha.setValue(fechaReal); |
|
|
txtFecha.setValue(fechaReal); |
|
|
txtSituacion.setValue(situacion); |
|
|
txtSituacion.setValue(situacion); |
|
|
cbUsuario.setValue( |
|
|
cbUsuario.setValue( |
|
|
cbUsuario.getListDataView().getItems() |
|
|
|
|
|
.filter(u -> u.getNombre().equals(detalle.getUsuario())) |
|
|
|
|
|
.findFirst().orElse(null) |
|
|
|
|
|
|
|
|
cbUsuario.getListDataView().getItems() |
|
|
|
|
|
.filter(u -> u.getNombre().equals(detalle.getUsuario())) |
|
|
|
|
|
.findFirst().orElse(null) |
|
|
); |
|
|
); |
|
|
cbDepartamento.setValue( |
|
|
cbDepartamento.setValue( |
|
|
cbDepartamento.getListDataView().getItems() |
|
|
|
|
|
.filter(d -> d.getNombre().equals(detalle.getDepartamento())) |
|
|
|
|
|
.findFirst().orElse(null) |
|
|
|
|
|
|
|
|
cbDepartamento.getListDataView().getItems() |
|
|
|
|
|
.filter(d -> d.getNombre().equals(detalle.getDepartamento())) |
|
|
|
|
|
.findFirst().orElse(null) |
|
|
); |
|
|
); |
|
|
int mantId = detalle.getId(); |
|
|
int mantId = detalle.getId(); |
|
|
List<HardwareDetalle> listaHardware = service.getHardwaredetallePorMantId(mantId); |
|
|
List<HardwareDetalle> listaHardware = service.getHardwaredetallePorMantId(mantId); |
|
|
@ -589,7 +579,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser |
|
|
firmaSmtImg.setWidthFull(); |
|
|
firmaSmtImg.setWidthFull(); |
|
|
smtSignLayout.replace(smtSignPad, firmaSmtImg); |
|
|
smtSignLayout.replace(smtSignPad, firmaSmtImg); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Image firmaGcia = new Image("images/FirmaGerenteTI.png", "Firma de la Gcia. de T.I"); |
|
|
Image firmaGcia = new Image("images/FirmaGerenteTI.png", "Firma de la Gcia. de T.I"); |
|
|
firmaGcia.setHeight("200px"); |
|
|
firmaGcia.setHeight("200px"); |
|
|
firmaGcia.setWidthFull(); |
|
|
firmaGcia.setWidthFull(); |
|
|
|