Browse Source

Se agrego la vista para que se pueda ver informacion sobre el mantenimiento realizado ya se muestran los datos, falta agregar funcionalidad a los botones

master
mramirezg 2 months ago
parent
commit
5c4890d400
6 changed files with 435 additions and 66 deletions
  1. +1
    -0
      .gitignore
  2. +62
    -0
      src/main/java/mx/gob/jumapacelaya/models/DetalleMantenimientoModel.java
  3. +35
    -0
      src/main/java/mx/gob/jumapacelaya/models/HardwareDetalle.java
  4. +104
    -22
      src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java
  5. +157
    -0
      src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java
  6. +76
    -44
      src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java

+ 1
- 0
.gitignore View File

@ -19,3 +19,4 @@ drivers/
# Error screenshots generated by TestBench for failed integration tests
error-screenshots/
webpack.generated.js
/bin/

+ 62
- 0
src/main/java/mx/gob/jumapacelaya/models/DetalleMantenimientoModel.java View File

@ -0,0 +1,62 @@
package mx.gob.jumapacelaya.models;
import java.time.LocalDate;
public class DetalleMantenimientoModel {
private int id;
private int planAnualId;
private String tipo;
private String departamento;
private String usuario;
private LocalDate fechaprog;
private LocalDate fecha;
private String nombreEquipo;
private String formaMant;
private String firmaUser;
private String firmaSmt;
private String firmaGcia;
public DetalleMantenimientoModel(int id, int planAnualId, String tipo, String departamento,
String usuario, LocalDate fechaprog, LocalDate fecha, String nombreEquipo, String formaMant,
String firmaUser, String firmaSmt, String firmaGcia) {
this.id = id;
this.planAnualId = planAnualId;
this.tipo = tipo;
this.departamento = departamento;
this.usuario = usuario;
this.fechaprog = fechaprog;
this.fecha = fecha;
this.nombreEquipo = nombreEquipo;
this.formaMant = formaMant;
this.firmaUser = firmaUser;
this.firmaSmt = firmaSmt;
this.firmaGcia = firmaGcia;
}
public int getId() { return id; }
public int getPlanAnualId() { return planAnualId; }
public String getTipo() { return tipo; }
public String getDepartamento() { return departamento; }
public String getUsuario() { return usuario; }
public LocalDate getFechaprog() { return fechaprog; }
public LocalDate getFecha() { return fecha; }
public String getNombreEquipo() { return nombreEquipo; }
public String getFormaMant() { return formaMant; }
public String getFirmaUser() { return firmaUser; }
public String getFirmaSmt() { return firmaSmt; }
public String getFirmaGcia() { return firmaGcia; }
public void setId(int id) { this.id = id; }
public void setPlanAnualId(int planAnualId) { this.planAnualId = planAnualId; }
public void setTipo(String tipo) { this.tipo = tipo; }
public void setDepartamento(String departamento) { this.departamento = departamento; }
public void setUsuario(String usuario) { this.usuario = usuario; }
public void setFechaprog(LocalDate fechaprog) { this.fechaprog = fechaprog; }
public void setFecha(LocalDate fecha) { this.fecha = fecha; }
public void setNombreEquipo(String nombreEquipo) { this.nombreEquipo = nombreEquipo; }
public void setFormaMant(String formaMant) { this.formaMant = formaMant; }
public void setFirmaUser(String firmaUser) { this.firmaUser = firmaUser; }
public void setFirmaSmt(String firmaSmt) { this.firmaSmt = firmaSmt; }
public void setFirmaGcia(String firmaGcia) { this.firmaGcia = firmaGcia; }
}

+ 35
- 0
src/main/java/mx/gob/jumapacelaya/models/HardwareDetalle.java View File

