Browse Source

Correcion de configuracion para la nueva Base de Datos Oracle asi como correcion en algunos querys

master
mramirezg 3 months ago
parent
commit
6cbc9e644b
8 changed files with 88 additions and 75 deletions
  1. +0
    -7
      pom.xml
  2. BIN
      src/main/bundles/prod.bundle
  3. +0
    -1
      src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java
  4. +15
    -15
      src/main/java/mx/gob/jumapacelaya/models/Ticket.java
  5. +62
    -43
      src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java
  6. +6
    -3
      src/main/java/mx/gob/jumapacelaya/ui/ActDiariaView.java
  7. +0
    -1
      src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java
  8. +5
    -5
      src/main/resources/application.properties

+ 0
- 7
pom.xml View File

@ -87,13 +87,6 @@
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<!-- Connector de base de datos MySQL -->
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<!-- Conector a base de datos Oracle-->
<groupId>com.oracle.database.jdbc</groupId>


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


+ 0
- 1
src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java View File

@ -1,6 +1,5 @@
package mx.gob.jumapacelaya.api;
import com.mysql.cj.protocol.x.Notice;
import com.nimbusds.jose.shaded.gson.*;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.notification.Notification;


+ 15
- 15
src/main/java/mx/gob/jumapacelaya/models/Ticket.java View File

@ -132,21 +132,21 @@ public class Ticket {
return "Desconocido";
}
return switch (trackerId) {
case 1 -> "Acceso/Permiso/Bajas";
case 2 -> "Soporte de Software";
case 3 -> "Capacitacion de Software";
case 4 -> "Configuracion de Software";
case 5 -> "Desarrollo de Software";
case 6 -> "Digitalizacion GIS";
case 7 -> "Documento";
case 8 -> "Reporte";
case 9 -> "Mantenimiento Correctivo";
case 10 -> "Actividad";
case 11 -> "Entrega de Consumibles";
case 12 -> "Instalacion/Configuracion GIS";
case 13 -> "DDL";
case 14 -> "DCL";
case 15 -> "DML";
case 5 -> "Acceso/Permiso/Bajas";
case 6 -> "Soporte de Software";
case 7 -> "Capacitacion de Software";
case 8 -> "Configuracion de Software";
case 9 -> "Desarrollo de Software";
case 10 -> "Digitalizacion GIS";
case 11 -> "Documento";
case 12 -> "Reporte";
case 13 -> "Mantenimiento Correctivo";
case 14 -> "Actividad";
case 15 -> "Entrega de Consumibles";
case 16 -> "Instalacion/Configuracion GIS";
//case 17 -> "DDL";
//case 18 -> "DCL";
//case 19 -> "DML";
default -> "N/A";
};
}


+ 62
- 43
src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java View File

