diff --git a/src/main/bundles/prod.bundle b/src/main/bundles/prod.bundle index 5736c40..cf82500 100644 Binary files a/src/main/bundles/prod.bundle and b/src/main/bundles/prod.bundle differ diff --git a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java index 4fb739c..23d26a9 100644 --- a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java +++ b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java @@ -6,6 +6,8 @@ import oracle.jdbc.OraclePreparedStatement; import oracle.sql.CLOB; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; import java.io.IOException; import java.io.InputStream; @@ -16,17 +18,19 @@ import java.time.LocalDate; import java.util.ArrayList; import java.util.List; +@Service public class DatabaseService { - private Connection getMysqlConnection() throws SQLException { - //String url = "jdbc:oracle:thin:@//oracle-xe:1521/XEPDB1"; - String url = "jdbc:oracle:thin:@//svrapps:1521/XEPDB1"; - String user = "MANTENIMIENTOS"; - String pass = "mantenimientos"; - - return DriverManager.getConnection(url, user, pass); + @Value("${db.url}") + private String dbUrl; + @Value("${db.user}") + private String dbUser; + @Value("${db.pass}") + private String dbPass; + private Connection getMysqlConnection() throws SQLException { + return DriverManager.getConnection(dbUrl, dbUser, dbPass); } /*private Connection getOracleConnection() throws SQLException { @@ -41,7 +45,7 @@ public class DatabaseService { // Método para obtener los tipos de mantenimientos public List getTiposDeMantenimientos() { List tiposDeMantenimientos = new ArrayList<>(); - String query = "SELECT tipomantid, nombre FROM MANTENIMIENTOS.TIPOMANT"; + String query = "SELECT tipomantid, nombre FROM TIPOMANT"; try (Connection connection = getMysqlConnection(); Statement statement = connection.createStatement(); @@ -87,7 +91,7 @@ public class DatabaseService { public List getUsuarios() { List usuarios = new ArrayList<>(); String query = "SELECT u.* \n" + - "FROM MANTENIMIENTOS.USUARIOS u"; + "FROM USUARIOS u"; try (Connection connection = getMysqlConnection(); Statement statement = connection.createStatement(); @@ -111,7 +115,7 @@ public class DatabaseService { /* -------------- Metodo para obtener los departamentos ---------------- */ public List getDepartamentos() { List departamentos = new ArrayList<>(); - String query = "select DEPARTAMENTOID, DESCRIPCION from MANTENIMIENTOS.DEPARTAMENTOS"; + String query = "select DEPARTAMENTOID, DESCRIPCION from DEPARTAMENTOS"; try (Connection connection = getMysqlConnection(); Statement statement = connection.createStatement(); @@ -134,7 +138,7 @@ public class DatabaseService { /* -------------- Metodo para obtener los tipos de hardware ---------------- */ public List getTiposHardware() { List tiposHardware = new ArrayList<>(); - String query = "select TIPOHARDWAREID, DESCRIPCION from MANTENIMIENTOS.TIPOSHARDWARE"; + String query = "select TIPOHARDWAREID, DESCRIPCION from TIPOSHARDWARE"; try (Connection connection = getMysqlConnection(); Statement statement = connection.createStatement(); @@ -163,8 +167,8 @@ public class DatabaseService { " 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" + // + "FROM PLANANUAL p\r\n" + // + "LEFT JOIN MANTENIMIENTOS m ON p.plananualid = m.plananualid\r\n" + // "ORDER BY p.plananualid ASC"; try (Connection connection = getMysqlConnection(); @@ -207,12 +211,12 @@ public class DatabaseService { "\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" + // + "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 = ?"; try (Connection connection = getMysqlConnection(); @@ -250,8 +254,8 @@ public class DatabaseService { public List getHardwaredetallePorMantId(int mantenimientoId) { List 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" + // + "FROM HARDWAREDET h\r\n" + // + "INNER JOIN TIPOSHARDWARE t ON h.TIPOHARDWAREID = t.TIPOHARDWAREID \r\n" + // "WHERE h.MANTENIMIENTOID = ?"; try (Connection conn = getMysqlConnection(); @@ -320,10 +324,10 @@ public class DatabaseService { 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 (fecha, tipoMantId, departamentoId, empleadoId, formaMant, nombreequipo," + " firmaUsuario, firmaSmt, firmaGcia, planAnualId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING MANTENIMIENTOID INTO ?"; - String updateStatusQuery = "UPDATE MANTENIMIENTOS.PLANANUAL SET estado = 'REALIZADO' WHERE planAnualId = ?"; + String updateStatusQuery = "UPDATE PLANANUAL SET estado = 'REALIZADO' WHERE planAnualId = ?"; int nuevoId = -1; Connection connection = null; @@ -418,7 +422,7 @@ public class DatabaseService { // INSERTAR EN LA TABLA: HARDWAREDET public boolean insertarHardware(String tipoHardwareId, String numSerie, String modelo, String placa, int mantenimientoId) { - String query = "INSERT INTO MANTENIMIENTOS.HARDWAREDET (tipoHardwareId, numSerie, modelo, placa, mantenimientoId) VALUES (?, ?, ?, ?, ?)"; + String query = "INSERT INTO HARDWAREDET (tipoHardwareId, numSerie, modelo, placa, mantenimientoId) VALUES (?, ?, ?, ?, ?)"; boolean isInserted = false; try (Connection connection = getMysqlConnection(); @@ -442,7 +446,7 @@ public class DatabaseService { public int getUltimoMantenimientoId() { int ultimoId = -1; try (Connection connection = getMysqlConnection()) { - String query = "SELECT MAX(mantenimientoid) FROM MANTENIMIENTOS.MANTENIMIENTOS"; + String query = "SELECT MAX(mantenimientoid) FROM MANTENIMIENTOS"; try (PreparedStatement preparedStatement = connection.prepareStatement(query)) { ResultSet resultSet = preparedStatement.executeQuery(); if (resultSet.next()) { @@ -458,7 +462,7 @@ public class DatabaseService { // INSERTAR EN LA TABLA: ACTUALIZACIONESSEG public boolean insertActualizacionSeg(String descripcion, String otras, int mantenimientoId) { - String query = "INSERT INTO MANTENIMIENTOS.ACTUALIZACIONESSEG (descripcion, otrasactualizaciones, mantenimientoid) VALUES (?, ?, ?)"; + String query = "INSERT INTO ACTUALIZACIONESSEG (descripcion, otrasactualizaciones, mantenimientoid) VALUES (?, ?, ?)"; try (Connection connection = getMysqlConnection(); PreparedStatement preparedStatement = connection.prepareStatement(query)) { @@ -477,7 +481,7 @@ public class DatabaseService { public void insertarDesdeExcel(InputStream inputStream) { - String query = "INSERT INTO MANTENIMIENTOS.PLANANUAL (NOMEQUIPO, AREA, MONITOR, TECLADO, MOUSE, " + + String query = "INSERT INTO PLANANUAL (NOMEQUIPO, AREA, MONITOR, TECLADO, MOUSE, " + "REGULADOR, CPU, IMPRESORA, MINIPRINT, LAPTOP, ESCANER, FECHAPROG, TECNICOSMT, ESTADO) " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; @@ -607,7 +611,7 @@ public class DatabaseService { /* ----------------Actualizar los detalles del del mantenimiento por ID ---------------- */ public boolean actualizarPlanAnual(int planAnualId, String nombreEquipo, LocalDate fechaProg) { - String sql = "UPDATE MANTENIMIENTOS.PLANANUAL SET NOMEQUIPO=?, FECHAPROG=? WHERE PLANANUALID=?"; + String sql = "UPDATE PLANANUAL SET NOMEQUIPO=?, FECHAPROG=? WHERE PLANANUALID=?"; try (Connection conn = getMysqlConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setString(1, nombreEquipo); @@ -621,7 +625,7 @@ public class DatabaseService { } public boolean actualizarMantenimiento(int mantenimientoId, int tipoId, String departamentoId, int empleadoId, LocalDate fechaRealizado, String nombreEquipo) { - String sql = "UPDATE MANTENIMIENTOS.MANTENIMIENTOS SET TIPOMANTID=?, DEPARTAMENTOID=?, EMPLEADOID=?, FECHA=?, NOMBREEQUIPO=? WHERE MANTENIMIENTOID=?"; + String sql = "UPDATE MANTENIMIENTOS SET TIPOMANTID=?, DEPARTAMENTOID=?, EMPLEADOID=?, FECHA=?, NOMBREEQUIPO=? WHERE MANTENIMIENTOID=?"; try (Connection conn = getMysqlConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setInt(1, tipoId); // tipoId es int @@ -640,7 +644,7 @@ public class DatabaseService { /* ----------------Actualizar los detalles del hardaware por ID ---------------- */ public boolean actualizarHardwareDetalle(HardwareDetalle detalle) { - String sql = "UPDATE MANTENIMIENTOS.HARDWAREDET SET MODELO=?, NUMSERIE=?, PLACA=? WHERE HARDWAREDETID=?"; + String sql = "UPDATE HARDWAREDET SET MODELO=?, NUMSERIE=?, PLACA=? WHERE HARDWAREDETID=?"; try (Connection conn = getMysqlConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setString(1, detalle.getModelo()); @@ -657,7 +661,7 @@ public class DatabaseService { /* ---------------- Insertar en bitacora ---------------- */ public boolean insertarBitacora(int mantenimientoid, String usuarioid, LocalDate fechora, String motivo) { - String query = "INSERT INTO MANTENIMIENTOS.BITACORACTUALIZACIONES (MANTENIMIENTOID, USUARIOID, FECHORA, MOTIVO) VALUES (?, ?, ?, ?)"; + String query = "INSERT INTO BITACORACTUALIZACIONES (MANTENIMIENTOID, USUARIOID, FECHORA, MOTIVO) VALUES (?, ?, ?, ?)"; try (Connection conn = getMysqlConnection(); PreparedStatement stmt = conn.prepareStatement(query)) { stmt.setInt(1, mantenimientoid); diff --git a/src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java b/src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java index 9a8b33f..0091bdc 100644 --- a/src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java +++ b/src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java @@ -82,16 +82,15 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser private Image firmaSmtImg; private Image firmaGciaImg; - // Agrega estos atributos: private VerticalLayout userSignLayout; private VerticalLayout smtSignLayout; private VerticalLayout gciaSignLayout; private final SecurityService securityService; + private final DatabaseService service; - DatabaseService service = new DatabaseService(); - - public DetallesMantView(SecurityService securityService) { + public DetallesMantView(SecurityService securityService, DatabaseService service) { + this.service = service; this.securityService = securityService; setPadding(true); @@ -313,6 +312,13 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser btnCancelar.setVisible(false); gridHardware.setEditOnClick(false); gridHardware.getEditor().cancel(); + + if (firmaUsuarioImg != null && userSignPad.getParent().isPresent()) { + userSignLayout.replace(userSignPad, firmaUsuarioImg); + } + if (firmaSmtImg != null && smtSignPad.getParent().isPresent()) { + smtSignLayout.replace(smtSignPad, firmaSmtImg); + } }); HorizontalLayout dialogButtons = new HorizontalLayout(btnConfirmar, btnCancelarDialog); diff --git a/src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java b/src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java index 600570d..2197534 100644 --- a/src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java +++ b/src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java @@ -78,8 +78,8 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse Span userSignSpan = new Span("Nombre Usuario"); - public MantenimientoView(UserService userService, SecurityService securityService, EmailService emailService) { - this.databaseService = new DatabaseService(); + public MantenimientoView(UserService userService, SecurityService securityService, EmailService emailService, DatabaseService databaseService) { + this.databaseService = databaseService; this.controlsLayout = new VerticalLayout(); this.actualizacionesLayout = new VerticalLayout(); this.etiquetaLayout = new VerticalLayout(); diff --git a/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java b/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java index cee1931..e17870a 100644 --- a/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java +++ b/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java @@ -30,6 +30,7 @@ import jakarta.annotation.security.PermitAll; import mx.gob.jumapacelaya.models.PlanAnual; import mx.gob.jumapacelaya.services.DatabaseService; import org.apache.poi.ss.usermodel.*; +import org.springframework.core.env.Environment; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -44,6 +45,8 @@ import java.util.Arrays; import java.util.List; import java.util.function.Consumer; +import javax.xml.crypto.Data; + import static java.util.regex.Pattern.matches; @PermitAll @@ -52,20 +55,29 @@ import static java.util.regex.Pattern.matches; @CssImport("./themes/sistema-mantenimiento/styles.css") public class PlanAnualView extends VerticalLayout { + private final Environment env; + HorizontalLayout header = new HorizontalLayout(); H4 titulo = new H4(); H5 titulo1 = new H5(); - DatabaseService databaseService = new DatabaseService(); Button btnInsertar; private byte[] fileContent; VerticalLayout gridLayout = new VerticalLayout(); HorizontalLayout uploadLayout = new HorizontalLayout(); HorizontalLayout checkLayout = new HorizontalLayout(); + private final DatabaseService databaseService; - public PlanAnualView() { + public PlanAnualView(DatabaseService databaseService, Environment env) { + this.databaseService = databaseService; + this.env = env; setupHeader(); Grid planAnualGrid = setupGrid(); + // Notificación de conexión activa + String perfil = String.join(",", env.getActiveProfiles()); + String url = env.getProperty("db.url"); + Notification.show("Conectado a: " + perfil + "\nURL DB: " + url, 5000, Notification.Position.BOTTOM_START); + // Obtenemos la lista de items y establecemos un GridListDataView para gestionar // los datos List planAnualItems = databaseService.getPlanAnual(); diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties new file mode 100644 index 0000000..9520597 --- /dev/null +++ b/src/main/resources/application-dev.properties @@ -0,0 +1,4 @@ +#Configuracion de la base de datos +db.url=jdbc:oracle:thin:@//localhost:1521/XEPDB1 +db.user=MANTENIMIENTOS_PRB +db.pass=mantenimientos \ No newline at end of file diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties new file mode 100644 index 0000000..b2ce21c --- /dev/null +++ b/src/main/resources/application-prod.properties @@ -0,0 +1,5 @@ +#Configuracion de la base de datos +db.url=jdbc:oracle:thin:@//oracle-xe:1521/XEPDB1 +#db.url=jdbc:oracle:thin:@//SVRAPPS:1521/XEPDB1 +db.user=MANTENIMIENTOS +db.pass=mantenimientos \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 166944f..f4b9471 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,5 +1,6 @@ server.port=${PORT:8080} logging.level.org.atmosphere = warn +spring.profiles.active=dev # Launch the default browser when starting the application in development mode vaadin.launch-browser=true @@ -21,30 +22,6 @@ redmine.url=https://proyman.jumapacelaya.gob.mx/ redmine.api_key=69be2a5df9bacce02722f566fdf0731d728a1b86 -######################PRUEBAS#################### -#redmine.url=http://localhost:10083/ -#redmine.api_key=bada7949fd4d879cbd98eb645ae4b88603bf77d0 - - - - -#Conexion a la base de datos principal (escritura) MySQL -#spring.datasource.url=jdbc:mysql://185.196.20.240:33006/NVMantenimientos -#spring.datasource.username=root -#spring.datasource.password=mantenimientos -#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver - - - - -#Conexion a la base de datos secundaria (lectura) Oracle -spring.datasource.secondary.url=jdbc:oracle:thin:@//svradminfinan:1521/admfinpdb.JUMAPACELAYA.GOB.MX -spring.datasource.secondary.username=Finanzas -spring.datasource.secondary.password=finanzas -spring.datasource.secondary.driver-class-name=oracle.jdbc.OracleDriver - - - #Conexion al servidor de correo electronico spring.mail.host=correo.jumapacelaya.gob.mx