3 Commits

14 changed files with 207 additions and 66 deletions
Split View
  1. +20
    -0
      pom.xml
  2. BIN
      src/main/bundles/prod.bundle
  3. +5
    -1
      src/main/java/mx/gob/jumapacelaya/models/DetalleMantenimientoModel.java
  4. +21
    -1
      src/main/java/mx/gob/jumapacelaya/models/PlanAnual.java
  5. +47
    -32
      src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java
  6. +41
    -0
      src/main/java/mx/gob/jumapacelaya/services/ReportService.java
  7. +51
    -20
      src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java
  8. +2
    -2
      src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java
  9. +16
    -6
      src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java
  10. BIN
      src/main/resources/META-INF/resources/images/FirmaGerenteTI.png
  11. BIN
      src/main/resources/META-INF/resources/images/firmaGcia.png
  12. BIN
      src/main/resources/META-INF/resources/reportes/mantenimientoReport.jasper
  13. +2
    -2
      src/main/resources/application-dev.properties
  14. +2
    -2
      src/main/resources/application-prod.properties

+ 20
- 0
pom.xml View File

@ -93,6 +93,12 @@
<artifactId>ojdbc8</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<!-- Dependencia para poder enviar correos -->
<groupId>org.springframework.boot</groupId>
@ -159,6 +165,20 @@
<artifactId>commons-io</artifactId>
<version>2.16.1</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>7.0.3</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-pdf</artifactId>
<version>7.0.3</version>
</dependency>
</dependencies>
<build>


BIN
src/main/bundles/prod.bundle View File


+ 5
- 1
src/main/java/mx/gob/jumapacelaya/models/DetalleMantenimientoModel.java View File

@ -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; }
}

+ 21
- 1
src/main/java/mx/gob/jumapacelaya/models/PlanAnual.java View File

@ -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;
}
}

+ 47
- 32
src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java View File

@ -162,14 +162,17 @@ 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, \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")
);
}
}
@ -325,7 +342,7 @@ public class DatabaseService {
String smtSignatureBase64, String planAnualId) {
String query = "INSERT INTO MANTENIMIENTOS (fecha, tipoMantId, departamentoId, empleadoId, formaMant, nombreequipo," +
" firmaUsuario, firmaSmt, planAnualId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING MANTENIMIENTOID INTO ?";
" firmaUsuario, firmaSmt, planAnualId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
String updateStatusQuery = "UPDATE PLANANUAL SET estado = 'REALIZADO' WHERE planAnualId = ?";
@ -343,7 +360,7 @@ public class DatabaseService {
connection.setAutoCommit(false);
// Paso 1: primero inserta el mantenimiento
try (OraclePreparedStatement preparedStatement = (OraclePreparedStatement) connection.prepareStatement(query)) {
try (PreparedStatement preparedStatement = connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS)) {
preparedStatement.setDate(1, Date.valueOf(fecha));
preparedStatement.setLong(2, Long.parseLong(tipoMantId));
@ -366,13 +383,12 @@ public class DatabaseService {
preparedStatement.setLong(9, Long.parseLong(planAnualId));
preparedStatement.registerReturnParameter(10, Types.NUMERIC);
preparedStatement.executeUpdate();
ResultSet rs = preparedStatement.getReturnResultSet();
if (rs != null && rs.next()) {
nuevoId = rs.getInt(1);
try (ResultSet rs = preparedStatement.getGeneratedKeys()) {
if (rs.next()) {
nuevoId = rs.getInt(1);
}
}
}
@ -604,13 +620,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();


+ 41
- 0
src/main/java/mx/gob/jumapacelaya/services/ReportService.java View File

@ -0,0 +1,41 @@
package mx.gob.jumapacelaya.services;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Map;
@Service
public class ReportService {
@Value("${db.url}")
private String dbUrl;
@Value("${db.user}")
private String dbUser;
@Value("${db.pass}")
private String dbPass;
public byte[] generarReporte(String nombreReporte, Map<String, Object> parametros) throws Exception {
InputStream logo = getClass().getResourceAsStream("/META-INF/resources/images/LOGO_24'27.png");
parametros.put("logo", logo);
InputStream firmaGcia = getClass().getResourceAsStream("/META-INF/resources/images/FirmaGerenteTI.png");
parametros.put("firmaGcia", firmaGcia);
InputStream jasperStream = getClass().getResourceAsStream("/META-INF/resources/reportes/" + nombreReporte + ".jasper");
if (jasperStream == null) {
throw new IllegalArgumentException("No se encontro el archivo del reporte: " + nombreReporte);
}
try (Connection conn = DriverManager.getConnection(dbUrl, dbUser, dbPass)) {
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperStream, parametros, conn);
return JasperExportManager.exportReportToPdf(jasperPrint);
}
}
}

+ 51
- 20
src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java View File

@ -1,20 +1,23 @@
package mx.gob.jumapacelaya.ui;
import java.io.ByteArrayInputStream;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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;
@ -27,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;
@ -44,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)
@ -63,7 +63,8 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
private TextField txtEquipo;
private ComboBox<TiposMantenimiento> cbTipo;
private TextField txtFecha;
private TextField txtFechaRealizacion;
private TextField txtFechaProgramada;
private TextField txtSituacion;
private ComboBox<Usuario> cbUsuario;
private ComboBox<DepartamentosModel> cbDepartamento;
private GridPro<HardwareDetalle> gridHardware;
@ -90,10 +91,12 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
private final SecurityService securityService;
private final DatabaseService service;
private final ReportService reportService;
public DetallesMantView(SecurityService securityService, DatabaseService service) {
public DetallesMantView(SecurityService securityService, DatabaseService service, ReportService reportService) {
this.service = service;
this.securityService = securityService;
this.reportService = reportService;
setPadding(true);
mainLayout = new VerticalLayout();
@ -135,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();
@ -216,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);
@ -246,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);
@ -268,6 +271,34 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
});
btnImprimirRepo.addClickListener(e -> {
try {
// Prepara los parámetros para el reporte
Map<String, Object> parametros = new HashMap<>();
parametros.put("PLAN_ID", planAnualIdActual);
// Genera el PDF
byte[] pdf = reportService.generarReporte("mantenimientoReport", parametros);
// Se crea el recurso para descarga
StreamResource resource = new StreamResource("reporte.pdf", () -> new ByteArrayInputStream(pdf));
Anchor downloadLink = new Anchor(resource, "Descargar Reporte");
downloadLink.getElement().setAttribute("download", true);
downloadLink.setId("descargar-reporte-link");
add(downloadLink);
getUI().ifPresent(ui ->
ui.getPage().executeJs("document.getElementById('descargar-reporte-link').click();")
);
} catch (Exception ex) {
Notification.show("Error al generar el reporte: " + ex.getMessage(), 4000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR);
ex.printStackTrace();
}
});
// Se dispara el dialogo de confirmacion
btnGuardar.addClickListener(e -> confirmDialog.open());
@ -313,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);
@ -355,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;
@ -377,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)
@ -419,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);
@ -508,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()))
@ -554,7 +585,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
smtSignLayout.replace(smtSignPad, firmaSmtImg);
}
Image firmaGcia = new Image("images/firmaGcia.png", "Firma de la Gcia. de T.I");
Image firmaGcia = new Image("images/FirmaGerenteTI.png", "Firma de la Gcia. de T.I");
firmaGcia.setHeight("200px");
firmaGcia.setWidthFull();


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

