diff --git a/src/main/java/mx/gob/jumapacelaya/models/DetalleMantenimientoModel.java b/src/main/java/mx/gob/jumapacelaya/models/DetalleMantenimientoModel.java index 11b65d3..00064d1 100644 --- a/src/main/java/mx/gob/jumapacelaya/models/DetalleMantenimientoModel.java +++ b/src/main/java/mx/gob/jumapacelaya/models/DetalleMantenimientoModel.java @@ -15,10 +15,11 @@ public class DetalleMantenimientoModel { private String firmaUser; private String firmaSmt; private String firmaGcia; + private String situacion; 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) { + String firmaUser, String firmaSmt, String firmaGcia, String situacion) { this.id = id; this.planAnualId = planAnualId; @@ -32,6 +33,7 @@ public class DetalleMantenimientoModel { this.firmaUser = firmaUser; this.firmaSmt = firmaSmt; this.firmaGcia = firmaGcia; + this.situacion = situacion; } public int getId() { return id; } @@ -46,6 +48,7 @@ public class DetalleMantenimientoModel { public String getFirmaUser() { return firmaUser; } public String getFirmaSmt() { return firmaSmt; } public String getFirmaGcia() { return firmaGcia; } + public String getSituacion() { return situacion; } public void setId(int id) { this.id = id; } public void setPlanAnualId(int planAnualId) { this.planAnualId = planAnualId; } @@ -59,4 +62,5 @@ public class DetalleMantenimientoModel { public void setFirmaUser(String firmaUser) { this.firmaUser = firmaUser; } public void setFirmaSmt(String firmaSmt) { this.firmaSmt = firmaSmt; } public void setFirmaGcia(String firmaGcia) { this.firmaGcia = firmaGcia; } + public void setSituacion(String situacion) { this.situacion = situacion; } } diff --git a/src/main/java/mx/gob/jumapacelaya/models/PlanAnual.java b/src/main/java/mx/gob/jumapacelaya/models/PlanAnual.java index 3efcaa1..0e9736e 100644 --- a/src/main/java/mx/gob/jumapacelaya/models/PlanAnual.java +++ b/src/main/java/mx/gob/jumapacelaya/models/PlanAnual.java @@ -17,15 +17,17 @@ public class PlanAnual { private boolean escaner; // Cambiado a boolean private LocalDate fechaProgramada; private LocalDate fechaMantenimiento; + private String mesplaneado; private String smt; private String estado; + private String situacion; // Constructor public PlanAnual(int numero, String nomEquipo, String departamento, boolean monitor, boolean teclado, boolean mouse, boolean regulador, boolean cpu, boolean impresora, boolean miniPrint, boolean laptop, boolean escaner, LocalDate fechaProgramada, - LocalDate fechaMantenimiento, String smt, String estado) { + LocalDate fechaMantenimiento, String mesplaneado, String smt, String estado, String situacion) { this.numero = numero; this.nomEquipo = nomEquipo; @@ -41,8 +43,10 @@ public class PlanAnual { this.escaner = escaner; this.fechaProgramada = fechaProgramada; this.fechaMantenimiento = fechaMantenimiento; + this.mesplaneado = mesplaneado; this.smt = smt; this.estado = estado; + this.situacion = situacion; } // Getters @@ -122,4 +126,20 @@ public class PlanAnual { public void setFechaProgramada(LocalDate fechaProgramada) { this.fechaProgramada = fechaProgramada; } + + public String getMesplaneado() { + return mesplaneado; + } + + public void setMesplaneado(String mesplaneado) { + this.mesplaneado = mesplaneado; + } + + public String getSituacion() { + return situacion; + } + + public void setSituacion(String situacion) { + this.situacion = situacion; + } } diff --git a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java index a27183b..6055988 100644 --- a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java +++ b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java @@ -162,14 +162,17 @@ public class DatabaseService { /* ----------------Obtener el Plan Anual de Mantenimiento ---------------- */ public List getPlanAnual() { List planAnualList = new ArrayList<>(); - 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 PLANANUAL p\r\n" + // - "LEFT JOIN MANTENIMIENTOS m ON p.plananualid = m.plananualid\r\n" + // - "ORDER BY p.plananualid ASC"; + String query = "SELECT p.plananualid, p.nomEquipo, p.area,\n" + + " p.monitor, p.teclado, p.mouse, p.regulador,\n" + + " p.cpu, p.impresora, p.miniPrint, p.laptop, p.escaner,\n" + + " p.fechaprog, m.fecha AS fechaMantenimiento,\n" + + " me.NOMBRE AS MESPLANEADO, p.tecnicosmt, p.estado,\n" + + " COALESCE(v.SITUACION, 'NO REALIZADO') AS SITUACION\n" + + "FROM PLANANUAL p\n" + + "LEFT JOIN MANTENIMIENTOS m ON p.plananualid = m.plananualid\n" + + "LEFT JOIN MESES me ON p.MESID = me.MESID\n" + + "LEFT JOIN VW_SITUACION_MANTENIMIENTO v ON v.PLANANUALID = p.PLANANUALID\n" + + "ORDER BY p.plananualid ASC"; try (Connection connection = getMysqlConnection(); Statement statement = connection.createStatement(); @@ -191,8 +194,10 @@ public class DatabaseService { resultSet.getBoolean("escaner"), resultSet.getDate("fechaprog").toLocalDate(), // Cambiado a LocalDate resultSet.getDate("fechaMantenimiento") != null ? resultSet.getDate("fechaMantenimiento").toLocalDate() : null, // Cambiado a LocalDate + resultSet.getString("mesplaneado"), resultSet.getString("tecnicosmt"), - resultSet.getString("estado") + resultSet.getString("estado"), + resultSet.getString("SITUACION") ); planAnualList.add(planAnual); } @@ -207,17 +212,28 @@ 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 m\r\n" + // - "INNER JOIN TIPOMANT t ON m.TIPOMANTID = t.TIPOMANTID\r\n" + // - "INNER JOIN DEPARTAMENTOS d ON m.DEPARTAMENTOID = d.DEPARTAMENTOID\r\n" + // - "INNER JOIN USUARIOS u ON u.EMPLEADOID = m.EMPLEADOID\r\n" + // - "INNER JOIN PLANANUAL p ON m.PLANANUALID = p.PLANANUALID\r\n" + // - "INNER JOIN PLANANUAL pa ON m.PLANANUALID = pa.PLANANUALID \r\n" + // - "WHERE p.PLANANUALID = ?"; + String query = "SELECT\n" + + " m.MANTENIMIENTOID AS ID,\n" + + " p.PLANANUALID,\n" + + " t.NOMBRE AS TIPO,\n" + + " d.DESCRIPCION AS DEPARTAMENTO,\n" + + " u.NOMBRE AS USUARIO,\n" + + " v.FECHAPROG,\n" + + " v.FECHAREALIZADO,\n" + + " NOMBREEQUIPO,\n" + + " FORMAMANT,\n" + + " FIRMAUSUARIO,\n" + + " FIRMASMT,\n" + + " FIRMAGCIA,\n" + + " v.SITUACION\n" + + "FROM MANTENIMIENTOS m\n" + + "INNER JOIN TIPOMANT t ON m.TIPOMANTID = t.TIPOMANTID\n" + + "INNER JOIN DEPARTAMENTOS d ON m.DEPARTAMENTOID = d.DEPARTAMENTOID\n" + + "INNER JOIN USUARIOS u ON u.EMPLEADOID = m.EMPLEADOID\n" + + "INNER JOIN PLANANUAL p ON m.PLANANUALID = p.PLANANUALID\n" + + "INNER JOIN PLANANUAL pa ON m.PLANANUALID = pa.PLANANUALID\n" + + "INNER JOIN VW_SITUACION_MANTENIMIENTO v ON v.MANTENIMIENTOID = m.MANTENIMIENTOID\n" + + "WHERE p.PLANANUALID = ?"; try (Connection connection = getMysqlConnection(); PreparedStatement statement = connection.prepareStatement(query)) { @@ -238,7 +254,8 @@ public class DatabaseService { rs.getString("FORMAMANT"), rs.getString("FIRMAUSUARIO"), rs.getString("FIRMASMT"), - rs.getString("FIRMAGCIA") + rs.getString("FIRMAGCIA"), + rs.getString("SITUACION") ); } } @@ -604,13 +621,12 @@ public class DatabaseService { /* ----------------Actualizar los detalles del del mantenimiento por ID ---------------- */ - public boolean actualizarPlanAnual(int planAnualId, String nombreEquipo, LocalDate fechaProg) { - String sql = "UPDATE PLANANUAL SET NOMEQUIPO=?, FECHAPROG=? WHERE PLANANUALID=?"; + public boolean actualizarPlanAnual(int planAnualId, String nombreEquipo) { + String sql = "UPDATE PLANANUAL SET NOMEQUIPO=? 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); + stmt.setInt(2, planAnualId); return stmt.executeUpdate() > 0; } catch (SQLException e) { e.printStackTrace(); diff --git a/src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java b/src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java index 8317477..9d26f53 100644 --- a/src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java +++ b/src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java @@ -12,16 +12,12 @@ import com.vaadin.flow.component.html.Anchor; import com.vaadin.flow.server.StreamResource; import mx.gob.jumapacelaya.services.ReportService; import org.springframework.security.core.Authentication; -import org.springframework.cglib.core.Local; import org.springframework.security.core.context.SecurityContextHolder; import org.vaadin.lineawesome.LineAwesomeIcon; -import com.nimbusds.jose.proc.SecurityContext; 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.dialog.Dialog; -import com.vaadin.flow.component.grid.Grid; import com.vaadin.flow.component.grid.GridVariant; import com.vaadin.flow.component.gridpro.GridPro; import com.vaadin.flow.component.html.H3; @@ -34,8 +30,6 @@ 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; -import com.vaadin.flow.data.binder.Binder; -import com.vaadin.flow.function.ValueProvider; import com.vaadin.flow.router.BeforeEnterEvent; import com.vaadin.flow.router.BeforeEnterObserver; import com.vaadin.flow.router.PageTitle; @@ -51,7 +45,6 @@ import mx.gob.jumapacelaya.models.TiposMantenimiento; import mx.gob.jumapacelaya.models.Usuario; import mx.gob.jumapacelaya.services.DatabaseService; import mx.gob.jumapacelaya.services.SecurityService; -import oracle.net.aso.f; @PageTitle("Detalles del mantenimiento") @Route(value = "detalles", layout = MainLayout.class) @@ -70,7 +63,8 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser private TextField txtEquipo; private ComboBox cbTipo; private TextField txtFecha; - private TextField txtFechaRealizacion; + private TextField txtFechaProgramada; + private TextField txtSituacion; private ComboBox cbUsuario; private ComboBox cbDepartamento; private GridPro gridHardware; @@ -144,10 +138,12 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser fechasLayout = new HorizontalLayout(); fechasLayout.setWidthFull(); txtFecha = new TextField("Fecha realización:"); - txtFechaRealizacion = new TextField("Fecha programada:"); + txtFechaProgramada = new TextField("Fecha programada:"); + txtSituacion = new TextField("Situación:"); txtFecha.setReadOnly(true); - txtFechaRealizacion.setReadOnly(true); - fechasLayout.add(txtFechaRealizacion,txtFecha); + txtFechaProgramada.setReadOnly(true); + txtSituacion.setReadOnly(true); + fechasLayout.add(txtFechaProgramada,txtFecha,txtSituacion); layout3 = new HorizontalLayout(); layout3.setWidthFull(); @@ -225,7 +221,6 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser txtEquipo.setReadOnly(false); cbTipo.setReadOnly(false); txtFecha.setReadOnly(false); - txtFechaRealizacion.setReadOnly(false); cbUsuario.setReadOnly(false); cbDepartamento.setReadOnly(false); btnImprimirRepo.setVisible(false); @@ -255,7 +250,6 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser txtEquipo.setReadOnly(true); cbTipo.setReadOnly(true); txtFecha.setReadOnly(true); - txtFechaRealizacion.setReadOnly(true); cbUsuario.setReadOnly(true); cbDepartamento.setReadOnly(true); btnImprimirRepo.setVisible(true); @@ -350,7 +344,6 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser txtEquipo.setReadOnly(true); cbTipo.setReadOnly(true); txtFecha.setReadOnly(true); - txtFechaRealizacion.setReadOnly(true); cbUsuario.setReadOnly(true); cbDepartamento.setReadOnly(true); btnImprimirRepo.setVisible(true); @@ -392,7 +385,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser // Fechas (corrige el campo) DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); - LocalDate fechaProg = !txtFechaRealizacion.getValue().isEmpty() ? LocalDate.parse(txtFechaRealizacion.getValue(), formatter) : null; + LocalDate fechaProg = !txtFechaProgramada.getValue().isEmpty() ? LocalDate.parse(txtFechaProgramada.getValue(), formatter) : null; LocalDate fechaRealizado = !txtFecha.getValue().isEmpty() ? LocalDate.parse(txtFecha.getValue(), formatter) : null; @@ -414,7 +407,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser // ACTUALIZA PLANANUAL (nombre del equipo y fecha programada) - if (!service.actualizarPlanAnual(planAnualIdActual, txtEquipo.getValue(), fechaProg)) { + if (!service.actualizarPlanAnual(planAnualIdActual, txtEquipo.getValue())) { exito = false; } // ACTUALIZA MANTENIMIENTOS (tipo, departamento, usuario, fecha realizado) @@ -456,7 +449,6 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser txtEquipo.setReadOnly(true); cbTipo.setReadOnly(true); txtFecha.setReadOnly(true); - txtFechaRealizacion.setReadOnly(true); cbUsuario.setReadOnly(true); cbDepartamento.setReadOnly(true); btnImprimirRepo.setVisible(true); @@ -545,9 +537,11 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser 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) : ""; + String situacion = detalle.getSituacion() != null ? detalle.getSituacion() : ""; - txtFechaRealizacion.setValue(fechaProg); + txtFechaProgramada.setValue(fechaProg); txtFecha.setValue(fechaReal); + txtSituacion.setValue(situacion); cbUsuario.setValue( cbUsuario.getListDataView().getItems() .filter(u -> u.getNombre().equals(detalle.getUsuario())) diff --git a/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java b/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java index b9f260f..de8e967 100644 --- a/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java +++ b/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java @@ -90,8 +90,8 @@ public class PlanAnualView extends VerticalLayout { planAnualFilter.setExcludeRealizado(true); HeaderRow headerRow = planAnualGrid.appendHeaderRow(); - headerRow.getCell(planAnualGrid.getColumnByKey("smtColumnKey")) - .setComponent(createFilterHeader("S.M.T", planAnualFilter::setSmt)); + /*headerRow.getCell(planAnualGrid.getColumnByKey("smtColumnKey")) + .setComponent(createFilterHeader("S.M.T", planAnualFilter::setSmt));*/ headerRow.getCell(planAnualGrid.getColumnByKey("equipoColumnKey")) .setComponent(createFilterHeader("Equipo", planAnualFilter::setEquipo)); @@ -265,6 +265,12 @@ public class PlanAnualView extends VerticalLayout { planAnualGrid.addThemeVariants(GridVariant.LUMO_WRAP_CELL_CONTENT); planAnualGrid.addThemeVariants(GridVariant.LUMO_ROW_STRIPES); + + planAnualGrid.addColumn(planAnual -> { + String mesPlaneado = planAnual.getMesplaneado(); + return mesPlaneado != null ? mesPlaneado.toUpperCase() : "N/A"; + }).setHeader("Mes Planeado").setAutoWidth(true); + // Fechas formateadas planAnualGrid.addColumn(planAnual -> { LocalDate fecha = planAnual.getFechaProgramada(); @@ -276,14 +282,18 @@ public class PlanAnualView extends VerticalLayout { return fecha != null ? fecha.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")) : ""; }).setHeader("Fecha Realización").setAutoWidth(true).setSortable(true); + planAnualGrid.addColumn((ValueProvider) PlanAnual::getEstado) .setHeader("Estado").setAutoWidth(true); - planAnualGrid.addColumn((ValueProvider) PlanAnual::getSmt) - .setHeader("S.M.T").setKey("smtColumnKey"); + planAnualGrid.addColumn((ValueProvider) PlanAnual::getSituacion) + .setHeader("Situación").setAutoWidth(true); + + /*planAnualGrid.addColumn((ValueProvider) PlanAnual::getSmt) + .setHeader("S.M.T").setKey("smtColumnKey");*/ // Iconos en columnas booleanas - planAnualGrid.addComponentColumn(planAnual -> getIcon(planAnual.isMonitor())).setHeader("Monitor"); + /*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"); @@ -291,7 +301,7 @@ public class PlanAnualView extends VerticalLayout { 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.addComponentColumn(planAnual -> getIcon(planAnual.isEscaner())).setHeader("Escáner");*/ // Cargar datos planAnualGrid.setItems(databaseService.getPlanAnual());