Browse Source

Los combos ya muestran los nombres en lugar de sus id's pero a la BD se insertan sus id´s y tambien se agrego otro campo de texto para el nombre de la computadora

master
mramirezg 9 months ago
parent
commit
90e3c13c5a
8 changed files with 315 additions and 44 deletions
  1. +2
    -0
      src/main/java/mx/gob/jumapacelaya/Application.java
  2. +33
    -0
      src/main/java/mx/gob/jumapacelaya/models/DepartamentosModel.java
  3. +32
    -0
      src/main/java/mx/gob/jumapacelaya/models/TiposMantenimiento.java
  4. +33
    -0
      src/main/java/mx/gob/jumapacelaya/models/Usuario.java
  5. +30
    -14
      src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java
  6. +60
    -24
      src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java
  7. +125
    -6
      src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java
  8. BIN
      src/main/resources/META-INF/resources/images/960X960_Nvo.png

+ 2
- 0
src/main/java/mx/gob/jumapacelaya/Application.java View File

@ -1,6 +1,7 @@
package mx.gob.jumapacelaya;
import com.vaadin.flow.component.page.AppShellConfigurator;
import com.vaadin.flow.server.PWA;
import com.vaadin.flow.theme.Theme;
import mx.gob.jumapacelaya.services.DatabaseService;
import org.springframework.boot.SpringApplication;
@ -15,6 +16,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
*/
@SpringBootApplication
@Theme(value = "sistema-mantenimiento")
@PWA(name = "Aplicacion de Mantenimiento de Equipo de Computo", shortName = "App Mantenimiento de Computo", iconPath = "images/960x960_Nvo.png")
public class Application implements AppShellConfigurator {
public static void main(String[] args) {


+ 33
- 0
src/main/java/mx/gob/jumapacelaya/models/DepartamentosModel.java View File

@ -0,0 +1,33 @@
package mx.gob.jumapacelaya.models;
public class DepartamentosModel {
private String departamentoId;
private String nombre;
public DepartamentosModel(String departamentoId, String nombre) {
this.departamentoId = departamentoId;
this.nombre = nombre;
}
public String getDepartamentoId() {
return departamentoId;
}
public void setDepartamentoId(String departamentoId) {
this.departamentoId = departamentoId;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
@Override
public String toString() {
return nombre;
}
}

+ 32
- 0
src/main/java/mx/gob/jumapacelaya/models/TiposMantenimiento.java View File

@ -0,0 +1,32 @@
package mx.gob.jumapacelaya.models;
public class TiposMantenimiento {
private String tipomantId;
private String nombre;
public TiposMantenimiento(String tipomantId, String nombre) {
this.tipomantId = tipomantId;
this.nombre = nombre;
}
public String getTipomantId() {
return tipomantId;
}
public void setTipomantId(String tipomantId) {
this.tipomantId = tipomantId;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
@Override
public String toString() {
return nombre;
}
}

+ 33
- 0
src/main/java/mx/gob/jumapacelaya/models/Usuario.java View File

@ -0,0 +1,33 @@
package mx.gob.jumapacelaya.models;
public class Usuario {
private String empleadoId;
private String nombre;
public Usuario(String empleadoId, String nombre) {
this.empleadoId = empleadoId;
this.nombre = nombre;
}
public String getEmpleadoId() {
return empleadoId;
}
public void setEmpleadoId(String empleadoId) {
this.empleadoId = empleadoId;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
@Override
public String toString() {
return nombre;
}
}

+ 30
- 14
src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java View File

@ -1,7 +1,10 @@
package mx.gob.jumapacelaya.services;
import com.fasterxml.jackson.databind.jsontype.impl.StdTypeResolverBuilder;
import mx.gob.jumapacelaya.models.DepartamentosModel;
import mx.gob.jumapacelaya.models.PlanAnual;
import mx.gob.jumapacelaya.models.TiposMantenimiento;
import mx.gob.jumapacelaya.models.Usuario;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@ -26,16 +29,20 @@ public class DatabaseService {
}
// Método para obtener los tipos de mantenimientos
public List<String> getTiposDeMantenimientos() {
List<String> tiposDeMantenimientos = new ArrayList<>();
String query = "SELECT tipomantid FROM TIPOMANT";
public List<TiposMantenimiento> getTiposDeMantenimientos() {
List<TiposMantenimiento> tiposDeMantenimientos = new ArrayList<>();
String query = "SELECT tipomantid, nombre FROM TIPOMANT";
try (Connection connection = getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
while (resultSet.next()) {
tiposDeMantenimientos.add(resultSet.getString("TIPOMANTID"));
TiposMantenimiento tipo = new TiposMantenimiento(
resultSet.getString("tipomantid"),
resultSet.getString("nombre")
);
tiposDeMantenimientos.add(tipo);
}
} catch (SQLException e) {
e.printStackTrace();
@ -66,16 +73,20 @@ public class DatabaseService {
/* -------------- Metodo para obtener a los usuarios ---------------- */
public List<String> getUsuarios() {
List<String> usuarios = new ArrayList<>();
String query = "select EMPLEADOID from USUARIOSFINAN";
public List<Usuario> getUsuarios() {
List<Usuario> usuarios = new ArrayList<>();
String query = "select EMPLEADOID, NOMBRE from USUARIOSFINAN";
try (Connection connection = getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
while (resultSet.next()) {
usuarios.add(resultSet.getString("EMPLEADOID"));
Usuario usuario = new Usuario(
resultSet.getString("empleadoid"),
resultSet.getString("nombre")
);
usuarios.add(usuario);
}
} catch (SQLException e) {
e.printStackTrace();
@ -85,16 +96,20 @@ public class DatabaseService {
/* -------------- Metodo para obtener los departamentos ---------------- */
public List<String> getDepartamentos() {
List<String> departamentos = new ArrayList<>();
String query = "select DEPARTAMENTOID from DEPARTAMENTOSFINAN";
public List<DepartamentosModel> getDepartamentos() {
List<DepartamentosModel> departamentos = new ArrayList<>();
String query = "select DEPARTAMENTOID, DESCRIPCION from DEPARTAMENTOSFINAN";
try (Connection connection = getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
while (resultSet.next()) {
departamentos.add(resultSet.getString("DEPARTAMENTOID"));
DepartamentosModel departamentosModel = new DepartamentosModel(
resultSet.getString("departamentoid"),
resultSet.getString("descripcion")
);
departamentos.add(departamentosModel);
}
} catch (SQLException e) {
e.printStackTrace();
@ -186,8 +201,8 @@ public class DatabaseService {
/*-=iii=<() *-=iii=<()*/
/* ( ͡° ͜ʖ ͡°) Metodos para insetar en la BD ( ͡° ͜ʖ ͡°) ( ͡° ͜ʖ ͡°) Metodos para insetar en la BD ( ͡° ͜ʖ ͡°) ( ͡° ͜ʖ ͡°) Metodos para insetar en la BD ( ͡° ͜ʖ ͡°) */
// INSERTAR EN TABLA: MANTENIMINETOS
public int insertarMantenimiento(LocalDate fecha, String tipoMantId, String departamentoId, String empleadoId, String formaMant) {
String query = "INSERT INTO MANTENIMIENTOS (fecha, tipoMantId, departamentoId, empleadoId, formaMant) VALUES (?, ?, ?, ?, ?)";
public int insertarMantenimiento(LocalDate fecha, String tipoMantId, String departamentoId, String empleadoId, String formaMant, String equipoId) {
String query = "INSERT INTO MANTENIMIENTOS (fecha, tipoMantId, departamentoId, empleadoId, formaMant, nombreequipo) VALUES (?, ?, ?, ?, ?, ?)";
int nuevoId = -1;
try (Connection connection = getConnection();
@ -198,6 +213,7 @@ public class DatabaseService {
preparedStatement.setString(3, departamentoId);
preparedStatement.setString(4, empleadoId);
preparedStatement.setString(5, formaMant);
preparedStatement.setString(6, equipoId);
int rowsAffected = preparedStatement.executeUpdate();
if (rowsAffected > 0) {


+ 60
- 24
src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java View File

@ -27,6 +27,9 @@ 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.DepartamentosModel;
import mx.gob.jumapacelaya.models.TiposMantenimiento;
import mx.gob.jumapacelaya.models.Usuario;
import mx.gob.jumapacelaya.services.DatabaseService;
import java.time.LocalDate;
@ -46,9 +49,10 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
private final VerticalLayout etiquetaLayout;
private final HorizontalLayout firmasLayout;
private final DatePicker fecha;
private final ComboBox<String> tipoMantt;
private final ComboBox<String> area;
private final ComboBox<String> usuario;
private final ComboBox<TiposMantenimiento> tipoMantt;
private final ComboBox<DepartamentosModel> area;
private final ComboBox<Usuario> usuario;
private final TextField nombreEquipo;
private RadioButtonGroup<String> formaGroup;
private CheckboxGroup<String> actualizaciones;
private final HorizontalLayout botonesLayout;
@ -79,34 +83,46 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
//Selector de fecha
this.fecha = new DatePicker("Fecha");
fecha.setRequired(true);
//fecha.setPlaceholder("Fecha");
//ComboBox Tipo de Mantenimiento
// ComboBox Tipo de Mantenimiento
this.tipoMantt = new ComboBox<>("Tipo de Mantenimiento");
tipoMantt.setItems(databaseService.getTiposDeMantenimientos());
List<TiposMantenimiento> tiposMantenimiento = databaseService.getTiposDeMantenimientos();
tipoMantt.setItems(tiposMantenimiento);
tipoMantt.addClassName("mantenimiento-combo");
// Listener para manejar el cambio en el tipo de mantenimiento
tipoMantt.addValueChangeListener(event -> {
String tipoSeleccionado = event.getValue();
TiposMantenimiento tipoSeleccionado = event.getValue();
if (tipoSeleccionado != null) {
// Actualizar nomenclatura dependiendo del tipo de mantenimiento
String nomenclaturaValue = databaseService.getNomenclatura(tipoSeleccionado);
String nomenclaturaValue = databaseService.getNomenclatura(tipoSeleccionado.getTipomantId());
nomenclatura.setValue(nomenclaturaValue);
// Si el tipo es preventivo se establecerá la fecha automáticamente a la fecha del sistema
if ("1".equals(tipoSeleccionado)) { // 1 es para PREVENTIVO
if ("1".equals(tipoSeleccionado.getTipomantId())) { // 1 es para PREVENTIVO
this.fecha.setValue(LocalDate.now());
etiquetaLayout.setVisible(false);
} else if ("2".equals(tipoSeleccionado)) { // 2 es para CORRECTIVO
// Limpiar el layout de correctivo si es necesario
etiquetaLayout.removeAll();
} else if ("2".equals(tipoSeleccionado.getTipomantId())) { // 2 es para CORRECTIVO
this.fecha.clear();
etiquetaLayout.setVisible(true);
correctivoLayout();
correctivoLayout(); // Asegúrate de que este método se llame
} else {
// Para otros tipos de mantenimiento
this.fecha.clear();
etiquetaLayout.setVisible(false);
etiquetaLayout.removeAll(); // Limpia el layout para otros tipos
}
} else {
nomenclatura.clear();
this.fecha.clear();
etiquetaLayout.setVisible(false);
etiquetaLayout.removeAll(); // Limpia el layout
}
});
fechaLayout.add(this.fecha);
@ -118,22 +134,33 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
HorizontalLayout departamentoLayout = new HorizontalLayout();
//ComboBox Area o Departamento
this.area = new ComboBox<>("Area o Departamento");
List<String> areas = databaseService.getDepartamentos();
area.setRequired(true);
List<DepartamentosModel> areas = databaseService.getDepartamentos();
area.setItems(areas);
this.usuario = new ComboBox<>("Usuario");
usuario.setItems(databaseService.getUsuarios());
List<Usuario> usuarios = databaseService.getUsuarios();
usuario.setItems(usuarios);
usuario.setItemLabelGenerator(Usuario::getNombre);
usuario.setRequired(true);
usuario.addValueChangeListener(event -> {
String usuarioSeleccionado = event.getValue();
Usuario usuarioSeleccionado = event.getValue();
if (usuarioSeleccionado != null) {
String nombreUsuario = databaseService.getNombreUsuario(usuarioSeleccionado);
String empleadoId = usuarioSeleccionado.getEmpleadoId();
String nombreUsuario = usuarioSeleccionado.getNombre();
userSignSpan.setText(nombreUsuario);
} else {
userSignSpan.setText("S.M.T Nombre");
}
});
departamentoLayout.add(area, usuario);
this.nombreEquipo = new TextField("Nombre del Equipo");
nombreEquipo.setRequired(true);
departamentoLayout.add(area, usuario, nombreEquipo);
departamentoLayout.setWidthFull();
createHardwareSection(databaseService);
@ -297,8 +324,8 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
Span Titulo = new Span("Reparación Realizada al Equipo: ");
// Verificar el ID del tipo de mantenimiento
String tipoMantId = tipoMantt.getValue();
if ("2".equals(tipoMantId)) { // Solo si el tipo es CORRECTIVO
TiposMantenimiento tiposMantenimiento = tipoMantt.getValue();
if (tiposMantenimiento != null && "2".equals(tiposMantenimiento.getTipomantId())) { // Solo si el tipo es CORRECTIVO
TextField txtModelo = new TextField();
txtModelo.setPlaceholder("Modelo");
txtModelo.setWidth("240px");
@ -392,9 +419,17 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
btnGuardar.addClickListener(event -> {
LocalDate fechaSeleccionada = fecha.getValue();
String tipoMantId = tipoMantt.getValue();
String departamentoId = area.getValue();
String empleadoId = usuario.getValue();
TiposMantenimiento tiposMantenimiento = tipoMantt.getValue();
String tipoMantId = tiposMantenimiento != null ? tiposMantenimiento.getTipomantId() : null;
// Cambié aquí para obtener el departamento seleccionado correctamente
DepartamentosModel departamentoSeleccionado = area.getValue();
String departamentoId = departamentoSeleccionado != null ? departamentoSeleccionado.getDepartamentoId().toString() : null;
// Obtener el empleado y el equipo
Usuario usuarioSeleccionado = usuario.getValue();
String empleadoId = usuarioSeleccionado != null ? usuarioSeleccionado.getEmpleadoId().toString() : null;
String equipoId = nombreEquipo.getValue();
// AQUI SE MANEJA LA OPCION SELECCIONADA EN LA FORMA DE MANTENIMIENTO (REMOTA o MANUAL)
String formaSeleccionada = formaGroup.getValue();
@ -407,12 +442,12 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
}
// VALIDACION PARA QUE TODOS LOS CAMPOS OBLIGATORIOS SEAN LLENADOS
if (fechaSeleccionada == null || tipoMantId == null || departamentoId == null || empleadoId == null || formaMantt == null) {
if (fechaSeleccionada == null || tipoMantId == null || departamentoId == null || empleadoId == null || equipoId == null || formaMantt == null) {
Notification.show("Por favor, completa todos los campos requeridos", 4000, Notification.Position.MIDDLE);
return;
}
int isInserted = databaseService.insertarMantenimiento(fechaSeleccionada, tipoMantId, departamentoId, empleadoId, formaMantt);
int isInserted = databaseService.insertarMantenimiento(fechaSeleccionada, tipoMantId, departamentoId, empleadoId, formaMantt, equipoId);
// AQUI SE MANEJA LA INSERCION DE LOS DETALLES DE HARDWARE (TIPO DE HARDWARE, NO. DE SERIE, MODELO, PLACA)
if (isInserted > 0) {
@ -480,6 +515,7 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
tipoMantt.clear();
area.clear();
usuario.clear();
nombreEquipo.clear();
formaGroup.clear();
actualizaciones.clear();
masActualizacionesGroup.clear();
@ -516,12 +552,12 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
}
// Cambiamos el valor por el ID
if ("1".equals(tipoParam)) { // 1 es para PREVENTIVO
/*if ("1".equals(tipoParam)) { // 1 es para PREVENTIVO
tipoMantt.setValue("1"); // Establecemos el ID en el ComboBox
tipoMantt.setReadOnly(true);
} else if ("2".equals(tipoParam)) { // 2 es para CORRECTIVO
tipoMantt.setValue("2");
tipoMantt.setReadOnly(true);
}
}*/
}
}

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

@ -1,10 +1,12 @@
package mx.gob.jumapacelaya.ui;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.button.ButtonVariant;
import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.grid.Grid;
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.icon.Icon;
import com.vaadin.flow.component.icon.VaadinIcon;
import com.vaadin.flow.component.notification.Notification;
@ -19,10 +21,15 @@ import com.vaadin.flow.router.Route;
import jakarta.annotation.security.PermitAll;
import mx.gob.jumapacelaya.models.PlanAnual;
import mx.gob.jumapacelaya.services.DatabaseService;
import org.apache.poi.ss.usermodel.*;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Array;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -36,6 +43,8 @@ public class PlanAnualView extends VerticalLayout {
H4 titulo = new H4();
H5 titulo1 = new H5();
DatabaseService databaseService = new DatabaseService();
Button btnInsertar;
private byte[] fileContent;
public PlanAnualView() {
setupHeader();
@ -51,16 +60,55 @@ public class PlanAnualView extends VerticalLayout {
upload.addSucceededListener(event -> {
try {
InputStream inputStream = buffer.getInputStream();
databaseService.insertarDesdeExcel(inputStream);
Notification.show("Archivo insertado correctamente").addThemeVariants(NotificationVariant.LUMO_SUCCESS);
} catch (Exception e) {
Notification.show("Error al insertar el archivo: " + e.getMessage()).addThemeVariants(NotificationVariant.LUMO_ERROR);
// Almacena el contenido del archivo en un arreglo de bytes
try (InputStream inputStream = buffer.getInputStream();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
inputStream.transferTo(byteArrayOutputStream);
fileContent = byteArrayOutputStream.toByteArray();
}
// Validación del archivo cargado
List<String> errores = validarExcel(new ByteArrayInputStream(fileContent));
if (!errores.isEmpty()) {
// Crear notificación con mensaje de error y sin duración
final Notification ntfError = new Notification();
ntfError.setText("Errores en el archivo: " + String.join(", ", errores));
ntfError.setDuration(0); // La notificación no se cerrará automáticamente
ntfError.setPosition(Notification.Position.MIDDLE);
ntfError.addThemeVariants(NotificationVariant.LUMO_ERROR);
// Texto del mensaje de error
Span errorMessage = new Span("Errores en el archivo: " + String.join(", ", errores));
errorMessage.getStyle().set("margin-right", "10px");
// Crear botón de cierre
final Button closeButton = new Button(new Icon(VaadinIcon.CLOSE));
closeButton.addClickListener(e -> ntfError.close());
// Agregar el mensaje y el botón de cierre a la notificación
HorizontalLayout notificationLayout = new HorizontalLayout(errorMessage, closeButton);
ntfError.add(notificationLayout);
ntfError.open(); // Abrir la notificación en pantalla
// Ocultar el botón de insertar si hay errores
btnInsertar.setVisible(false);
} else {
btnInsertar.setVisible(true);
}
} catch (IOException e) {
Notification.show("Error al leer el archivo: " + e.getMessage())
.addThemeVariants(NotificationVariant.LUMO_ERROR);
}
});
btnInsertar = new Button("Insertar archivo", event -> insertarDatos());
btnInsertar.setVisible(false);
VerticalLayout gridLayout = new VerticalLayout();
gridLayout.add(planAnualGrid, upload);
gridLayout.add(planAnualGrid, upload, btnInsertar);
this.setPadding(false);
@ -125,6 +173,8 @@ public class PlanAnualView extends VerticalLayout {
return planAnualGrid;
}
/* (∩ ͡° ͜ʖ ͡°)⊃━☆゚. * SUSTITUIR VALORES BOOLEANOS POR UN ICONO (∩ ͡° ͜ʖ ͡°)⊃━☆゚. * */
private Icon getIcon(boolean value) {
if (value) {
return new Icon(VaadinIcon.CHECK_CIRCLE);
@ -132,4 +182,73 @@ public class PlanAnualView extends VerticalLayout {
return new Icon();
}
}
/* (∩ ͡° ͜ʖ ͡°)⊃━☆゚. * METODO PARA VALIDAR QUE EL ARCHIOVO TENGA LA ESTRUCTURA CORRECTA (∩ ͡° ͜ʖ ͡°)⊃━☆゚. * */
private List<String> validarExcel(InputStream inputStream) throws IOException {
List<String> errores = new ArrayList<>();
Workbook workbook = WorkbookFactory.create(inputStream);
Sheet sheet = workbook.getSheetAt(0);
// Lista de nombres de columnas esperados en el encabezado
List<String> columnas = Arrays.asList("NOMEQUIPO", "DEPARTAMENTO", "MONITOR", "TECLADO", "MOUSE", "REGULADOR",
"CPU", "IMPRESORA", "MINIPRINT", "LAPTOP", "ESCANER", "FECHAPROG", "TECNICO", "ESTADO");
// Obtener la primera fila como encabezado
Row headerRow = sheet.getRow(0);
if (headerRow != null) {
// Validar que cada celda en el encabezado tiene el nombre correcto
for (int i = 0; i < headerRow.getPhysicalNumberOfCells(); i++) {
Cell cell = headerRow.getCell(i);
if (cell != null) { // Verificar si la celda no es null antes de acceder a su valor
String columnName = cell.getStringCellValue();
if (!columnas.contains(columnName)) {
errores.add("Columna inesperada: " + columnName);
}
} else {
errores.add("Celda vacía en la columna de índice " + i);
}
}
} else {
errores.add("La hoja no contiene un encabezado en la primera fila.");
}
// Verificar si faltan columnas esperadas en el encabezado
for (String columnName : columnas) {
boolean found = false;
if (headerRow != null) {
for (int i = 0; i < headerRow.getPhysicalNumberOfCells(); i++) {
Cell cell = headerRow.getCell(i);
if (cell != null && cell.getStringCellValue().equals(columnName)) {
found = true;
break;
}
}
}
if (!found) {
errores.add("Falta la columna: " + columnName);
}
}
workbook.close();
return errores;
}
private void insertarDatos() {
if (fileContent == null) {
Notification.show("Error: No hay archivo cargado.").addThemeVariants(NotificationVariant.LUMO_ERROR);
return;
}
try (InputStream inputStream = new ByteArrayInputStream(fileContent)) {
databaseService.insertarDesdeExcel(inputStream);
Notification.show("Archivo insertado correctamente").addThemeVariants(NotificationVariant.LUMO_SUCCESS);
btnInsertar.setVisible(false); // Ocultar el botón después de la inserción
} catch (Exception e) {
Notification.show("Error al insertar el archivo: " + e.getMessage())
.addThemeVariants(NotificationVariant.LUMO_ERROR);
}
}
}

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

Before After
Width: 961  |  Height: 961  |  Size: 50 KiB

Loading…
Cancel
Save