@ -460,10 +460,10 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
smtSignLayout.add(smtSignPad, smtSignSpan, tituloSMT);
VerticalLayout gcialSignLayout = new VerticalLayout();
Image firmaGcia = new Image("images/firmaGcia.png", "Firma Gerente de Sistemas");
Image firmaGcia = new Image("images/FirmaGerenteTI.png", "Firma Gerente de Sistemas");
firmaGcia.setHeight("200px");
firmaGcia.setWidthFull();
Span gciatiSignSpan = new Span("Lic. Juan Pablo Torres Alvárez");
Span gciatiSignSpan = new Span("Ing. Javier Patiño Martinez");
Span tituloGerente = new Span("Gerente de T.I");
gcialSignLayout.setSizeFull();
gcialSignLayout.setSpacing(false);


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

@ -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, String>) PlanAnual::getEstado)
.setHeader("Estado").setAutoWidth(true);
planAnualGrid.addColumn((ValueProvider<PlanAnual, String>) PlanAnual::getSmt)
.setHeader("S.M.T").setKey("smtColumnKey");
planAnualGrid.addColumn((ValueProvider<PlanAnual, String>) PlanAnual::getSituacion)
.setHeader("Situación").setAutoWidth(true);
/*planAnualGrid.addColumn((ValueProvider<PlanAnual, String>) 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());


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

Before After
Width: 400  |  Height: 200  |  Size: 14 KiB

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

Before After
Width: 451  |  Height: 301  |  Size: 7.0 KiB

BIN
src/main/resources/META-INF/resources/reportes/mantenimientoReport.jasper View File


+ 2
- 2
src/main/resources/application-dev.properties View File

@ -1,4 +1,4 @@
#Configuracion de la base de datos
db.url=jdbc:oracle:thin:@//localhost:1521/XEPDB1
db.user=MANTENIMIENTOS_PRB
db.url=jdbc:mysql://localhost:3307/mantenimientosdb
db.user=mantenimientos
db.pass=mantenimientos

+ 2
- 2
src/main/resources/application-prod.properties View File

@ -1,5 +1,5 @@
#Configuracion de la base de datos
db.url=jdbc:oracle:thin:@//oracle-xe:1521/XEPDB1
db.url=jdbc:mysql://db:3306/mantenimientosdb
#db.url=jdbc:oracle:thin:@//SVRAPPS:1521/XEPDB1
db.user=MANTENIMIENTOS
db.user=mantenimientos
db.pass=mantenimientos

Loading…
Cancel
Save