@ -0,0 +1,35 @@
package mx.gob.jumapacelaya.models;
public class HardwareDetalle {
private int mantenimientoId;
private int hardwareDetId;
private String descripcion;
private String modelo;
private String numSerie;
private String placa;
public HardwareDetalle(int mantenimientoId, int hardwareDetId, String descripcion,
String modelo, String numSerie, String placa) {
this.mantenimientoId = mantenimientoId;
this.hardwareDetId = hardwareDetId;
this.descripcion = descripcion;
this.modelo = modelo;
this.numSerie = numSerie;
this.placa = placa;
}
public int getMantenimientoId() { return mantenimientoId; }
public int getHardwareDetId() { return hardwareDetId; }
public String getDescripcion() { return descripcion; }
public String getModelo() { return modelo; }
public String getNumSerie() { return numSerie; }
public String getPlaca() { return placa; }
public void setMantenimientoId(int mantenimientoId) { this.mantenimientoId = mantenimientoId; }
public void setHardwareDetId(int hardwareDetId) { this.hardwareDetId = hardwareDetId; }
public void setDescripcion(String descripcion) { this.descripcion = descripcion; }
public void setModelo(String modelo) { this.modelo = modelo; }
public void setNumSerie(String numSerie) { this.numSerie = numSerie; }
public void setPlaca(String placa) { this.placa = placa; }
}

+ 104
- 22
src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java View File

