Browse Source

ya se actualizan los registros en la base de datos al confirmar la actualizacion por medio de un boton

master
mramirezg 2 months ago
parent
commit
ae15dc548e
2 changed files with 199 additions and 31 deletions
  1. +53
    -3
      src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java
  2. +146
    -28
      src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java

+ 53
- 3
src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java View File

@ -20,8 +20,8 @@ public class DatabaseService {
private Connection getMysqlConnection() throws SQLException {
//String url = "jdbc:oracle:thin:@//oracle-xe:1521/XEPDB1";
String url = "jdbc:oracle:thin:@//svrapps:1521/XEPDB1";
String url = "jdbc:oracle:thin:@//oracle-xe:1521/XEPDB1";
//String url = "jdbc:oracle:thin:@//svrapps:1521/XEPDB1";
String user = "MANTENIMIENTOS";
String pass = "mantenimientos";
@ -383,7 +383,7 @@ public class DatabaseService {
return nuevoId;
}
/*( •_•)>⌐■-■ (⌐■_■)( •_•)>⌐■-■ (⌐■_■)( •_•)>⌐■-■ (⌐■_■)( •_•)>⌐■-■ (⌐■_■)( •_•)>⌐■-■ (⌐■_■)( •_•)>⌐■-■ (⌐■_■) */
/*( •_•)>⌐■-■ (⌐■_■)( •_•)>⌐■-■ (⌐■_■)( •_•)>⌐■-■ (⌐■_■)( •_•)>⌐■-■ (⌐■_■)( •_•)>⌐■-■ (⌐■_■)( •_•)>⌐■-■ (⌐■_■)( •_•)>⌐■-■ (⌐■_■) */
/* ˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀˁ˚ᴥ˚ˀ */
// INSERTAR EN LA TABLA: HARDWAREDET
@ -573,4 +573,54 @@ public class DatabaseService {
}
return false; // Valor por defecto si la celda es nula
}
/* ----------------Actualizar los detalles del del mantenimiento por ID ---------------- */
public boolean actualizarPlanAnual(int planAnualId, String nombreEquipo, LocalDate fechaProg) {
String sql = "UPDATE MANTENIMIENTOS.PLANANUAL SET NOMEQUIPO=?, FECHAPROG=? WHERE PLANANUALID=?";
try (Connection conn = getMysqlConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, nombreEquipo);
stmt.setDate(2, fechaProg != null ? Date.valueOf(fechaProg) : null);
stmt.setInt(3, planAnualId);
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
public boolean actualizarMantenimiento(int mantenimientoId, int tipoId, String departamentoId, int empleadoId, LocalDate fechaRealizado, String nombreEquipo) {
String sql = "UPDATE MANTENIMIENTOS.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
stmt.setString(2, departamentoId); // departamentoId es String
stmt.setInt(3, empleadoId); // empleadoId es int
stmt.setDate(4, fechaRealizado != null ? Date.valueOf(fechaRealizado) : null);
stmt.setString(5, nombreEquipo);
stmt.setInt(6, mantenimientoId);
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
/* ----------------Actualizar los detalles del hardaware por ID ---------------- */
public boolean actualizarHardwareDetalle(HardwareDetalle detalle) {
String sql = "UPDATE MANTENIMIENTOS.HARDWAREDET SET MODELO=?, NUMSERIE=?, PLACA=? WHERE HARDWAREDETID=?";
try (Connection conn = getMysqlConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, detalle.getModelo());
stmt.setString(2, detalle.getNumSerie());
stmt.setString(3, detalle.getPlaca());
stmt.setInt(4, detalle.getHardwareDetId());
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
}

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

@ -1,11 +1,14 @@
package mx.gob.jumapacelaya.ui;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
import org.vaadin.lineawesome.LineAwesomeIcon;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.combobox.ComboBox;
import com.vaadin.flow.component.confirmdialog.ConfirmDialog;
import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.grid.GridVariant;
@ -13,6 +16,8 @@ import com.vaadin.flow.component.gridpro.GridPro;
import com.vaadin.flow.component.html.H3;
import com.vaadin.flow.component.icon.Icon;
import com.vaadin.flow.component.icon.VaadinIcon;
import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.notification.NotificationVariant;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.TextField;
@ -24,8 +29,11 @@ import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import jakarta.annotation.security.PermitAll;
import mx.gob.jumapacelaya.models.DepartamentosModel;
import mx.gob.jumapacelaya.models.DetalleMantenimientoModel;
import mx.gob.jumapacelaya.models.HardwareDetalle;
import mx.gob.jumapacelaya.models.TiposMantenimiento;
import mx.gob.jumapacelaya.models.Usuario;
import mx.gob.jumapacelaya.services.DatabaseService;
@PageTitle("Detalles del mantenimiento")
@ -43,16 +51,21 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
private HorizontalLayout fechasLayout;
private TextField txtId;
private TextField txtEquipo;
private TextField txtTipo;
private ComboBox<TiposMantenimiento> cbTipo;
private TextField txtFecha;
private TextField txtFechaRealizacion;
private TextField txtUsuario;
private TextField txtDepartamento;
private ComboBox<Usuario> cbUsuario;
private ComboBox<DepartamentosModel> cbDepartamento;
private GridPro<HardwareDetalle> gridHardware;
private Button btnEditar;
private Button btnImprimirRepo;
private Button btnCancelar;
private Button btnGuardar;
private int planAnualIdActual;
private int mantenimientoIdActual;
private ConfirmDialog confirmDialog;
DatabaseService service = new DatabaseService();
public DetallesMantView() {
setPadding(true);
@ -73,14 +86,24 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
headerLayout.setWidthFull();
headerLayout.add(id);
cbTipo = new ComboBox<>("Tipo:");
cbTipo.setItems(service.getTiposDeMantenimientos());
cbTipo.setItemLabelGenerator(TiposMantenimiento::getNombre);
cbUsuario = new ComboBox<>("Usuario:");
cbUsuario.setItems(service.getUsuarios());
cbUsuario.setItemLabelGenerator(Usuario::getNombre);
cbDepartamento = new ComboBox<>("Area:");
cbDepartamento.setItems(service.getDepartamentos());
cbDepartamento.setItemLabelGenerator(DepartamentosModel::getNombre);
layout2 = new HorizontalLayout();
layout2.setWidthFull();
txtEquipo = new TextField("Equipo:");
txtTipo = new TextField("Tipo:");
txtEquipo.setReadOnly(true);
txtTipo.setReadOnly(true);
layout2.add(txtEquipo,txtTipo);
cbTipo.setReadOnly(true);
layout2.add(txtEquipo,cbTipo);
fechasLayout = new HorizontalLayout();
@ -93,20 +116,16 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
layout3 = new HorizontalLayout();
layout3.setWidthFull();
txtUsuario = new TextField("Usuario:");
txtDepartamento = new TextField("Area:");
txtUsuario.setReadOnly(true);
txtDepartamento.setReadOnly(true);
txtUsuario.setWidthFull();
txtDepartamento.setWidthFull();
layout3.add(txtUsuario,txtDepartamento);
cbUsuario.setReadOnly(true);
cbDepartamento.setReadOnly(true);
cbUsuario.setWidthFull();
cbDepartamento.setWidthFull();
layout3.add(cbUsuario,cbDepartamento);
gridHardware = new GridPro<>();
gridHardware.addEditColumn(HardwareDetalle::getDescripcion)
.text((item, newValue) -> item.setDescripcion(newValue))
.setHeader("Descripción")
.setEditorComponent(new TextField());
gridHardware.addColumn(item -> item.getDescripcion())
.setHeader("Descripción");
gridHardware.addEditColumn(HardwareDetalle::getNumSerie)
.text((item, newValue) -> item.setNumSerie(newValue))
@ -139,7 +158,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
botonesLayout.add(btnEditar,btnImprimirRepo,btnGuardar,btnCancelar);
btnGuardar.setVisible(false);
btnGuardar.getStyle().set("background-color", "green");
btnGuardar.getStyle().set("background-color", "#008000");
btnGuardar.getStyle().set("color", "white");
btnCancelar.setVisible(false);
btnCancelar.getStyle().set("background-color", "red");
@ -147,11 +166,11 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
btnEditar.addClickListener(e -> {
txtEquipo.setReadOnly(false);
txtTipo.setReadOnly(false);
cbTipo.setReadOnly(false);
txtFecha.setReadOnly(false);
txtFechaRealizacion.setReadOnly(false);
txtUsuario.setReadOnly(false);
txtDepartamento.setReadOnly(false);
cbUsuario.setReadOnly(false);
cbDepartamento.setReadOnly(false);
btnImprimirRepo.setVisible(false);
btnEditar.setVisible(false);
btnGuardar.setVisible(true);
@ -161,11 +180,39 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
btnCancelar.addClickListener(e -> {
txtEquipo.setReadOnly(true);
txtTipo.setReadOnly(true);
cbTipo.setReadOnly(true);
txtFecha.setReadOnly(true);
txtFechaRealizacion.setReadOnly(true);
cbUsuario.setReadOnly(true);
cbDepartamento.setReadOnly(true);
btnImprimirRepo.setVisible(true);
btnEditar.setVisible(true);
btnGuardar.setVisible(false);
btnCancelar.setVisible(false);
gridHardware.setEditOnClick(false);
gridHardware.getEditor().cancel();
});
// Se dispara el dialogo de confirmacion
btnGuardar.addClickListener(e -> confirmDialog.open());
// Dialogo de confirmación de actualización
confirmDialog = new ConfirmDialog();
confirmDialog.setHeader("Actualizar Mantenimiento");
confirmDialog.setText("¿Estás seguro de que deseas actualizar el mantenimiento?");
confirmDialog.setCancelable(true);
confirmDialog.setConfirmText("Actualizar");
confirmDialog.setCancelText("Cancelar");
confirmDialog.addConfirmListener(event -> realizarActualizacion());
confirmDialog.addCancelListener( event -> {
txtEquipo.setReadOnly(true);
cbTipo.setReadOnly(true);
txtFecha.setReadOnly(true);
txtFechaRealizacion.setReadOnly(true);
txtUsuario.setReadOnly(true);
txtDepartamento.setReadOnly(true);
cbUsuario.setReadOnly(true);
cbDepartamento.setReadOnly(true);
btnImprimirRepo.setVisible(true);
btnEditar.setVisible(true);
btnGuardar.setVisible(false);
@ -178,6 +225,63 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
add(mainLayout);
}
private void realizarActualizacion() {
boolean exito = true;
// 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;
// Fechas (corrige el campo)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate fechaProg = !txtFechaRealizacion.getValue().isEmpty() ? LocalDate.parse(txtFechaRealizacion.getValue(), formatter) : null;
LocalDate fechaRealizado = !txtFecha.getValue().isEmpty() ? LocalDate.parse(txtFecha.getValue(), formatter) : null;
// ACTUALIZA PLANANUAL (nombre del equipo y fecha programada)
if (!service.actualizarPlanAnual(planAnualIdActual, txtEquipo.getValue(), fechaProg)) {
exito = false;
}
// ACTUALIZA MANTENIMIENTOS (tipo, departamento, usuario, fecha realizado)
if (!service.actualizarMantenimiento(mantenimientoIdActual, tipoId, departamentoId, empleadoId, fechaRealizado, txtEquipo.getValue())) {
exito = false;
}
// ACTUALIZA HARDWARE (grid)
for (HardwareDetalle detalle : gridHardware.getListDataView().getItems().toList()) {
if (!service.actualizarHardwareDetalle(detalle)) {
exito = false;
}
}
if (exito) {
Notification.show("Registros actualizados correctamente", 3000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_SUCCESS);
} else {
Notification.show("Error al actualizar uno o más registros", 3000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR);
}
// Opcional: volver a modo solo lectura
txtEquipo.setReadOnly(true);
cbTipo.setReadOnly(true);
txtFecha.setReadOnly(true);
txtFechaRealizacion.setReadOnly(true);
cbUsuario.setReadOnly(true);
cbDepartamento.setReadOnly(true);
btnImprimirRepo.setVisible(true);
btnEditar.setVisible(true);
btnGuardar.setVisible(false);
btnCancelar.setVisible(false);
gridHardware.setEditOnClick(false);
gridHardware.getEditor().cancel();
}
@Override
public void beforeEnter(BeforeEnterEvent event) {
String idParam = event.getLocation().getQueryParameters().getParameters().get("id") != null
@ -188,13 +292,19 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
try {
int planId = Integer.parseInt(idParam);
DatabaseService service = new DatabaseService();
DetalleMantenimientoModel detalle = service.getDetalleMantenimientoPorPlanAnualId(planId);
if (detalle != null) {
this.planAnualIdActual = detalle.getPlanAnualId();
this.mantenimientoIdActual = detalle.getId();
id.setText("Plan ID: " + idParam);
txtEquipo.setValue(String.valueOf(detalle.getNombreEquipo()));
txtTipo.setValue(String.valueOf(detalle.getTipo()));
cbTipo.setValue(
cbTipo.getListDataView().getItems()
.filter(t -> t.getNombre().equals(detalle.getTipo()))
.findFirst().orElse(null)
);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
String fechaProg = detalle.getFechaprog() != null ? detalle.getFechaprog().format(formatter) : "";
@ -202,8 +312,16 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
txtFechaRealizacion.setValue(fechaProg);
txtFecha.setValue(fechaReal);
txtUsuario.setValue(String.valueOf(detalle.getUsuario()));
txtDepartamento.setValue(String.valueOf(detalle.getDepartamento()));
cbUsuario.setValue(
cbUsuario.getListDataView().getItems()
.filter(u -> u.getNombre().equals(detalle.getUsuario()))
.findFirst().orElse(null)
);
cbDepartamento.setValue(
cbDepartamento.getListDataView().getItems()
.filter(d -> d.getNombre().equals(detalle.getDepartamento()))
.findFirst().orElse(null)
);
int mantId = detalle.getId();
List<HardwareDetalle> listaHardware = service.getHardwaredetallePorMantId(mantId);
gridHardware.setItems(listaHardware);


Loading…
Cancel
Save