@ -1,11 +1,15 @@
package mx.gob.jumapacelaya.services;
import mx.gob.jumapacelaya.models.*;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.OraclePreparedStatement;
import oracle.sql.CLOB;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.sql.*;
import java.time.LocalDate;
import java.util.ArrayList;
@ -15,8 +19,8 @@ public class DatabaseService {
private Connection getMysqlConnection() throws SQLException {
String url = "jdbc:mysql://185.196.20.240:33006/Mantenimientos";
String user = "root";
String url = "jdbc:oracle:thin:@//svrapps:1521/XEPDB1";
String user = "MANTENIMIENTOS";
String pass = "mantenimientos";
return DriverManager.getConnection(url, user, pass);
@ -35,7 +39,7 @@ public class DatabaseService {
// Método para obtener los tipos de mantenimientos
public List<TiposMantenimiento> getTiposDeMantenimientos() {
List<TiposMantenimiento> tiposDeMantenimientos = new ArrayList<>();
String query = "SELECT tipomantid, nombre FROM TIPOMANT";
String query = "SELECT tipomantid, nombre FROM MANTENIMIENTOS.TIPOMANT";
try (Connection connection = getMysqlConnection();
Statement statement = connection.createStatement();
@ -81,7 +85,7 @@ public class DatabaseService {
public List<Usuario> getUsuarios() {
List<Usuario> usuarios = new ArrayList<>();
String query = "SELECT u.* \n" +
"FROM Mantenimientos.USUARIOS u;";
"FROM MANTENIMIENTOS.USUARIOS u";
try (Connection connection = getMysqlConnection();
Statement statement = connection.createStatement();
@ -91,7 +95,7 @@ public class DatabaseService {
Usuario usuario = new Usuario(
resultSet.getString("empleadoid"),
resultSet.getString("nombre"),
resultSet.getString("correo")
resultSet.getString("email")
);
usuarios.add(usuario);
}
@ -105,7 +109,7 @@ public class DatabaseService {
/* -------------- Metodo para obtener los departamentos ---------------- */
public List<DepartamentosModel> getDepartamentos() {
List<DepartamentosModel> departamentos = new ArrayList<>();
String query = "select DEPARTAMENTOID, DESCRIPCION from DEPARTAMENTOS";
String query = "select DEPARTAMENTOID, DESCRIPCION from MANTENIMIENTOS.DEPARTAMENTOS";
try (Connection connection = getMysqlConnection();
Statement statement = connection.createStatement();
@ -128,7 +132,7 @@ public class DatabaseService {
/* -------------- Metodo para obtener los tipos de hardware ---------------- */
public List<TiposHardware> getTiposHardware() {
List<TiposHardware> tiposHardware = new ArrayList<>();
String query = "select TIPOHARDWAREID, NOMBRETIPO from TIPOSHARDWARE";
String query = "select TIPOHARDWAREID, DESCRIPCION from MANTENIMIENTOS.TIPOSHARDWARE";
try (Connection connection = getMysqlConnection();
Statement statement = connection.createStatement();
@ -137,7 +141,7 @@ public class DatabaseService {
while (resultSet.next()) {
TiposHardware tiposHardwareModel = new TiposHardware(
resultSet.getString("tipohardwareid"),
resultSet.getString("nombretipo")
resultSet.getString("descripcion")
);
tiposHardware.add(tiposHardwareModel);
}
@ -152,12 +156,12 @@ public class DatabaseService {
/* ----------------Obtener el Plan Anual de Mantenimiento ---------------- */
public List<PlanAnual> getPlanAnual() {
List<PlanAnual> planAnualList = new ArrayList<>();
String query = "SELECT p.mttoprogramadoid, p.nomEquipo, p.departamento, " +
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 MTTOPROGRAMADOS p " +
"LEFT JOIN MANTENIMIENTOS m ON p.mttoprogramadoid = m.mttoprogramadoid";
"FROM MANTENIMIENTOS.PLANANUAL p " +
"LEFT JOIN MANTENIMIENTOS.MANTENIMIENTOS m ON p.plananualid = m.plananualid";
try (Connection connection = getMysqlConnection();
Statement statement = connection.createStatement();
@ -165,9 +169,9 @@ public class DatabaseService {
while (resultSet.next()) {
PlanAnual planAnual = new PlanAnual(
resultSet.getInt("mttoprogramadoid"),
resultSet.getInt("plananualid"),
resultSet.getString("nomEquipo"),
resultSet.getString("departamento"),
resultSet.getString("area"),
resultSet.getBoolean("monitor"),
resultSet.getBoolean("teclado"),
resultSet.getBoolean("mouse"),
@ -203,13 +207,12 @@ public class DatabaseService {
String formaMant, String equipoId, String userSignatureBase64,
String smtSignatureBase64, String gciaSignatureBase64, String planAnualId) {
String query = "INSERT INTO MANTENIMIENTOS (fecha, tipoMantId, departamentoId, empleadoId, formaMant, nombreequipo," +
" firmaUsuario, firmaSmt, firmaGcia, mttoprogramadoid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
String query = "INSERT INTO MANTENIMIENTOS.MANTENIMIENTOS (fecha, tipoMantId, departamentoId, empleadoId, formaMant, nombreequipo," +
" firmaUsuario, firmaSmt, firmaGcia, planAnualId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING MANTENIMIENTOID INTO ?";
String updateStatusQuery = "UPDATE MTTOPROGRAMADOS SET estado = 'REALIZADO' WHERE mttoprogramadoid = ?";
String updateStatusQuery = "UPDATE MANTENIMIENTOS.PLANANUAL SET estado = 'REALIZADO' WHERE planAnualId = ?";
int nuevoId = -1;
Connection connection = null;
try {
@ -219,29 +222,46 @@ public class DatabaseService {
throw new SQLException("No se pudo establecer la conexion con la base de datos.");
}
connection.setAutoCommit(false);
// Paso 1: primero inserta el mantenimiento
try (PreparedStatement preparedStatement = connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS)) {
try (OraclePreparedStatement preparedStatement = (OraclePreparedStatement) connection.prepareStatement(query)) {
preparedStatement.setDate(1, Date.valueOf(fecha));
preparedStatement.setString(2, tipoMantId);
preparedStatement.setLong(2, Long.parseLong(tipoMantId));
preparedStatement.setString(3, departamentoId);
preparedStatement.setString(4, empleadoId);
preparedStatement.setLong(4, Long.parseLong(empleadoId));
preparedStatement.setString(5, formaMant);
preparedStatement.setString(6, equipoId);
preparedStatement.setString(7, userSignatureBase64);
preparedStatement.setString(8, smtSignatureBase64);
preparedStatement.setString(9, gciaSignatureBase64);
preparedStatement.setString(10, planAnualId);
int rowsAffected = preparedStatement.executeUpdate();
if (rowsAffected > 0) {
try (ResultSet generatedKeys = preparedStatement.getGeneratedKeys()) {
if (generatedKeys.next()) {
nuevoId = generatedKeys.getInt(1);
}
}
if (userSignatureBase64 != null) {
preparedStatement.setString(7, userSignatureBase64);
} else {
preparedStatement.setNull(7, Types.VARCHAR);
}
if (smtSignatureBase64 != null) {
preparedStatement.setString(8, smtSignatureBase64);
} else {
preparedStatement.setNull(8, Types.VARCHAR);
}
if (gciaSignatureBase64 != null) {
preparedStatement.setString(9, gciaSignatureBase64);
} else {
preparedStatement.setNull(9, Types.VARCHAR);
}
preparedStatement.setLong(10, Long.parseLong(planAnualId));
preparedStatement.registerReturnParameter(11, Types.NUMERIC);
preparedStatement.executeUpdate();
ResultSet rs = preparedStatement.getReturnResultSet();
if (rs != null && rs.next()) {
nuevoId = rs.getInt(1);
}
}
@ -258,12 +278,11 @@ public class DatabaseService {
} catch (SQLException e) {
System.err.println("Error al insertar mantenimiento: " + e.getMessage());
e.printStackTrace();
// En caso de error, se hace rollback
if (connection != null) {
try {
if (connection != null) {
connection.rollback();
}
connection.rollback();
} catch (SQLException rollbackEx) {
System.err.println("Error al hacer rollback: " + rollbackEx.getMessage());
}
@ -286,13 +305,13 @@ 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 HARDWAREDET (tipoHardwareId, numSerie, modelo, placa, mantenimientoId) VALUES (?, ?, ?, ?, ?)";
String query = "INSERT INTO MANTENIMIENTOS.HARDWAREDET (tipoHardwareId, numSerie, modelo, placa, mantenimientoId) VALUES (?, ?, ?, ?, ?)";
boolean isInserted = false;
try (Connection connection = getMysqlConnection();
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setString(1, tipoHardwareId);
preparedStatement.setInt(1, Integer.parseInt(tipoHardwareId));
preparedStatement.setString(2, numSerie);
preparedStatement.setString(3, modelo);
preparedStatement.setString(4, placa);
@ -310,7 +329,7 @@ public class DatabaseService {
public int getUltimoMantenimientoId() {
int ultimoId = -1;
try (Connection connection = getMysqlConnection()) {
String query = "SELECT MAX(mantenimientoid) FROM MANTENIMIENTOS";
String query = "SELECT MAX(mantenimientoid) FROM MANTENIMIENTOS.MANTENIMIENTOS";
try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
@ -326,7 +345,7 @@ public class DatabaseService {
// INSERTAR EN LA TABLA: ACTUALIZACIONESSEG
public boolean insertActualizacionSeg(String descripcion, String otras, int mantenimientoId) {
String query = "INSERT INTO ACTUALIZACIONESSEG (descripcion, otrasactualizaciones, mantenimientoid) VALUES (?, ?, ?)";
String query = "INSERT INTO MANTENIMIENTOS.ACTUALIZACIONESSEG (descripcion, otrasactualizaciones, mantenimientoid) VALUES (?, ?, ?)";
try (Connection connection = getMysqlConnection();
PreparedStatement preparedStatement = connection.prepareStatement(query)) {
@ -345,7 +364,7 @@ public class DatabaseService {
public void insertarDesdeExcel(InputStream inputStream) {
String query = "INSERT INTO MTTOPROGRAMADOS (NOMEQUIPO, DEPARTAMENTO, MONITOR, TECLADO, MOUSE, " +
String query = "INSERT INTO MANTENIMIENTOS.PLANANUAL (NOMEQUIPO, AREA, MONITOR, TECLADO, MOUSE, " +
"REGULADOR, CPU, IMPRESORA, MINIPRINT, LAPTOP, ESCANER, FECHAPROG, TECNICOSMT, ESTADO) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
@ -361,7 +380,7 @@ public class DatabaseService {
try {
// Leer cada celda de la fila según el índice correcto
String nomequipo = getStringCellValue(row.getCell(0)); // Columna 1
String departamento = getStringCellValue(row.getCell(1)); // Columna 2
String area = getStringCellValue(row.getCell(1)); // Columna 2
boolean monitor = getBooleanCellValue(row.getCell(2)); // Columna 3
boolean teclado = getBooleanCellValue(row.getCell(3)); // Columna 4
boolean mouse = getBooleanCellValue(row.getCell(4)); // Columna 5
@ -381,7 +400,7 @@ public class DatabaseService {
// Insertar datos en la base de datos
try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setString(1, nomequipo);
preparedStatement.setString(2, departamento);
preparedStatement.setString(2, area);
preparedStatement.setBoolean(3, monitor);
preparedStatement.setBoolean(4, teclado);
preparedStatement.setBoolean(5, mouse);
@ -409,7 +428,7 @@ public class DatabaseService {
}
}
System.out.println("Datos insertados desde Excel con éxito en MTTOPROGRAMADOS.");
System.out.println("Datos insertados desde Excel con éxito en PLANANUAL.");
} catch (IOException e) {
System.err.println("Error al leer el archivo Excel: " + e.getMessage());
} catch (SQLException e) {


+ 6
- 3
src/main/java/mx/gob/jumapacelaya/ui/ActDiariaView.java View File

@ -118,7 +118,7 @@ public class ActDiariaView extends VerticalLayout {
try {
List<Ticket> tickets = redmineClient.getTickets(userService.getRedmineUser(), true);
List<Ticket> filteredTickets = tickets.stream()
.filter(ticket -> ticket.getTrackerId() == 10 || ticket.getTrackerId() == 9)
.filter(ticket -> ticket.getTrackerId() == 13 || ticket.getTrackerId() == 14)
.toList();
grid.setItems(filteredTickets);
} catch (Exception e) {
@ -149,6 +149,9 @@ public class ActDiariaView extends VerticalLayout {
case "solicitado":
span.getElement().getStyle().set("color","purple");
break;
case "qa":
span.getElement().getStyle().set("color","#C21DF2");
break;
default:
span.getElement().getStyle().set("color","green");
break;
@ -165,9 +168,9 @@ public class ActDiariaView extends VerticalLayout {
button.addClickListener(e -> {
RedmineUser currentUser = userService.getRedmineUser();
if (ticket.getTrackerId() == 9) {
if (ticket.getTrackerId() == 13) {
UI.getCurrent().navigate("mantenimiento");
} else if (ticket.getTrackerId() == 10) {
} else if (ticket.getTrackerId() == 14) {
cerrarTicket(ticket, currentUser);
} else {
Notification.show("El ticket no es de tipo Mantenimiento o Actividad.");


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

@ -1,6 +1,5 @@
package mx.gob.jumapacelaya.ui;
import com.mysql.cj.log.Log;
import com.vaadin.flow.component.Component;
import com.vaadin.flow.component.UI;
import com.vaadin.flow.component.button.ButtonVariant;


+ 5
- 5
src/main/resources/application.properties View File

@ -18,7 +18,7 @@ spring.ldap.password=Dr3na$134%4guA
###################PRODUCTIVO####################
redmine.url=https://proyman.jumapacelaya.gob.mx/
redmine.api_key=98158784609a110b3f9e837ac961d73b9ec58271
redmine.api_key=69be2a5df9bacce02722f566fdf0731d728a1b86
######################PRUEBAS####################
@ -29,10 +29,10 @@ redmine.api_key=98158784609a110b3f9e837ac961d73b9ec58271
#Conexion a la base de datos principal (escritura) MySQL
spring.datasource.url=jdbc:mysql://185.196.20.240:33006/Mantenimientos
spring.datasource.username=root
spring.datasource.password=mantenimientos
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#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


Loading…
Cancel
Save