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 generated by TestBench for failed integration tests
error-screenshots/ error-screenshots/
webpack.generated.js 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.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.StringReader; import java.io.StringReader;
import java.security.interfaces.RSAKey;
import java.sql.*; import java.sql.*;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
@ -43,8 +44,8 @@ public class DatabaseService {
String query = "SELECT tipomantid, nombre FROM MANTENIMIENTOS.TIPOMANT"; String query = "SELECT tipomantid, nombre FROM MANTENIMIENTOS.TIPOMANT";
try (Connection connection = getMysqlConnection(); 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()) { while (resultSet.next()) {
TiposMantenimiento tipo = new TiposMantenimiento( TiposMantenimiento tipo = new TiposMantenimiento(
@ -65,7 +66,7 @@ public class DatabaseService {
String query = "SELECT nomenclatura FROM TIPOMANT where TIPOMANTID = ?"; String query = "SELECT nomenclatura FROM TIPOMANT where TIPOMANTID = ?";
try (Connection connection = getMysqlConnection(); try (Connection connection = getMysqlConnection();
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setString(1, tipoMantenimiento); preparedStatement.setString(1, tipoMantenimiento);
try (ResultSet resultSet = preparedStatement.executeQuery()) { try (ResultSet resultSet = preparedStatement.executeQuery()) {
@ -89,8 +90,8 @@ public class DatabaseService {
"FROM MANTENIMIENTOS.USUARIOS u"; "FROM MANTENIMIENTOS.USUARIOS u";
try (Connection connection = getMysqlConnection(); 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()) { while (resultSet.next()) {
Usuario usuario = new Usuario( Usuario usuario = new Usuario(
@ -113,8 +114,8 @@ public class DatabaseService {
String query = "select DEPARTAMENTOID, DESCRIPCION from MANTENIMIENTOS.DEPARTAMENTOS"; String query = "select DEPARTAMENTOID, DESCRIPCION from MANTENIMIENTOS.DEPARTAMENTOS";
try (Connection connection = getMysqlConnection(); 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()) { while (resultSet.next()) {
DepartamentosModel departamentosModel = new DepartamentosModel( DepartamentosModel departamentosModel = new DepartamentosModel(
@ -136,8 +137,8 @@ public class DatabaseService {
String query = "select TIPOHARDWAREID, DESCRIPCION from MANTENIMIENTOS.TIPOSHARDWARE"; String query = "select TIPOHARDWAREID, DESCRIPCION from MANTENIMIENTOS.TIPOSHARDWARE";
try (Connection connection = getMysqlConnection(); 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()) { while (resultSet.next()) {
TiposHardware tiposHardwareModel = new TiposHardware( TiposHardware tiposHardwareModel = new TiposHardware(
@ -157,16 +158,18 @@ public class DatabaseService {
/* ----------------Obtener el Plan Anual de Mantenimiento ---------------- */ /* ----------------Obtener el Plan Anual de Mantenimiento ---------------- */
public List<PlanAnual> getPlanAnual() { public List<PlanAnual> getPlanAnual() {
List<PlanAnual> planAnualList = new ArrayList<>(); 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(); 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()) { while (resultSet.next()) {
PlanAnual planAnual = new PlanAnual( 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=<() *-=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 ( ͡° ͜ʖ ͡°) */ /* ( ͡° ͜ʖ ͡°) Metodos para insetar en la BD ( ͡° ͜ʖ ͡°) ( ͡° ͜ʖ ͡°) Metodos para insetar en la BD ( ͡° ͜ʖ ͡°) ( ͡° ͜ʖ ͡°) Metodos para insetar en la BD ( ͡° ͜ʖ ͡°) */
// INSERTAR EN TABLA: MANTENIMINETOS // INSERTAR EN TABLA: MANTENIMINETOS
public int insertarMantenimiento(LocalDate fecha, String tipoMantId, String departamentoId, String empleadoId, 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," + String query = "INSERT INTO MANTENIMIENTOS.MANTENIMIENTOS (fecha, tipoMantId, departamentoId, empleadoId, formaMant, nombreequipo," +
" firmaUsuario, firmaSmt, firmaGcia, planAnualId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING MANTENIMIENTOID INTO ?"; " firmaUsuario, firmaSmt, firmaGcia, planAnualId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING MANTENIMIENTOID INTO ?";
@ -310,7 +392,7 @@ public class DatabaseService {
boolean isInserted = false; boolean isInserted = false;
try (Connection connection = getMysqlConnection(); try (Connection connection = getMysqlConnection();
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setInt(1, Integer.parseInt(tipoHardwareId)); preparedStatement.setInt(1, Integer.parseInt(tipoHardwareId));
preparedStatement.setString(2, numSerie); preparedStatement.setString(2, numSerie);
@ -349,7 +431,7 @@ public class DatabaseService {
String query = "INSERT INTO MANTENIMIENTOS.ACTUALIZACIONESSEG (descripcion, otrasactualizaciones, mantenimientoid) VALUES (?, ?, ?)"; String query = "INSERT INTO MANTENIMIENTOS.ACTUALIZACIONESSEG (descripcion, otrasactualizaciones, mantenimientoid) VALUES (?, ?, ?)";
try (Connection connection = getMysqlConnection(); try (Connection connection = getMysqlConnection();
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setString(1, descripcion); preparedStatement.setString(1, descripcion);
preparedStatement.setString(2, otras); preparedStatement.setString(2, otras);
@ -371,7 +453,7 @@ public class DatabaseService {
try (Connection connection = getMysqlConnection(); try (Connection connection = getMysqlConnection();
//FileInputStream file = new FileInputStream(rutaArchivoExcel); //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 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.Upload;
import com.vaadin.flow.component.upload.receivers.MemoryBuffer; import com.vaadin.flow.component.upload.receivers.MemoryBuffer;
import com.vaadin.flow.data.value.ValueChangeMode; import com.vaadin.flow.data.value.ValueChangeMode;
import com.vaadin.flow.function.ValueProvider;
import com.vaadin.flow.router.PageTitle; import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route; import com.vaadin.flow.router.Route;
import jakarta.annotation.security.PermitAll; import jakarta.annotation.security.PermitAll;
@ -143,6 +144,7 @@ public class PlanAnualView extends VerticalLayout {
chkMostrarTodos.addValueChangeListener(event -> { chkMostrarTodos.addValueChangeListener(event -> {
planAnualFilter.setExcludeRealizado(!event.getValue()); planAnualFilter.setExcludeRealizado(!event.getValue());
}); });
chkMostrarTodos.setValue(true);
this.setPadding(false); this.setPadding(false);
@ -175,66 +177,96 @@ public class PlanAnualView extends VerticalLayout {
private Grid<PlanAnual> setupGrid() { 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(); int idPlananual = planAnual.getNumero();
LocalDate fechaSistema = LocalDate.now(); LocalDate fechaSistema = LocalDate.now();
String fechaStr = fechaSistema.toString();
String nomEquipo = planAnual.getNomEquipo(); String nomEquipo = planAnual.getNomEquipo();
String departamento = planAnual.getDepartamento(); 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 (∩ ͡° ͜ʖ ͡°)⊃━☆゚. * */ /* (∩ ͡° ͜ʖ ͡°)⊃━☆゚. * SUSTITUIR VALORES BOOLEANOS POR UN ICONO (∩ ͡° ͜ʖ ͡°)⊃━☆゚. * */


Loading…
Cancel
Save