@ -10,6 +10,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.security.interfaces.RSAKey;
import java.sql.*;
import java.time.LocalDate;
import java.util.ArrayList;
@ -43,8 +44,8 @@ public class DatabaseService {
String query = "SELECT tipomantid, nombre FROM MANTENIMIENTOS.TIPOMANT";
try (Connection connection = getMysqlConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
while (resultSet.next()) {
TiposMantenimiento tipo = new TiposMantenimiento(
@ -65,7 +66,7 @@ public class DatabaseService {
String query = "SELECT nomenclatura FROM TIPOMANT where TIPOMANTID = ?";
try (Connection connection = getMysqlConnection();
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setString(1, tipoMantenimiento);
try (ResultSet resultSet = preparedStatement.executeQuery()) {
@ -89,8 +90,8 @@ public class DatabaseService {
"FROM MANTENIMIENTOS.USUARIOS u";
try (Connection connection = getMysqlConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
while (resultSet.next()) {
Usuario usuario = new Usuario(
@ -113,8 +114,8 @@ public class DatabaseService {
String query = "select DEPARTAMENTOID, DESCRIPCION from MANTENIMIENTOS.DEPARTAMENTOS";
try (Connection connection = getMysqlConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
while (resultSet.next()) {
DepartamentosModel departamentosModel = new DepartamentosModel(
@ -136,8 +137,8 @@ public class DatabaseService {
String query = "select TIPOHARDWAREID, DESCRIPCION from MANTENIMIENTOS.TIPOSHARDWARE";
try (Connection connection = getMysqlConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
while (resultSet.next()) {
TiposHardware tiposHardwareModel = new TiposHardware(
@ -157,16 +158,18 @@ public class DatabaseService {
/* ----------------Obtener el Plan Anual de Mantenimiento ---------------- */
public List<PlanAnual> getPlanAnual() {
List<PlanAnual> planAnualList = new ArrayList<>();
String query = "SELECT p.plananualid, p.nomEquipo, p.area, " +
"p.monitor, p.teclado, p.mouse, p.regulador, " +
"p.cpu, p.impresora, p.miniPrint, p.laptop, p.escaner, " +
"p.fechaprog, m.fecha AS fechaMantenimiento, p.tecnicosmt, p.estado " +
"FROM MANTENIMIENTOS.PLANANUAL p " +
"LEFT JOIN MANTENIMIENTOS.MANTENIMIENTOS m ON p.plananualid = m.plananualid";
String query = "SELECT p.plananualid, p.nomEquipo, p.area, \r\n" + //
" p.monitor, p.teclado, p.mouse, p.regulador, \r\n" + //
" p.cpu, p.impresora, p.miniPrint, p.laptop, p.escaner, \r\n" + //
" p.fechaprog, m.fecha AS fechaMantenimiento, \r\n" + //
" p.tecnicosmt, p.estado\r\n" + //
"FROM MANTENIMIENTOS.PLANANUAL p\r\n" + //
"LEFT JOIN MANTENIMIENTOS.MANTENIMIENTOS m ON p.plananualid = m.plananualid\r\n" + //
"ORDER BY p.plananualid ASC";
try (Connection connection = getMysqlConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
while (resultSet.next()) {
PlanAnual planAnual = new PlanAnual(
@ -197,6 +200,85 @@ public class DatabaseService {
}
/* ----------------Obtener detalles del mantenimiento ---------------- */
public DetalleMantenimientoModel getDetalleMantenimientoPorPlanAnualId(int planAnualId) {
String query = "SELECT\r\n" + //
"\tm.MANTENIMIENTOID ID, p.PLANANUALID, t.NOMBRE TIPO,\r\n" + //
"\td.DESCRIPCION DEPARTAMENTO, u.NOMBRE USUARIO, pa.FECHAPROG,\r\n" + //
"\tm.FECHA FECHAREALIZADO, NOMBREEQUIPO, FORMAMANT, FIRMAUSUARIO, FIRMASMT, FIRMAGCIA \r\n" + //
"FROM MANTENIMIENTOS.MANTENIMIENTOS m\r\n" + //
"INNER JOIN MANTENIMIENTOS.TIPOMANT t ON m.TIPOMANTID = t.TIPOMANTID\r\n" + //
"INNER JOIN MANTENIMIENTOS.DEPARTAMENTOS d ON m.DEPARTAMENTOID = d.DEPARTAMENTOID\r\n" + //
"INNER JOIN MANTENIMIENTOS.USUARIOS u ON u.EMPLEADOID = m.EMPLEADOID\r\n" + //
"INNER JOIN MANTENIMIENTOS.PLANANUAL p ON m.PLANANUALID = p.PLANANUALID\r\n" + //
"INNER JOIN MANTENIMIENTOS.PLANANUAL pa ON m.PLANANUALID = pa.PLANANUALID \r\n" + //
"WHERE p.PLANANUALID = ?";
try (Connection connection = getMysqlConnection();
PreparedStatement statement = connection.prepareStatement(query)) {
statement.setInt(1, planAnualId);
try (ResultSet rs = statement.executeQuery()) {
if (rs.next()) {
return new DetalleMantenimientoModel(
rs.getInt("ID"),
rs.getInt("PLANANUALID"),
rs.getString("TIPO"),
rs.getString("DEPARTAMENTO"),
rs.getString("USUARIO"),
rs.getDate("FECHAPROG").toLocalDate(),
rs.getDate("FECHAREALIZADO").toLocalDate(),
rs.getString("NOMBREEQUIPO"),
rs.getString("FORMAMANT"),
rs.getString("FIRMAUSUARIO"),
rs.getString("FIRMASMT"),
rs.getString("FIRMAGCIA")
);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/* ----------------Obtener detalles del hardaware por ID ---------------- */
public List<HardwareDetalle> getHardwaredetallePorMantId(int mantenimientoId) {
List<HardwareDetalle> detalles = new ArrayList<>();
String query = "SELECT h.MANTENIMIENTOID, h.HARDWAREDETID, t.DESCRIPCION, h.MODELO, h.NUMSERIE, h.PLACA\r\n" + //
"FROM MANTENIMIENTOS.HARDWAREDET h\r\n" + //
"INNER JOIN MANTENIMIENTOS.TIPOSHARDWARE t ON h.TIPOHARDWAREID = t.TIPOHARDWAREID \r\n" + //
"WHERE h.MANTENIMIENTOID = ?";
try (Connection conn = getMysqlConnection();
PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setInt(1, mantenimientoId);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
HardwareDetalle detalle = new HardwareDetalle(
rs.getInt("MANTENIMIENTOID"),
rs.getInt("HARDWAREDETID"),
rs.getString("DESCRIPCION"),
rs.getString("MODELO"),
rs.getString("NUMSERIE"),
rs.getString("PLACA")
);
detalles.add(detalle);
}
} catch (SQLException e) {
e.printStackTrace();
}
return detalles;
}
/*-=iii=<() *-=iii=<() *-=iii=<() *-=iii=<() *-=iii=<() *-=iii=<()*/
/*-=iii=<() *-=iii=<() *-=iii=<() *-=iii=<() *-=iii=<()*/
/*-=iii=<() *-=iii=<() *-=iii=<() *-=iii=<()*/
@ -205,8 +287,8 @@ public class DatabaseService {
/* ( ͡° ͜ʖ ͡°) 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 equipoId, String userSignatureBase64,
String smtSignatureBase64, String gciaSignatureBase64, String planAnualId) {
String formaMant, String equipoId, String userSignatureBase64,
String smtSignatureBase64, String gciaSignatureBase64, String planAnualId) {
String query = "INSERT INTO MANTENIMIENTOS.MANTENIMIENTOS (fecha, tipoMantId, departamentoId, empleadoId, formaMant, nombreequipo," +
" firmaUsuario, firmaSmt, firmaGcia, planAnualId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING MANTENIMIENTOID INTO ?";
@ -310,7 +392,7 @@ public class DatabaseService {
boolean isInserted = false;
try (Connection connection = getMysqlConnection();
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setInt(1, Integer.parseInt(tipoHardwareId));
preparedStatement.setString(2, numSerie);
@ -349,7 +431,7 @@ public class DatabaseService {
String query = "INSERT INTO MANTENIMIENTOS.ACTUALIZACIONESSEG (descripcion, otrasactualizaciones, mantenimientoid) VALUES (?, ?, ?)";
try (Connection connection = getMysqlConnection();
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setString(1, descripcion);
preparedStatement.setString(2, otras);
@ -371,7 +453,7 @@ public class DatabaseService {
try (Connection connection = getMysqlConnection();
//FileInputStream file = new FileInputStream(rutaArchivoExcel);
Workbook workbook = new XSSFWorkbook(inputStream)) {
Workbook workbook = new XSSFWorkbook(inputStream)) {
Sheet sheet = workbook.getSheetAt(0); // Primera hoja del archivo Excel


+ 157
- 0
src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java View File

@ -0,0 +1,157 @@
package mx.gob.jumapacelaya.ui;
import java.time.format.DateTimeFormatter;
import java.util.List;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.grid.GridVariant;
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.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.function.ValueProvider;
import com.vaadin.flow.router.BeforeEnterEvent;
import com.vaadin.flow.router.BeforeEnterObserver;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import jakarta.annotation.security.PermitAll;
import mx.gob.jumapacelaya.models.DetalleMantenimientoModel;
import mx.gob.jumapacelaya.models.HardwareDetalle;
import mx.gob.jumapacelaya.services.DatabaseService;
@PageTitle("Detalles del mantenimiento")
@Route(value = "detalles", layout = MainLayout.class)
@PermitAll
@CssImport("./themes/sistema-mantenimiento/styles.css")
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 HorizontalLayout fechasLayout;
private TextField txtId;
private TextField txtEquipo;
private TextField txtTipo;
private TextField txtFecha;
private TextField txtFechaRealizacion;
private TextField txtUsuario;
private TextField txtDepartamento;
private Grid<HardwareDetalle> gridHardware;
private Button btnEditar;
private Button btnImprimirRepo;
public DetallesMantView() {
setPadding(true);
mainLayout = new VerticalLayout();
mainLayout.setHeightFull();
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");
id = new H3();
headerLayout = new HorizontalLayout();
headerLayout.setWidthFull();
headerLayout.add(id);
layout2 = new HorizontalLayout();
layout2.setWidthFull();
txtEquipo = new TextField("Equipo:");
txtTipo = new TextField("Tipo:");
txtEquipo.setReadOnly(true);
txtTipo.setReadOnly(true);
layout2.add(txtEquipo,txtTipo);
fechasLayout = new HorizontalLayout();
fechasLayout.setWidthFull();
txtFecha = new TextField("Fecha realización:");
txtFechaRealizacion = new TextField("Fecha programada:");
txtFecha.setReadOnly(true);
txtFechaRealizacion.setReadOnly(true);
fechasLayout.add(txtFechaRealizacion,txtFecha);
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);
gridHardware = new Grid<>();
gridHardware.addColumn(HardwareDetalle::getDescripcion).setHeader("Descripción");
gridHardware.addColumn(HardwareDetalle::getModelo).setHeader("Modelo");
gridHardware.addColumn(HardwareDetalle::getNumSerie).setHeader("No. Serie");
gridHardware.addColumn(HardwareDetalle::getPlaca).setHeader("Placa");
gridHardware.setWidthFull();
gridHardware.setHeight("250px");
gridHardware.addThemeVariants(GridVariant.LUMO_ROW_STRIPES);
botonesLayout = new HorizontalLayout();
botonesLayout.setWidthFull();
botonesLayout.setJustifyContentMode(JustifyContentMode.CENTER);
btnEditar = new Button("Editar", new Icon(VaadinIcon.EDIT));
btnImprimirRepo = new Button("Imprimir Reporte", new Icon(VaadinIcon.PRINT));
botonesLayout.add(btnEditar,btnImprimirRepo);
mainLayout.add(headerLayout,layout2,fechasLayout,layout3,gridHardware,botonesLayout);
add(mainLayout);
}
@Override
public void beforeEnter(BeforeEnterEvent event) {
String idParam = event.getLocation().getQueryParameters().getParameters().get("id") != null
? event.getLocation().getQueryParameters().getParameters().get("id").stream().findFirst().orElse(null)
: null;
if (idParam != null) {
try {
int planId = Integer.parseInt(idParam);
DatabaseService service = new DatabaseService();
DetalleMantenimientoModel detalle = service.getDetalleMantenimientoPorPlanAnualId(planId);
if (detalle != null) {
id.setText("Plan ID: " + idParam);
txtEquipo.setValue(String.valueOf(detalle.getNombreEquipo()));
txtTipo.setValue(String.valueOf(detalle.getTipo()));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
String fechaProg = detalle.getFechaprog() != null ? detalle.getFechaprog().format(formatter) : "";
String fechaReal = detalle.getFecha() != null ? detalle.getFecha().format(formatter) : "";
txtFechaRealizacion.setValue(fechaProg);
txtFecha.setValue(fechaReal);
txtUsuario.setValue(String.valueOf(detalle.getUsuario()));
txtDepartamento.setValue(String.valueOf(detalle.getDepartamento()));
int mantId = detalle.getId();
List<HardwareDetalle> listaHardware = service.getHardwaredetallePorMantId(mantId);
gridHardware.setItems(listaHardware);
} else {
id.setText("No se encontro informacion para el Plan ID: " + planId);
}
} catch (NumberFormatException e) {
id.setText("ID no valido");
}
}
}
}

+ 76
- 44
src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java View File

@ -22,6 +22,7 @@ import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.component.upload.Upload;
import com.vaadin.flow.component.upload.receivers.MemoryBuffer;
import com.vaadin.flow.data.value.ValueChangeMode;
import com.vaadin.flow.function.ValueProvider;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import jakarta.annotation.security.PermitAll;
@ -143,6 +144,7 @@ public class PlanAnualView extends VerticalLayout {
chkMostrarTodos.addValueChangeListener(event -> {
planAnualFilter.setExcludeRealizado(!event.getValue());
});
chkMostrarTodos.setValue(true);
this.setPadding(false);
@ -175,66 +177,96 @@ public class PlanAnualView extends VerticalLayout {
private Grid<PlanAnual> setupGrid() {
Grid<PlanAnual> planAnualGrid = new Grid<>(PlanAnual.class, false);
Grid<PlanAnual> planAnualGrid = new Grid<>(PlanAnual.class, false);
planAnualGrid.addColumn(PlanAnual :: getNumero).setHeader("No.").setSortable(true);
planAnualGrid.addColumn(PlanAnual :: getNomEquipo).setHeader("Equipo").setAutoWidth(true);
planAnualGrid.addColumn(PlanAnual :: getDepartamento).setHeader("Departamento").setAutoWidth(true);
planAnualGrid.addThemeVariants(GridVariant.LUMO_WRAP_CELL_CONTENT);
planAnualGrid.addColumn((ValueProvider<PlanAnual, Integer>) PlanAnual::getNumero)
.setHeader("No.").setSortable(true);
// Usando iconos en las columnas booleanas
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isMonitor())).setHeader("Monitor");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isTeclado())).setHeader("Teclado");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isMouse())).setHeader("Mouse");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isRegulador())).setHeader("Regulador");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isCpu())).setHeader("CPU");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isImpresora())).setHeader("Impresora");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isMiniPrint())).setHeader("MiniPrint");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isLaptop())).setHeader("Laptop");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isEscaner())).setHeader("Escáner");
planAnualGrid.addColumn((ValueProvider<PlanAnual, String>) PlanAnual::getNomEquipo)
.setHeader("Equipo").setAutoWidth(true);
planAnualGrid.addColumn(planAnual -> {
LocalDate fechaProgramada = planAnual.getFechaProgramada();
return fechaProgramada != null ? fechaProgramada.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")) : "No programada"; // Formato especifico
}).setHeader("Fecha Programada").setAutoWidth(true).setSortable(true);
planAnualGrid.addColumn((ValueProvider<PlanAnual, String>) PlanAnual::getDepartamento)
.setHeader("Departamento").setAutoWidth(true);
planAnualGrid.addColumn(planAnual -> {
LocalDate fechaMantenimiento = planAnual.getFechaMantenimiento();
return fechaMantenimiento != null ? fechaMantenimiento.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")) : ""; // Formato especifico
}).setHeader("Fecha Realizacion").setAutoWidth(true).setSortable(true);
planAnualGrid.addThemeVariants(GridVariant.LUMO_WRAP_CELL_CONTENT);
planAnualGrid.addColumn(PlanAnual :: getEstado).setHeader("Estado").setAutoWidth(true);
// Iconos en columnas booleanas
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isMonitor())).setHeader("Monitor");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isTeclado())).setHeader("Teclado");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isMouse())).setHeader("Mouse");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isRegulador())).setHeader("Regulador");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isCpu())).setHeader("CPU");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isImpresora())).setHeader("Impresora");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isMiniPrint())).setHeader("MiniPrint");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isLaptop())).setHeader("Laptop");
planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isEscaner())).setHeader("Escáner");
Grid.Column<PlanAnual> smtColumn = planAnualGrid.addColumn(PlanAnual::getSmt).setHeader("S.M.T").setKey("smtColumnKey");
// Fechas formateadas
planAnualGrid.addColumn(planAnual -> {
LocalDate fecha = planAnual.getFechaProgramada();
return fecha != null ? fecha.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")) : "No programada";
}).setHeader("Fecha Programada").setAutoWidth(true).setSortable(true);
planAnualGrid.setItems(databaseService.getPlanAnual());
planAnualGrid.addColumn(planAnual -> {
LocalDate fecha = planAnual.getFechaMantenimiento();
return fecha != null ? fecha.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")) : "";
}).setHeader("Fecha Realización").setAutoWidth(true).setSortable(true);
planAnualGrid.addComponentColumn(planAnual -> {
Button btnRealizar = new Button(new Icon(VaadinIcon.EDIT));
btnRealizar.getStyle().set("color", "#A02142");
btnRealizar.addClickListener(event -> {
planAnualGrid.addColumn((ValueProvider<PlanAnual, String>) PlanAnual::getEstado)
.setHeader("Estado").setAutoWidth(true);
planAnualGrid.addColumn((ValueProvider<PlanAnual, String>) PlanAnual::getSmt)
.setHeader("S.M.T").setKey("smtColumnKey");
// Botón condicional
planAnualGrid.addComponentColumn(planAnual -> {
String estado = planAnual.getEstado();
Button btn;
if ("PENDIENTE".equalsIgnoreCase(estado)) {
btn = new Button(new Icon(VaadinIcon.EDIT));
btn.setTooltipText("Realizar mantenimiento");
btn.getStyle().set("color", "#A02142");
btn.addClickListener(event -> {
int idPlananual = planAnual.getNumero();
LocalDate fechaSistema = LocalDate.now();
String fechaStr = fechaSistema.toString();
String nomEquipo = planAnual.getNomEquipo();
String departamento = planAnual.getDepartamento();
btnRealizar.getUI().ifPresent(ui -> ui.navigate(
"mantenimiento?id=" + idPlananual + "&fecha=" + fechaStr +
"&tipo=1" + "&nomEquipo=" + nomEquipo +
"&departamento=" + departamento));
btn.getUI().ifPresent(ui -> ui.navigate(
"mantenimiento?id=" + idPlananual +
"&fecha=" + fechaSistema +
"&tipo=1" +
"&nomEquipo=" + nomEquipo +
"&departamento=" + departamento
));
});
// Deshabilitar el boton si el estado no es pendiente
if (!"PENDIENTE".equalsIgnoreCase(planAnual.getEstado())) {
btnRealizar.setVisible(false);
}
} else if ("REALIZADO".equalsIgnoreCase(estado)) {
btn = new Button(new Icon(VaadinIcon.EYE));
btn.setTooltipText("Ver detalles");
btn.getStyle().set("color", "#A02142");
return btnRealizar;
});
btn.addClickListener(event -> {
int idPlananual = planAnual.getNumero();
btn.getUI().ifPresent(ui -> ui.navigate(
"detalles?id=" + idPlananual
));
});
} else {
btn = new Button("N/A");
btn.setEnabled(false);
}
return btn;
});
// Cargar datos
planAnualGrid.setItems(databaseService.getPlanAnual());
return planAnualGrid;
}
planAnualGrid.setItems(databaseService.getPlanAnual());
return planAnualGrid;
}
/* (∩ ͡° ͜ʖ ͡°)⊃━☆゚. * SUSTITUIR VALORES BOOLEANOS POR UN ICONO (∩ ͡° ͜ʖ ͡°)⊃━☆゚. * */


Loading…
Cancel
Save