Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package prodandes; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.LinkedHashMap; import java.util.List; import javax.ejb.BeforeCompletion; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.Session; import javax.jms.TextMessage; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.omg.PortableInterceptor.SYSTEM_EXCEPTION; /** * * @author Jonathan */ @Path("/Servicios") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) /** * * @author jf.molano1587 */ public class Prodandes implements MessageListener { public Connection con; private ConnectionFactory cf; private javax.jms.Connection c; private Session s; private Destination d; private MessageConsumer mc; public static ArrayList<String> buzon; // ------------------------------------------------- // Requerimientos Funcionales // ------------------------------------------------- @POST @Path("/registrarPedido") public JSONObject registrarPedido(JSONObject jO) throws Exception { try { JSONObject jRespuesta = new JSONObject(); String resp = ""; abrirConexion(); String lock = "lock table " + "pedido_producto" + " in exclusive mode"; Statement stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = format.parse(jO.get("fechaEsperada").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String sFecha = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); System.out.println("Fecha: " + sFecha); String nombreProducto = jO.get("nombre").toString(); Statement stx = con.createStatement(); ResultSet rsx = stx.executeQuery("select * from PRODUCTO where nombre='" + nombreProducto + "'"); int cantidad = (int) jO.get("cantidad"); String sId_cliente = jO.get("id_cliente").toString(); Calendar c = new GregorianCalendar(); String fechaSolicitud = c.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (c.get(GregorianCalendar.MONTH) + 1) + "-" + c.get(GregorianCalendar.YEAR); String fechaEntrega = c.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (c.get(GregorianCalendar.MONTH) + 2) + "-" + c.get(GregorianCalendar.YEAR); if (rsx.next()) { int id_cliente = Integer.parseInt(sId_cliente); System.out.println("FEcha actual " + fechaSolicitud); String sql = "select max (id) as MAXIMO from PEDIDO_PRODUCTO"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); int id_pedido = 1; if (rs.next()) { id_pedido = rs.getInt("MAXIMO") + 1; jRespuesta.put("id_pedido", id_pedido); System.out.println("JSON respuesta " + jRespuesta.toString()); //Crear pedido nuevo sql = "INSERT INTO PEDIDO_PRODUCTO (id,FECHA_ESPERADA_ENTREGA,Estado,cantidad_producto" + ",id_cliente,fecha_solicitud) VALUES (" + id_pedido + ",TO_DATE" + "('" + sFecha + "','DD-MM-YYYY'),'Espera'," + cantidad + "," + id_cliente + " ,TO_DATE('" + fechaSolicitud + "','DD-MM-YYYY'))"; System.out.println("----------------------Query-----------------------"); System.out.println(sql); Statement st2 = con.createStatement(); st2.executeUpdate(sql); escribirEnLog(sql); st2.close(); } st.close(); int productosReservados = reservarProductoBodega(nombreProducto, cantidad, id_pedido); System.out.println("Productos reservados " + productosReservados); if (productosReservados == cantidad) { //Modificar fecha entrega Statement st3 = con.createStatement(); sql = "update PEDIDO_PRODUCTO set FECHA_ENTREGA=TO_DATE('" + sFecha + "','DD-MM-YYYY')," + "ESTADO='En Bodega'" + "where id=" + id_pedido; System.out.println("------------------QUERY----------------------------"); System.out.println(sql); st3.executeUpdate(sql); escribirEnLog(sql); st3.close(); resp = "En Bodega"; } else { // Verificar que la cantidad disminuye dependiendo de cuantos productos ya estn en bodega cantidad = cantidad - productosReservados; //Verificar que haya estacin de produccion disponible sql = "select * from ESTACION where ESTADO='Disponible' AND CAPACIDAD > " + cantidad; System.out.println("------------------QUERY----------------------------"); System.out.println(sql); Statement st6 = con.createStatement(); rs = st6.executeQuery(sql); boolean hayEstaciones = false; if (rs.next()) { int codigo = rs.getInt("CODIGO"); sql = "update ESTACION set ESTADO='Reservado',ID_PEDIDO=" + id_pedido + "WHERE CODIGO=" + codigo; Statement st7 = con.createStatement(); st7.executeUpdate(sql); hayEstaciones = true; st7.close(); } st6.close(); if (hayEstaciones) { //Reservar recursos(materias primas) o pedir suministros int numProductosPotencial = Integer.MAX_VALUE; System.out.println("Nombre producto: " + nombreProducto); //Averiguar Componentes en bodega sql = "select * from COMPONENTES_PRODUCTO WHERE id_producto='" + nombreProducto + "'"; Statement st3 = con.createStatement(); rs = st3.executeQuery(sql); while (rs.next()) { String id_componente = rs.getString("id_componente"); int cantidad_unidades = rs.getInt("cantidad_unidades"); int numComponentes = cantidadComponentesBodega(id_componente); if (numComponentes >= cantidad_unidades) { int alcanzanComponentes = numComponentes / cantidad_unidades; numProductosPotencial = Math.min(alcanzanComponentes, numProductosPotencial); } } st3.close(); //Averiguar Materias Primas en bodega sql = "select * from MATERIAS_PRIMAS_PRODUCTO WHERE id_producto='" + nombreProducto + "'"; st3 = con.createStatement(); rs = st3.executeQuery(sql); while (rs.next()) { String id_materia = rs.getString("id_materia_prima"); int cantidad_unidades = rs.getInt("cantidad_unidades"); int numMateriasBodega = cantidadMateriasPrimasBodega(id_materia); if (numMateriasBodega >= cantidad_unidades) { int alcanzanMaterias = numMateriasBodega / cantidad_unidades; numProductosPotencial = Math.min(alcanzanMaterias, numProductosPotencial); } } st3.close(); System.out.println("Numero productos se pueden hacer con bodega " + numProductosPotencial); if (numProductosPotencial != Integer.MAX_VALUE && numProductosPotencial >= cantidad) { //Reservar componentes sql = "select * from COMPONENTES_PRODUCTO WHERE id_producto='" + nombreProducto + "'"; st3 = con.createStatement(); rs = st3.executeQuery(sql); while (rs.next()) { String id_componente = rs.getString("id_componente"); int cantidad_unidades = rs.getInt("cantidad_unidades"); reservarComponenteBodega(id_componente, cantidad * cantidad_unidades, id_pedido); } st3.close(); // Reservar materias primas sql = "select * from MATERIAS_PRIMAS_PRODUCTO WHERE id_producto='" + nombreProducto + "'"; st3 = con.createStatement(); rs = st3.executeQuery(sql); while (rs.next()) { String id_materia = rs.getString("id_materia_prima"); int cantidad_unidades = rs.getInt("cantidad_unidades"); reservarMateriaPrimaBodega(id_materia, cantidad * cantidad_unidades, id_pedido); } st3.close(); //Falta fecha esperada crearItemsReservadosPedido(nombreProducto, id_pedido, cantidad); resp = "Espera"; } else { //Poner el pedido en estad ESPERA st3 = con.createStatement(); sql = "update PEDIDO_PRODUCTO set ESTADO='Espera' where id=" + id_pedido; st3.executeUpdate(sql); st3.close(); resp = "Buzon"; Send env = new Send(); //RF18-fecha-idProducto-cantidad-idCliente String sFechaEnv = (cEsp.get(GregorianCalendar.MONTH) + 1) + "/" + cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "/" + cEsp.get(GregorianCalendar.YEAR); env.enviar( "RF18-" + sFechaEnv + "-" + nombreProducto + "-" + cantidad + "-" + id_cliente); env.close(); JSONObject jElm = new JSONObject(); jElm.put("id_pedido", id_pedido); // cancelarPedido(jElm); } } else { resp = "Buzon"; Send env = new Send(); String sFechaEnv = (cEsp.get(GregorianCalendar.MONTH) + 1) + "/" + cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "/" + cEsp.get(GregorianCalendar.YEAR); env.enviar("RF18-" + sFechaEnv + "-" + nombreProducto + "-" + cantidad + "-" + id_cliente); env.close(); JSONObject jElm = new JSONObject(); jElm.put("id_pedido", id_pedido); // cancelarPedido(jElm); } } cerrarConexion(); //return resp; if (resp.equals("Buzon")) { Long milis = System.currentTimeMillis(); while (System.currentTimeMillis() - milis < 10000) { for (int i = 0; i < buzon.size(); i++) { if (buzon.get(i).startsWith("RF18R-")) { // RF18R-numeroConf-Estado String[] s = buzon.get(i).split("-"); jRespuesta = new JSONObject(); jRespuesta.put("id_pedido", s[1]); jRespuesta.put("Respuesta", s[2]); buzon.remove(i); return jRespuesta; } } } jRespuesta.put("Respuesta", "Error en la otra aplicacion"); return jRespuesta; } jRespuesta.put("Respuesta", resp); return jRespuesta; } else { System.out.println("No hay productos as en nuestra base de datos"); resp = "Buzon"; Send env = new Send(); String sFechaEnv = (cEsp.get(GregorianCalendar.MONTH) + 1) + "/" + cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "/" + cEsp.get(GregorianCalendar.YEAR); String mensaje = "RF18-" + sFechaEnv + "-" + nombreProducto + "-" + cantidad + "-" + sId_cliente; env.enviar(mensaje); env.close(); System.out.println("Mensaje a enviar " + mensaje); Long milis = System.currentTimeMillis(); while (System.currentTimeMillis() - milis < 10000) { for (int i = 0; i < buzon.size(); i++) { System.out.println("Entro a buzon"); if (buzon.get(i).startsWith("RF18R-")) { // RF18R-numeroConf-Estado String[] s = buzon.get(i).split("-"); jRespuesta = new JSONObject(); jRespuesta.put("id_pedido", s[1]); jRespuesta.put("Respuesta", s[2]); buzon.remove(i); return jRespuesta; } } } jRespuesta.put("Respuesta", resp); return jRespuesta; } } catch (Exception e) { e.printStackTrace(); rollback(); //return "error"; JSONObject jRespuesta = new JSONObject(); jRespuesta.put("Respuesta", "error"); return jRespuesta; } } @POST @Path("/cancelarPedido") public void cancelarPedido(JSONObject jP) throws Exception { try { abrirConexion(); String lock = "lock table " + "pedido_producto" + " in exclusive mode"; Statement stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); int id_pedido = (int) jP.get("id_pedido"); System.out.println("Id Pedido " + id_pedido); String sql = "update ESTACION set ESTADO='Disponible',ID_PEDIDO=null WHERE ID_PEDIDO=" + id_pedido; System.out.println("------------------QUERY----------------------------"); System.out.println(sql); Statement st = con.createStatement(); st.executeUpdate(sql); st.close(); sql = "update MATERIA_PRIMA_ITEM set ESTADO='En Bodega',ID_PEDIDO_PRODUCTO=null WHERE ID_PEDIDO_PRODUCTO=" + id_pedido; st = con.createStatement(); System.out.println("------------------QUERY----------------------------"); System.out.println(sql); st.executeUpdate(sql); st.close(); sql = "update COMPONENTE_ITEM set ESTADO='En Bodega',ID_PEDIDO_PRODUCTO=null WHERE ID_PEDIDO_PRODUCTO=" + id_pedido; st = con.createStatement(); System.out.println("------------------QUERY----------------------------"); System.out.println(sql); st.executeUpdate(sql); st.close(); sql = "update ITEM set ESTADO='En Bodega',ID_PEDIDO=null WHERE ID_PEDIDO=" + id_pedido + " AND ESTADO='Reservado'"; st = con.createStatement(); System.out.println("------------------QUERY----------------------------"); System.out.println(sql); st.executeUpdate(sql); st.close(); sql = "delete from ITEM WHERE ID_PEDIDO=" + id_pedido + "AND ESTADO='Pre Produccion'"; st = con.createStatement(); System.out.println("------------------QUERY----------------------------"); System.out.println(sql); st.executeUpdate(sql); st.close(); sql = "delete from PEDIDO_PRODUCTO WHERE ID=" + id_pedido; st = con.createStatement(); System.out.println("------------------QUERY----------------------------"); System.out.println(sql); st.executeUpdate(sql); st.close(); cerrarConexion(); } catch (Exception e) { e.printStackTrace(); rollback(); } } @POST @Path("/registrarEntregaPedidoProductosCliente") /** * Registrar que los productos del pedido ya se entregaron * * @param id_pedido */ public void registrarEntregaPedidoProductosCliente(JSONObject jP) throws Exception { try { int id_pedido = (int) jP.get("id_pedido"); abrirConexion(); String lock = "lock table " + "item" + " in exclusive mode"; Statement stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); lock = "lock table " + "pedido_producto" + " in exclusive mode"; stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); String query = "select cantidad_producto from PEDIDO_PRODUCTO WHERE ID=" + id_pedido; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query); int cantidad = -1; if (rs.next()) { cantidad = rs.getInt("cantidad_producto"); } if (cantidad == -1) { throw new Exception("No se encontr el pedido"); } st.close(); query = "select * from ITEM where ID_PEDIDO=" + id_pedido + " and ESTADO='Reservado'"; st = con.createStatement(); rs = st.executeQuery(query); int cantidadProductosProducidos = 0; while (rs.next()) { cantidadProductosProducidos++; } st.close(); if (cantidadProductosProducidos < cantidad) { rollback(); throw new Exception("No se han terminado de producir todos los productos"); } else { st = con.createStatement(); rs = st.executeQuery(query); while (rs.next()) { int id = rs.getInt("ID"); String sql2 = "update ITEM set ESTADO='Entregado' where ID = " + id; Statement st2 = con.createStatement(); st2.executeUpdate(sql2); st2.close(); } st.close(); query = "UPDATE PEDIDO_PRODUCTO SET ESTADO='Entregado' WHERE ID=" + id_pedido; st = con.createStatement(); st.executeUpdate(query); st.close(); } cerrarConexion(); } catch (Exception e) { e.printStackTrace(); rollback(); } } @POST @Path("/consultarProductos") public JSONArray consultarProductos(JSONObject jP) throws Exception { try { JSONArray jArray = new JSONArray(); abrirConexion(); String criterio = jP.get("Criterio").toString(); if (criterio.equalsIgnoreCase("Rango")) { int rango1 = (int) jP.get("Rango1"); int rango2 = (int) jP.get("Rango2"); String sql = "Select * from (Select Producto.Nombre as nombreProducto,count(*) as cantidadInventario " + "from (Item inner join Producto on " + "Producto.nombre=Item.nombre_Producto)" + "WHERE Item.Estado ='En Bodega' GROUP BY Producto.nombre) where cantidadInventario>" + rango1 + " AND cantidadInventario<" + rango2; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { String nomProd = rs.getString("nombreProducto"); sql = "Select * from ITEM where nombre_producto='" + nomProd + "' AND ESTADO='En Bodega'"; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); while (rs2.next()) { JSONObject jObject = new JSONObject(); jObject.put("Id", rs2.getInt("id")); jObject.put("Estado", rs2.getString("ESTADO")); jObject.put("Nombre", rs2.getString("NOMBRE_PRODUCTO")); jObject.put("Etapa", rs2.getInt("ETAPA")); jObject.put("IdPedido", rs2.getInt("ID_PEDIDO")); jArray.add(jObject); } st2.close(); } st.close(); } else if (criterio.equalsIgnoreCase("Etapa")) { int num_etapa = (int) jP.get("Etapa"); String sql = "select * from Item where etapa=" + num_etapa; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); while (rs2.next()) { JSONObject jObject = new JSONObject(); jObject.put("Id", rs2.getInt("id")); jObject.put("Estado", rs2.getString("ESTADO")); jObject.put("Nombre", rs2.getString("NOMBRE_PRODUCTO")); jObject.put("Etapa", rs2.getInt("ETAPA")); jObject.put("IdPedido", rs2.getInt("ID_PEDIDO")); jArray.add(jObject); } st2.close(); } else if (criterio.equalsIgnoreCase("Fecha solicitud")) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = format.parse(jP.get("fecha_solicitud").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String fechaS = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); System.out.println("Fecha " + fechaS); String sql = "select * from PEDIDO_PRODUCTO where fecha_solicitud = " + "TO_DATE('" + fechaS + "','dd-mm-yyyy')"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { int id_pedido = rs.getInt("id"); sql = "select * from ITEM where ID_PEDIDO =" + id_pedido; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); while (rs2.next()) { JSONObject jO = new JSONObject(); jO.put("Id", rs2.getInt("id")); jO.put("Estado", rs2.getString("ESTADO")); jO.put("Nombre", rs2.getString("NOMBRE_PRODUCTO")); jO.put("Etapa", rs2.getInt("ETAPA")); jO.put("IdPedido", rs2.getInt("ID_PEDIDO")); jArray.add(jO); } st2.close(); } st.close(); } else if (criterio.equalsIgnoreCase("Fecha entrega")) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = format.parse(jP.get("fecha_entrega").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String fechaS = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); String sql = "select * from PEDIDO_PRODUCTO where fecha_entrega = " + "TO_DATE('" + fechaS + "','dd-mm-yyyy')"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { int id_pedido = rs.getInt("id"); sql = "select * from ITEM where ID_PEDIDO =" + id_pedido; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); while (rs2.next()) { JSONObject jO = new JSONObject(); jO.put("Id", rs2.getInt("id")); jO.put("Estado", rs2.getString("ESTADO")); jO.put("Nombre", rs2.getString("NOMBRE_PRODUCTO")); jO.put("Etapa", rs2.getInt("ETAPA")); jO.put("IdPedido", rs2.getInt("ID_PEDIDO")); jArray.add(jO); } st2.close(); } st.close(); } cerrarConexion(); return jArray; } catch (Exception e) { e.printStackTrace(); rollback(); return null; } } @POST @Path("/consultarMateriasPrimas") public JSONArray consultarMateriasPrimas(JSONObject jP) throws Exception { System.out.println("LLEGO"); System.out.println("PArametro " + jP.toString()); JSONArray jArray = new JSONArray(); abrirConexion(); String criterio = jP.get("Criterio").toString(); System.out.println("Criterio " + criterio); if (criterio.equalsIgnoreCase("Rango")) { int rango1 = (int) jP.get("Rango1"); int rango2 = (int) jP.get("Rango2"); System.out.println("Rango1" + rango1); System.out.println("Rango2" + rango2); String sql = "Select * from (Select Materia_Prima.Nombre as nombreMateria,count(*) as " + "cantidadInventario " + "from (Materia_Prima_Item inner join Materia_Prima on " + "Materia_Prima.nombre=Materia_Prima_Item.materia)" + "WHERE Materia_Prima_Item.Estado ='En Bodega' " + "GROUP BY Materia_Prima.nombre) where cantidadInventario>" + rango1 + " AND cantidadInventario<" + rango2; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { String materia = rs.getString("nombreMateria"); System.out.println("Materia " + materia); sql = "Select * from Materia_Prima_Item where materia='" + materia + "' " + "AND Estado='En Bodega'"; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); while (rs2.next()) { JSONObject jO = new JSONObject(); jO.put("Id", rs2.getInt("id")); jO.put("Estado", rs2.getString("ESTADO")); jO.put("MateriaPrima", rs2.getString("MATERIA")); jO.put("IdPedido", rs2.getInt("ID_PEDIDO")); jArray.add(jO); } st2.close(); } st.close(); } else if (criterio.equalsIgnoreCase("Fecha solicitud")) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = format.parse(jP.get("fecha_solicitud").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String fechaS = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); System.out.println("FEcha pedido " + fechaS); String sql = "select * from PEDIDO_MATERIA_PRIMA " + "where FECHA_PEDIDO=" + "TO_DATE('" + fechaS + "','dd-mm-yyyy')"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { int id_pedido = rs.getInt("id"); System.out.println("id_pedido " + id_pedido); sql = "select * from MATERIA_PRIMA_ITEM where ID_PEDIDO =" + id_pedido; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); while (rs2.next()) { JSONObject jO = new JSONObject(); jO.put("Id", rs2.getInt("id")); jO.put("Estado", rs2.getString("ESTADO")); jO.put("MateriaPrima", rs2.getString("MATERIA")); jO.put("IdPedido", rs2.getInt("ID_PEDIDO")); jArray.add(jO); } st2.close(); } st.close(); } else if (criterio.equalsIgnoreCase("Fecha entrega")) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = format.parse(jP.get("fecha_entrega").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String fechaS = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); String sql = "select * from PEDIDO_MATERIA_PRIMA where fecha_entrega=" + "TO_DATE('" + fechaS + "','dd-mm-yyyy')"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { int id_pedido = rs.getInt("id"); sql = "select * from MATERIA_PRIMA_ITEM where ID_PEDIDO =" + id_pedido; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); while (rs2.next()) { JSONObject jO = new JSONObject(); jO.put("Id", rs2.getInt("id")); jO.put("Estado", rs2.getString("ESTADO")); jO.put("MateriaPrima", rs2.getString("MATERIA")); jO.put("IdPedido", rs2.getInt("ID_PEDIDO")); jArray.add(jO); } st2.close(); } st.close(); } else if (criterio.equalsIgnoreCase("Tipo_material")) { String tipo = jP.get("Tipo_material").toString(); System.out.println("TIPO " + tipo); String sql = "select * from MATERIA_PRIMA where TIPO = '" + tipo + "'"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { String nombreMateria = rs.getString("nombre"); System.out.println("Nombre materia " + nombreMateria); sql = "select * from MATERIA_PRIMA_ITEM where materia = '" + nombreMateria + "'"; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); while (rs2.next()) { JSONObject jO = new JSONObject(); jO.put("Id", rs2.getInt("id")); jO.put("Estado", rs2.getString("ESTADO")); jO.put("MateriaPrima", rs2.getString("MATERIA")); jO.put("IdPedido", rs2.getInt("ID_PEDIDO")); jArray.add(jO); } } } cerrarConexion(); return jArray; } @POST @Path("/consultarComponentes") public JSONArray consultarComponentes(JSONObject jP) throws Exception { JSONArray jArray = new JSONArray(); abrirConexion(); String criterio = jP.get("Criterio").toString(); if (criterio.equalsIgnoreCase("Rango")) { int rango1 = (int) jP.get("Rango1"); int rango2 = (int) jP.get("Rango2"); String sql = "Select * from (Select Componente.Nombre as nombreComponente,count(*) as " + "cantidadInventario " + "from (Componente_Item inner join Componente on " + "Componente.nombre=Componente_Item.componente)" + "WHERE Componente_Item.Estado ='En Bodega' " + "GROUP BY Componente.nombre) where cantidadInventario>" + rango1 + " AND cantidadInventario<" + rango2; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { String componente = rs.getString("nombreComponente"); sql = "Select * from componente_item where componente='" + componente + "'" + "AND Estado ='En Bodega'"; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); while (rs2.next()) { JSONObject jO = new JSONObject(); jO.put("Id", rs2.getInt("id")); jO.put("Estado", rs2.getString("ESTADO")); jO.put("Componente", rs2.getString("COMPONENTE")); jO.put("IdPedido", rs2.getInt("ID_PEDIDO")); jArray.add(jO); } st2.close(); } st.close(); } else if (criterio.equalsIgnoreCase("Fecha solicitud")) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = format.parse(jP.get("fecha_solicitud").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String fechaS = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); String sql = "select * from PEDIDO_COMPONENTE where fecha_pedido = " + "TO_DATE('" + fechaS + "','dd-mm-yyyy')"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { int id_pedido = rs.getInt("id"); sql = "select * from COMPONENTE_ITEM where ID_PEDIDO =" + id_pedido; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); while (rs2.next()) { JSONObject jO = new JSONObject(); jO.put("Id", rs2.getInt("id")); jO.put("Estado", rs2.getString("ESTADO")); jO.put("Componente", rs2.getString("COMPONENTE")); jO.put("IdPedido", rs2.getInt("ID_PEDIDO")); jArray.add(jO); } st2.close(); } st.close(); } else if (criterio.equalsIgnoreCase("Fecha entrega")) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = format.parse(jP.get("fecha_entrega").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String fechaS = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); String sql = "select * from PEDIDO_componente where fecha_entrega = " + "TO_DATE('" + fechaS + "','dd-mm-yyyy')"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { int id_pedido = rs.getInt("id"); sql = "select * from componente_ITEM where ID_PEDIDO =" + id_pedido; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); while (rs2.next()) { JSONObject jO = new JSONObject(); jO.put("Id", rs2.getInt("id")); jO.put("Estado", rs2.getString("ESTADO")); jO.put("Componente", rs2.getString("COMPONENTE")); jO.put("IdPedido", rs2.getInt("ID_PEDIDO")); jArray.add(jO); } st2.close(); } st.close(); } else if (criterio.equalsIgnoreCase("Tipo_material")) { String tipo = jP.get("Tipo_material").toString(); String sql = "select * from componente where TIPO = '" + tipo + "'"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { String componente = rs.getString("nombre"); sql = "select * from componente_ITEM where componente = '" + componente + "'"; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); while (rs2.next()) { JSONObject jO = new JSONObject(); jO.put("Id", rs2.getInt("id")); jO.put("Estado", rs2.getString("ESTADO")); jO.put("Componente", rs2.getString("COMPONENTE")); jO.put("IdPedido", rs2.getInt("ID_PEDIDO")); jArray.add(jO); } } } cerrarConexion(); return jArray; } // ------------------------------------------------- // Metodos Adicionales // ------------------------------------------------- public void crearItemsReservadosPedido(String nombreProducto, int id_pedido, int cantidad) throws Exception { try { for (int i = 0; i < cantidad; i++) { String sql = "select max (id) as MAXIMO from ITEM"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); int id_item = -1; if (rs.next()) { id_item = rs.getInt("MAXIMO") + 1; //Crear pedido nuevo sql = "INSERT INTO ITEM (id,ESTADO,NOMBRE_PRODUCTO,ID_PEDIDO)" + " VALUES (" + id_item + ",'Pre Produccion','" + nombreProducto + "'," + id_pedido + ")"; Statement st2 = con.createStatement(); st2.executeUpdate(sql); st2.close(); } st.close(); } } catch (Exception e) { e.printStackTrace(); rollback(); } } @POST @Path("/cantidadProductoEnBodega") public int cantidadProductoEnBodega(String nombre) throws Exception { System.out.println("Entrada parmetro cantidadProductoEnBodega"); System.out.println(nombre); String query = "select count(*) as cuenta from ITEM where NOMBRE_PRODUCTO='" + nombre + "' and ESTADO='En Bodega'"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query); int resp = 0; if (rs.next()) { resp = rs.getInt("cuenta"); } st.close(); System.out.println("Return cantidadProductoEnBodega: " + resp); return resp; } @POST @Path("/cantidadMateriasPrimasBodega") public int cantidadMateriasPrimasBodega(String materia) throws Exception { System.out.println("Entrada parmetro cantidadMateriasPrimasBodega"); System.out.println(materia); String query = "select count(*) as cuenta from MATERIA_PRIMA_ITEM " + "where MATERIA='" + materia + "' and ESTADO='En Bodega'"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query); int resp = 0; if (rs.next()) { resp = rs.getInt("cuenta"); } st.close(); System.out.println("Return cantidadMateriasPrimasBodega: " + resp); return resp; } @POST @Path("/cantidadComponentesBodega") public int cantidadComponentesBodega(String componente) throws Exception { System.out.println("Entrada parmetro cantidadComponentesBodega"); System.out.println(componente); String query = "select count(*) as cuenta from COMPONENTE_ITEM " + "where COMPONENTE='" + componente + "' and ESTADO='En Bodega'"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query); int resp = 0; if (rs.next()) { resp = rs.getInt("cuenta"); } st.close(); System.out.println("Return cantidadComponentesBodega: " + resp); return resp; } public void abrirConexion() throws Exception { con = null; Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection("jdbc:oracle:thin:@157.253.238.224:1531:prod", "ISIS2304271510", "rproxyquark"); con.setAutoCommit(true); } public void cerrarConexion() throws Exception { if (con != null) { con.commit(); con.close(); con = null; } } public void rollback() { if (con != null) { try { con.rollback(); con.close(); con = null; } catch (SQLException ex) { ex.printStackTrace(); } } } /** * Se reserva la cantidad de ese producto que est en bodega, y se pasa a * estado reservado y se asocia los items con el pedido * * @param nombreProducto * @param cantidad * @param id_pedido * @throws Exception */ public int reservarProductoBodega(String nombreProducto, int cantidad, int id_pedido) throws Exception { try { System.out.println("Reservar Productos Bodega " + nombreProducto + "," + cantidad + "," + id_pedido); String query = "select * from ITEM where NOMBRE_PRODUCTO='" + nombreProducto + "' and ESTADO='En Bodega'"; System.out.println("------------------------QUERY-----------------------"); System.out.println(query); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query); int i; for (i = 0; i < cantidad && rs.next(); i++) { int id = rs.getInt("ID"); String sql2 = "update ITEM set ESTADO='Reservado',ID_PEDIDO=" + id_pedido + " where ID = " + id; System.out.println("------------------------QUERY-----------------------"); System.out.println(sql2); Statement st2 = con.createStatement(); st2.executeUpdate(sql2); st2.close(); } st.close(); return i; } catch (Exception e) { e.printStackTrace(); rollback(); return 0; } } public int reservarComponenteBodega(String id_componente, int cantidad_unidades, int id_pedido) throws Exception { try { System.out.println("reservarComponenteBodega " + cantidad_unidades); String query = "select * from COMPONENTE_ITEM where componente='" + id_componente + "' and ESTADO='En Bodega'"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query); int i; for (i = 0; i < cantidad_unidades && rs.next(); i++) { int id = rs.getInt("id"); String sql2 = "update COMPONENTE_ITEM set ESTADO='Reservado',ID_PEDIDO_PRODUCTO=" + id_pedido + " where id =" + id; Statement st2 = con.createStatement(); st2.executeUpdate(sql2); st2.close(); } st.close(); return i; } catch (Exception e) { e.printStackTrace(); rollback(); throw new Exception(""); } } public int reservarMateriaPrimaBodega(String id_materia, int cantidad_unidades, int id_pedido) throws Exception { try { System.out.println("reservarComponenteBodega " + cantidad_unidades); String query = "select * from MATERIA_PRIMA_ITEM where materia='" + id_materia + "' and ESTADO='En Bodega'"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query); int i; for (i = 0; i < cantidad_unidades && rs.next(); i++) { int id = rs.getInt("id"); String sql2 = "update MATERIA_PRIMA_ITEM set ESTADO='Reservado',ID_PEDIDO_PRODUCTO=" + id_pedido + " where id=" + id; System.out.println("-------------------------QUERY-------------------------"); System.out.println(sql2); Statement st2 = con.createStatement(); st2.executeUpdate(sql2); st2.close(); } st.close(); return i; } catch (Exception e) { e.printStackTrace(); rollback(); throw new Exception(""); } } //------------------------------------------------------- // Mtodos para ensayar otros mtodos //------------------------------------------------------- @POST @Path("/reservarProducto") public void reservarProductoREST(List lista) throws Exception { abrirConexion(); LinkedHashMap lNombreProducto = (LinkedHashMap) lista.get(0); LinkedHashMap lCantidad = (LinkedHashMap) lista.get(1); LinkedHashMap lIdPedido = (LinkedHashMap) lista.get(2); reservarProductoBodega(lNombreProducto.get("nombreProducto").toString(), (int) lCantidad.get("cantidad"), (int) lIdPedido.get("id_pedido")); cerrarConexion(); } @POST @Path("/registrarProveedor") public void registrarProveedor(JSONObject proveedor) throws Exception { abrirConexion(); try { String lock = "lock table " + "proveedor" + " in exclusive mode"; Statement stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); System.out.println("- - - - - - - - - - - - - - - - - Print Entrada - - - - - - - - - - - - - - - - -"); System.out.println(proveedor); int doc = Integer.parseInt(proveedor.get("documento").toString()); String nombre = proveedor.get("nombre").toString(); String ciudad = proveedor.get("ciudad").toString(); String direccion = proveedor.get("direccion").toString(); String telefono = proveedor.get("telefono").toString(); int volumenMax = Integer.parseInt(proveedor.get("volumenMaximo").toString()); int tiempoResp = Integer.parseInt(proveedor.get("tiempoDeEntrega").toString()); String representante = proveedor.get("representanteLegal").toString(); // String sql = "select max (id) as MAXIMO from PROVEEDOR"; // System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); // System.out.println(sql); // Statement st = con.createStatement(); // ResultSet rs = st.executeQuery(sql); // st.close(); // int id_item = -1; // if (rs.next()) { // id_item = rs.getInt("MAXIMO") + 1; // } String sql = "INSERT INTO PROVEEDOR (DOCUMENTO_ID,NOMBRE,CIUDAD,DIRECCION,TELEFONO,VOLUMEN_MAXIMO,TIEMPO_DE_ENTREGA,REPRESENTANTE_LEGAL)" + " VALUES ('" + doc + "','" + nombre + "','" + ciudad + "','" + direccion + "','" + telefono + "'," + volumenMax + "," + tiempoResp + "," + representante + ")"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(sql); Statement st2 = con.createStatement(); st2.executeUpdate(sql); st2.close(); cerrarConexion(); } catch (Exception e) { e.printStackTrace(); rollback(); throw new Exception(""); } } @POST @Path("/registrarLlegadaDeMaterial") public void registrarLlegadaDeMaterial(JSONObject idPedidoMateriaPrimaP) throws Exception { abrirConexion(); try { String lock = "lock table " + "PEDIDO_MATERIA_PRIMA" + " in exclusive mode"; Statement stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); lock = "lock table " + "MATERIA_PRIMA_ITEM" + " in exclusive mode"; stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); int idPedidoMateriaPrima = Integer.parseInt(idPedidoMateriaPrimaP.get("id").toString()); System.out.println("Entrada parmetro registrarLlegadaDeMaterial"); System.out.println(idPedidoMateriaPrima); Calendar c = new GregorianCalendar(); String fecha = c.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (c.get(GregorianCalendar.MONTH) + 1) + "-" + c.get(GregorianCalendar.YEAR); String query = "update PEDIDO_MATERIA_PRIMA set FECHA_ENTREGA = TO_DATE ('" + fecha + "','DD-MM-YYYY') WHERE ID = " + idPedidoMateriaPrima; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query); Statement st = con.createStatement(); st.executeQuery(query); st.close(); query = "update MATERIA_PRIMA_ITEM set ESTADO = 'En Bodega' WHERE ID_PEDIDO =" + idPedidoMateriaPrima; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query); st = con.createStatement(); st.executeQuery(query); st.close(); cerrarConexion(); } catch (Exception e) { e.printStackTrace(); rollback(); throw new Exception(""); } } @POST @Path("/registrarLlegadaDeComponentes") public void registrarLlegadaDeComponentes(JSONObject idPedidoComponenteP) throws Exception { abrirConexion(); try { String lock = "lock table " + "PEDIDO_COMPONENTE" + " in exclusive mode"; Statement stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); lock = "lock table " + "COMPONENTE_ITEM" + " in exclusive mode"; stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); int idPedidoComponente = Integer.parseInt(idPedidoComponenteP.get("id").toString()); System.out.println("Entrada parmetro registrarLlegadaDeMaterial"); System.out.println("Marca 1"); System.out.println(idPedidoComponente); Calendar c = new GregorianCalendar(); System.out.println("Marca 2"); String fecha = c.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (c.get(GregorianCalendar.MONTH) + 1) + "-" + c.get(GregorianCalendar.YEAR); System.out.println("Marca 3"); String query = "update PEDIDO_COMPONENTE set FECHA_ENTREGA = TO_DATE ('" + fecha + "','DD-MM-YYYY') WHERE ID = " + idPedidoComponente; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query); Statement st = con.createStatement(); st.executeQuery(query); st.close(); query = "update COMPONENTE_ITEM set ESTADO = 'En Bodega' WHERE ID_PEDIDO =" + idPedidoComponente; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query); st = con.createStatement(); st.executeQuery(query); st.close(); cerrarConexion(); } catch (Exception e) { e.printStackTrace(); rollback(); throw new Exception(""); } } @POST @Path("/registrarEjecucionEtapa") public JSONObject registrarEjecucionEtapa(JSONObject num_secuenciaP) throws Exception { abrirConexion(); try { String lock = "lock table " + "item" + " in exclusive mode"; Statement stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); lock = "lock table " + "MATERIA_PRIMA_ITEM" + " in exclusive mode"; stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); lock = "lock table " + "ITEM_COMPONENTE_ETAPA" + " in exclusive mode"; stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); lock = "lock table " + "COMPONENTE_ITEM" + " in exclusive mode"; stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); int num_secuencia = Integer.parseInt(num_secuenciaP.get("secuencia").toString()); //Verificar productos System.out.println("Entrada parmetro registrarEjecucionEtapa"); System.out.println(num_secuencia); int numProductosDisponibles = verificarProductosEstacionAnterior(num_secuencia); if (numProductosDisponibles == 0) { JSONObject jRespuesta = new JSONObject(); jRespuesta.put("Respuesta", "Numero de productos no disponibles"); return jRespuesta; } //Verificar componentes String query = "select * from (select CANTIDAD, (case when cuenta is null then 0 else cuenta end) as CUENTA from (select * from ITEM_COMPONENTE_ETAPA left outer join (select COMPONENTE, count(ID) as cuenta from COMPONENTE_ITEM where COMPONENTE_ITEM.ESTADO = 'En Bodega' group by COMPONENTE) on COMPONENTE = COMPONENTE_NOMBRE) where NUMERO_SECUENCIA =" + num_secuencia + ") where CANTIDAD > cuenta"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query); if (rs.next()) { JSONObject jRespuesta = new JSONObject(); jRespuesta.put("Respuesta", "Cantidad de componentes insuficientes"); return jRespuesta; } st.close(); //Verificar materia String query1 = "select * from (select CANTIDAD, (case when cuenta is null then 0 else cuenta end) as CUENTA from (select * from ITEM_MATERIA_PRIMA_ETAPA left outer join (select MATERIA, count(ID) as cuenta from MATERIA_PRIMA_ITEM where MATERIA_PRIMA_ITEM.ESTADO = 'En Bodega' group by MATERIA) on MATERIA = MATERIA_PRIMA_NOMBRE) where NUMERO_SECUENCIA =" + num_secuencia + ") where CANTIDAD > cuenta"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query1); Statement st1 = con.createStatement(); ResultSet rs1 = st1.executeQuery(query1); if (rs1.next()) { JSONObject jRespuesta = new JSONObject(); jRespuesta.put("Respuesta", "Cantidad de materia prima insuficiente"); return jRespuesta; } st1.close(); //Subir productos en etapas String query2 = "update item set ETAPA = ETAPA+1 where ETAPA = " + (num_secuencia - 1) + "AND ID = (select min(ID) from ITEM where ETAPA = " + (num_secuencia - 1) + ")"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query2); Statement st2 = con.createStatement(); st2.executeQuery(query2); st2.close(); //Reducir suministros MATERIA PRIMA String query3 = "select * from ITEM_MATERIA_PRIMA_ETAPA where NUMERO_SECUENCIA = " + num_secuencia; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query3); Statement st3 = con.createStatement(); ResultSet rs3 = st3.executeQuery(query3); ArrayList<String> lista1 = new ArrayList(); ArrayList<Integer> lista2 = new ArrayList(); while (rs3.next()) { lista1.add(rs3.getString("MATERIA_PRIMA_NOMBRE")); lista2.add(rs3.getInt("CANTIDAD")); } st3.close(); String query4; Statement st4; ResultSet rs4; for (int i = 0; i < lista1.size(); i++) { for (int j = 0; j < lista2.get(i); j++) { query4 = "DELETE FROM MATERIA_PRIMA_ITEM where ID = (select min(ID) from MATERIA_PRIMA_ITEM where MATERIA = '" + lista1.get(i) + "')"; System.out.println( "- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query4); st4 = con.createStatement(); rs4 = st4.executeQuery(query4); st4.close(); } } //Registrar etapa Calendar c = new GregorianCalendar(); String fecha = c.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (c.get(GregorianCalendar.MONTH) + 1) + "-" + c.get(GregorianCalendar.YEAR) + " " + c.get(GregorianCalendar.HOUR_OF_DAY) + ":" + c.get(GregorianCalendar.MINUTE) + ":" + c.get(GregorianCalendar.SECOND); String query20 = "INSERT INTO ETAPA_FECHA (CODIGO_SECUENCIA, FECHA) VALUES (" + num_secuencia + ", TO_DATE('" + fecha + "', 'DD-MM-YYYY HH24:MI:SS'))"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query20); Statement st20 = con.createStatement(); st20.executeQuery(query20); st20.close(); //Reducir suministros COMPONENTE query3 = "select * from ITEM_COMPONENTE_ETAPA where NUMERO_SECUENCIA = " + num_secuencia; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query3); st3 = con.createStatement(); rs3 = st3.executeQuery(query3); lista1 = new ArrayList(); lista2 = new ArrayList(); while (rs3.next()) { lista1.add(rs3.getString("COMPONENTE_NOMBRE")); lista2.add(rs3.getInt("CANTIDAD")); } st3.close(); for (int i = 0; i < lista1.size(); i++) { for (int j = 0; j < lista2.get(i); j++) { query4 = "DELETE FROM COMPONENTE_ITEM where ID = (select min(ID) from COMPONENTE_ITEM where COMPONENTE = '" + lista1.get(i) + "')"; System.out.println( "- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query4); st4 = con.createStatement(); rs4 = st4.executeQuery(query4); st4.close(); } } cerrarConexion(); JSONObject jRespuesta = new JSONObject(); jRespuesta.put("Respuesta", "Operacion correcta"); return jRespuesta; } catch (Exception e) { e.printStackTrace(); rollback(); throw new Exception(""); } } @POST @Path("/verificarProductosEstacionAnterior") public int verificarProductosEstacionAnterior(int numSecuencia) throws Exception { try { //Dar etapa y producto del num_secuencia // String query3 = "select etapa, nombre_producto from ETAPA_DE_PRODUCCION where NUMERO_SECUENCIA = " + numSecuencia; // System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); // System.out.println(query3); // Statement st3 = con.createStatement(); // ResultSet rs3 = st3.executeQuery(query3); // int resp3 = 0; // String resp4 = ""; // if (rs3.next()) { // resp3 = rs3.getInt("etapa"); // System.out.println("etapa:"); // System.out.println(resp3); // resp4 = rs3.getString("nombre_producto"); // System.out.println("nombre_producto:"); // System.out.println(resp4); // } // int etapa = resp3; // int etapaAnterior = etapa - 1; // String producto = resp4; // st3.close(); // //Dar id de la etapa anterior // String query4 = "select NUMERO_SECUENCIA from ETAPA_DE_PRODUCCION where ETAPA= " + etapaAnterior + " AND " + "NOMBRE_PRODUCTO ='" + producto + "'"; // System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); // System.out.println(query4); // Statement st4 = con.createStatement(); // ResultSet rs4 = st4.executeQuery(query4); // int resp5 = 0; // if (rs4.next()) { // resp5 = rs4.getInt("NUMERO_SECUENCIA"); // System.out.println("NUMERO_SECUENCIA:"); // System.out.println(resp5); // } // st4.close(); // int numSecAnterior = resp5; //Dar numero de items en etapa anterior String query5 = "select count(*) as cuenta from ITEM where ETAPA= " + (numSecuencia - 1); System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query5); Statement st5 = con.createStatement(); ResultSet rs5 = st5.executeQuery(query5); int resp6 = 0; if (rs5.next()) { resp6 = rs5.getInt("cuenta"); System.out.println("cuenta:"); System.out.println(resp6); } st5.close(); //FIN System.out.println("Return verificarProductosEstacionAnterior: " + resp6); return resp6; } catch (Exception e) { e.printStackTrace(); rollback(); throw new Exception(""); } } // Comparar rangos @POST @Path("/consultarEtapaProduccionMayorMovimiento") public JSONObject consultarEtapaProduccionMayorMovimiento(JSONObject jO) throws Exception { abrirConexion(); try { DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date dateIni = format.parse(jO.get("fechaInicio").toString()); java.util.Date dateFin = format.parse(jO.get("fechaFin").toString()); Calendar dateIniCalendar = new GregorianCalendar(); dateIniCalendar.setTime(dateIni); Calendar dateFinCalendar = new GregorianCalendar(); dateFinCalendar.setTime(dateFin); String query5 = "SELECT * from (" + "SELECT CODIGO_SECUENCIA, count(FECHA) as cuenta from (" + "select * from ETAPA_FECHA where TO_DATE('" + dateFinCalendar.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (dateFinCalendar.get(GregorianCalendar.MONTH) + 1) + "-" + dateFinCalendar.get(GregorianCalendar.YEAR) + "','DD-MM-YYYY')>ETAPA_FECHA.FECHA AND TO_DATE('" + dateIniCalendar.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (dateIniCalendar.get(GregorianCalendar.MONTH) + 1) + "-" + dateIniCalendar.get(GregorianCalendar.YEAR) + "','DD-MM-YYYY')<ETAPA_FECHA.FECHA)" + "GROUP BY CODIGO_SECUENCIA) where cuenta = (" + "SELECT max (count(FECHA)) from (select * from ETAPA_FECHA where TO_DATE('" + dateFinCalendar.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (dateFinCalendar.get(GregorianCalendar.MONTH) + 1) + "-" + dateFinCalendar.get(GregorianCalendar.YEAR) + "','DD-MM-YYYY')>ETAPA_FECHA.FECHA AND TO_DATE('" + dateIniCalendar.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (dateIniCalendar.get(GregorianCalendar.MONTH) + 1) + "-" + dateIniCalendar.get(GregorianCalendar.YEAR) + "','DD-MM-YYYY')<ETAPA_FECHA.FECHA) " + "GROUP BY CODIGO_SECUENCIA)"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query5); Statement st5 = con.createStatement(); ResultSet rs5 = st5.executeQuery(query5); int numeroMaximo = 0; String etapaMaxima = ""; if (rs5.next()) { numeroMaximo = rs5.getInt("CUENTA"); System.out.println("CUENTA:"); System.out.println(numeroMaximo); etapaMaxima = rs5.getString("CODIGO_SECUENCIA"); System.out.println("CODIGO_SECUENCIA:"); System.out.println(etapaMaxima); } st5.close(); JSONObject resp = new JSONObject(); resp.put("CODIGO_SECUENCIA", etapaMaxima); resp.put("CUENTA", numeroMaximo); cerrarConexion(); return resp; } catch (Exception e) { e.printStackTrace(); rollback(); throw new Exception(""); } } // Operario mas activo @POST @Path("/operarioMasActivo") public JSONObject operarioMasActivo(JSONObject jO) throws Exception { abrirConexion(); try { int num_secuencia = Integer.parseInt(jO.get("secuencia").toString()); String query5 = "select * from OPERARIO natural join (" + "select DOCUMENTO_OPERARIO as DOCUMENTO_ID, CUENTA from (" + "select * from (select DOCUMENTO_OPERARIO, count(ID_ETAPA) as cuenta from ETAPAS_OPERARIOS where ID_ETAPA= " + num_secuencia + " group by DOCUMENTO_OPERARIO) " + "where cuenta=(" + "SELECT max(count(ID_ETAPA)) as cuenta from ETAPAS_OPERARIOS " + "where ID_ETAPA= " + num_secuencia + " group by DOCUMENTO_OPERARIO)))"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query5); Statement st5 = con.createStatement(); ResultSet rs5 = st5.executeQuery(query5); JSONObject operario = new JSONObject(); String documento_id = ""; String nombre = ""; String nacionalidad = ""; String direccion = ""; String email = ""; String telefono = ""; String ciudad = ""; String departamento = ""; String codigo_postal = ""; JSONArray lista = new JSONArray(); int i = 0; while (rs5.next()) { i++; System.out.println("Numero del ciclo: " + i); documento_id = rs5.getString("DOCUMENTO_ID"); nombre = rs5.getString("NOMBRE"); nacionalidad = rs5.getString("NACIONALIDAD"); direccion = rs5.getString("DIRECCION"); email = rs5.getString("EMAIL"); telefono = rs5.getString("TELEFONO"); ciudad = rs5.getString("CIUDAD"); departamento = rs5.getString("DEPARTAMENTO"); codigo_postal = rs5.getString("CODIGO_POSTAL"); operario.put("DOCUMENTO_ID", documento_id); operario.put("NOMBRE", nombre); operario.put("NACIONALIDAD", nacionalidad); operario.put("DIRECCION", direccion); operario.put("EMAIL", email); operario.put("TELEFONO", telefono); operario.put("CIUDAD", ciudad); operario.put("DEPARTAMENTO", departamento); operario.put("CODIGO_POSTAL", codigo_postal); System.out.println("Operario: " + operario); lista.add(operario); } System.out.println("Lista: " + lista); st5.close(); cerrarConexion(); JSONObject resp = new JSONObject(); resp.put("operarios", lista.toString()); System.out.println("Respuesta: " + resp.toString()); return resp; } catch (Exception e) { e.printStackTrace(); rollback(); throw new Exception(""); } } //--------------------------------------------------------------------------------------------------------------- //------------------------ Iteracion 3--------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------------- @POST @Path("/consultarPedidos") public JSONArray consultarPedidos(JSONObject jP) throws Exception { JSONArray jArray = new JSONArray(); abrirConexion(); try { String criterio = jP.get("Criterio").toString(); if (criterio.equalsIgnoreCase("Cantidad")) { int rango1 = (int) jP.get("Rango1"); int rango2 = (int) jP.get("Rango2"); String sql = "select * from PEDIDO_PRODUCTO where CANTIDAD_PRODUCTO >=" + rango1 + " AND CANTIDAD_PRODUCTO <= " + rango2; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("id", rs.getInt("id")); jObject.put("estado", rs.getString("ESTADO")); jObject.put("fecha_entrega", rs.getDate("fecha_entrega")); jObject.put("fecha_solicitud", rs.getDate("fecha_solicitud")); jObject.put("fecha_esperada_entrega", rs.getDate("fecha_esperada_entrega")); jObject.put("id_cliente", rs.getInt("id_cliente")); jArray.add(jObject); } st.close(); } else if (criterio.equalsIgnoreCase("Estado")) { String estado = jP.get("Estado").toString(); String sql = "select * from PEDIDO_PRODUCTO where ESTADO = '" + estado + "'"; Statement st2 = con.createStatement(); ResultSet rs = st2.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("id", rs.getInt("id")); jObject.put("estado", rs.getString("ESTADO")); jObject.put("fecha_entrega", rs.getDate("fecha_entrega")); jObject.put("fecha_solicitud", rs.getDate("fecha_solicitud")); jObject.put("fecha_esperada_entrega", rs.getDate("fecha_esperada_entrega")); jObject.put("id_cliente", rs.getInt("id_cliente")); jArray.add(jObject); } st2.close(); } else if (criterio.equalsIgnoreCase("Fecha Solicitud")) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = format.parse(jP.get("fecha_solicitud").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String fechaS = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); System.out.println("Fecha " + fechaS); String sql = "select * from PEDIDO_PRODUCTO where fecha_solicitud = " + "TO_DATE('" + fechaS + "','dd-mm-yyyy')"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("id", rs.getInt("id")); jObject.put("estado", rs.getString("ESTADO")); jObject.put("fecha_entrega", rs.getDate("fecha_entrega")); jObject.put("fecha_solicitud", rs.getDate("fecha_solicitud")); jObject.put("fecha_esperada_entrega", rs.getDate("fecha_esperada_entrega")); jObject.put("id_cliente", rs.getInt("id_cliente")); jArray.add(jObject); } st.close(); } else if (criterio.equalsIgnoreCase("Fecha Entrega")) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = format.parse(jP.get("fecha_entrega").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String fechaS = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); System.out.println("Fecha " + fechaS); String sql = "select * from PEDIDO_PRODUCTO where fecha_entrega = " + "TO_DATE('" + fechaS + "','dd-mm-yyyy')"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("id", rs.getInt("id")); jObject.put("estado", rs.getString("ESTADO")); jObject.put("fecha_entrega", rs.getDate("fecha_entrega")); jObject.put("fecha_solicitud", rs.getDate("fecha_solicitud")); jObject.put("fecha_esperada_entrega", rs.getDate("fecha_esperada_entrega")); jObject.put("id_cliente", rs.getInt("id_cliente")); jArray.add(jObject); } st.close(); } else if (criterio.equalsIgnoreCase("Fecha Esperada Entrega")) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = format.parse(jP.get("fecha_esperada_entrega").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String fechaS = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); System.out.println("Fecha " + fechaS); String sql = "select * from PEDIDO_PRODUCTO where fecha_esperada_entrega = " + "TO_DATE('" + fechaS + "','dd-mm-yyyy')"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("id", rs.getInt("id")); jObject.put("estado", rs.getString("ESTADO")); jObject.put("fecha_entrega", rs.getDate("fecha_entrega")); jObject.put("fecha_solicitud", rs.getDate("fecha_solicitud")); jObject.put("fecha_esperada_entrega", rs.getDate("fecha_esperada_entrega")); jObject.put("id_cliente", rs.getInt("id_cliente")); jArray.add(jObject); } st.close(); } else if (criterio.equalsIgnoreCase("Id Cliente")) { int id_cliente = (int) jP.get("id_cliente"); String sql = "select * from PEDIDO_PRODUCTO where ID_CLIENTE = " + id_cliente; Statement st2 = con.createStatement(); ResultSet rs = st2.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("id", rs.getInt("id")); jObject.put("estado", rs.getString("ESTADO")); jObject.put("fecha_entrega", rs.getDate("fecha_entrega")); jObject.put("fecha_solicitud", rs.getDate("fecha_solicitud")); jObject.put("fecha_esperada_entrega", rs.getDate("fecha_esperada_entrega")); jObject.put("id_cliente", rs.getInt("id_cliente")); jArray.add(jObject); } st2.close(); } cerrarConexion(); return jArray; } catch (Exception e) { e.printStackTrace(); rollback(); throw new Exception(""); } } @POST @Path("/consultarProveedores") public JSONArray consultarProveedores(JSONObject jP) throws Exception { JSONArray jArray = new JSONArray(); abrirConexion(); String criterio = jP.get("Criterio").toString(); System.out.println("Criterio: " + criterio); if (criterio.equalsIgnoreCase("Documento Id")) { String documentoId = jP.get("documentoId").toString(); String sql = "select * from PROVEEDOR where DOCUMENTO_ID = '" + documentoId + "'"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("documento_id", rs.getString("documento_id")); jObject.put("nombre", rs.getString("nombre")); jObject.put("ciudad", rs.getString("ciudad")); jObject.put("direccion", rs.getString("direccion")); jObject.put("telefono", rs.getString("telefono")); jObject.put("volumen_maximo", rs.getInt("volumen_maximo")); jObject.put("tiempo_de_entrega", rs.getInt("tiempo_de_entrega")); jObject.put("representante_legal", rs.getInt("representante_legal")); jArray.add(jObject); } st.close(); } else if (criterio.equalsIgnoreCase("Nombre")) { String nombre = jP.get("nombre").toString(); String sql = "select * from PROVEEDOR where NOMBRE LIKE '%" + nombre + "%'"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("documento_id", rs.getString("documento_id")); jObject.put("nombre", rs.getString("nombre")); jObject.put("ciudad", rs.getString("ciudad")); jObject.put("direccion", rs.getString("direccion")); jObject.put("telefono", rs.getString("telefono")); jObject.put("volumen_maximo", rs.getInt("volumen_maximo")); jObject.put("tiempo_de_entrega", rs.getInt("tiempo_de_entrega")); jObject.put("representante_legal", rs.getInt("representante_legal")); jArray.add(jObject); } st.close(); } else if (criterio.equalsIgnoreCase("Ciudad")) { String ciudad = jP.get("ciudad").toString(); String sql = "select * from PROVEEDOR where CIUDAD LIKE '%" + ciudad + "%'"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("documento_id", rs.getString("documento_id")); jObject.put("nombre", rs.getString("nombre")); jObject.put("ciudad", rs.getString("ciudad")); jObject.put("direccion", rs.getString("direccion")); jObject.put("telefono", rs.getString("telefono")); jObject.put("volumen_maximo", rs.getInt("volumen_maximo")); jObject.put("tiempo_de_entrega", rs.getInt("tiempo_de_entrega")); jObject.put("representante_legal", rs.getInt("representante_legal")); jArray.add(jObject); } st.close(); } else if (criterio.equalsIgnoreCase("Direccion")) { String direccion = jP.get("direccion").toString(); String sql = "select * from PROVEEDOR where DIRECCION LIKE '%" + direccion + "%'"; System.out.println("---------------------------------Query------------------------" + "-----------------------------------------------------"); System.out.println(sql); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("documento_id", rs.getString("documento_id")); jObject.put("nombre", rs.getString("nombre")); jObject.put("ciudad", rs.getString("ciudad")); jObject.put("direccion", rs.getString("direccion")); jObject.put("telefono", rs.getString("telefono")); jObject.put("volumen_maximo", rs.getInt("volumen_maximo")); jObject.put("tiempo_de_entrega", rs.getInt("tiempo_de_entrega")); jObject.put("representante_legal", rs.getInt("representante_legal")); jArray.add(jObject); } st.close(); } else if (criterio.equalsIgnoreCase("Telefono")) { String telefono = jP.get("telefono").toString(); String sql = "select * from PROVEEDOR where TELEFONO LIKE '%" + telefono + "%'"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("documento_id", rs.getString("documento_id")); jObject.put("nombre", rs.getString("nombre")); jObject.put("ciudad", rs.getString("ciudad")); jObject.put("direccion", rs.getString("direccion")); jObject.put("telefono", rs.getString("telefono")); jObject.put("volumen_maximo", rs.getInt("volumen_maximo")); jObject.put("tiempo_de_entrega", rs.getInt("tiempo_de_entrega")); jObject.put("representante_legal", rs.getInt("representante_legal")); jArray.add(jObject); } st.close(); } else if (criterio.equalsIgnoreCase("Volumen Maximo")) { int volMax = (int) jP.get("volumen_maximo"); String sql = "select * from PROVEEDOR where volumen_maximo = " + volMax; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("documento_id", rs.getString("documento_id")); jObject.put("nombre", rs.getString("nombre")); jObject.put("ciudad", rs.getString("ciudad")); jObject.put("direccion", rs.getString("direccion")); jObject.put("telefono", rs.getString("telefono")); jObject.put("volumen_maximo", rs.getInt("volumen_maximo")); jObject.put("tiempo_de_entrega", rs.getInt("tiempo_de_entrega")); jObject.put("representante_legal", rs.getInt("representante_legal")); jArray.add(jObject); } st.close(); } else if (criterio.equalsIgnoreCase("Tiempo Entrega")) { int tiempoEntrega = (int) jP.get("tiempo_de_entrega"); String sql = "select * from PROVEEDOR where tiempo_de_entrega = " + tiempoEntrega; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("documento_id", rs.getString("documento_id")); jObject.put("nombre", rs.getString("nombre")); jObject.put("ciudad", rs.getString("ciudad")); jObject.put("direccion", rs.getString("direccion")); jObject.put("telefono", rs.getString("telefono")); jObject.put("volumen_maximo", rs.getInt("volumen_maximo")); jObject.put("tiempo_de_entrega", rs.getInt("tiempo_de_entrega")); jObject.put("representante_legal", rs.getInt("representante_legal")); jArray.add(jObject); } st.close(); } else if (criterio.equalsIgnoreCase("Representante Legal")) { int representanteLegal = (int) jP.get("representante_legal"); String sql = "select * from PROVEEDOR where representante_legal = " + representanteLegal; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("documento_id", rs.getString("documento_id")); jObject.put("nombre", rs.getString("nombre")); jObject.put("ciudad", rs.getString("ciudad")); jObject.put("direccion", rs.getString("direccion")); jObject.put("telefono", rs.getString("telefono")); jObject.put("volumen_maximo", rs.getInt("volumen_maximo")); jObject.put("tiempo_de_entrega", rs.getInt("tiempo_de_entrega")); jObject.put("representante_legal", rs.getInt("representante_legal")); jArray.add(jObject); } st.close(); } cerrarConexion(); return jArray; } @POST @Path("/desactivarEstacion") public JSONObject desactivarEstacion(JSONObject jO) throws Exception { abrirConexion(); // Contar activos st2 String query2 = "select count(*) as cuenta from estacion where ESTADO='activo'"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query2); Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(query2); int num_est_activas = 0; while (rs2.next()) { num_est_activas = rs2.getInt("CUENTA"); System.out.println("num_est_activas: " + num_est_activas); } st2.close(); // Contar etapas st3 String query3 = "select count(*) as cuenta from etapa_de_produccion"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query3); Statement st3 = con.createStatement(); ResultSet rs3 = st3.executeQuery(query3); int num_etapas = 0; while (rs3.next()) { num_etapas = rs3.getInt("CUENTA"); System.out.println("num_etapas: " + num_etapas); } st3.close(); // Verificacion: no hay estaciones activas if (num_est_activas == 1) { JSONObject jRespuesta = new JSONObject(); jRespuesta.put("Respuesta", "No se puede borrar estacion"); rollback(); return jRespuesta; } // Cambiar estado st1 int estacion_codigo = Integer.parseInt(jO.get("codigo").toString()); String query1 = "UPDATE ESTACION SET ESTADO = 'inactivo' WHERE CODIGO = " + estacion_codigo; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query1); System.out.println("Estaciones actualizadas"); Statement st1 = con.createStatement(); st1.executeUpdate(query1); st1.close(); // Borrar relaciones etapa_estacion st4 String query4 = "DELETE FROM ETAPA_ESTACION"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query4); Statement st4 = con.createStatement(); st4.executeUpdate(query4); st4.close(); // Seleccionar etapas st5 String query5 = ("select * from etapa_de_produccion"); System.out.println(query5); Statement st5 = con.createStatement(); ResultSet rs5 = st5.executeQuery(query5); int etapas[] = new int[num_etapas]; int temp = 0; int i = 0; while (rs5.next()) { System.out.println("indice: " + i); temp = rs5.getInt("NUMERO_SECUENCIA"); System.out.println("etapas[" + i + "]" + " = " + temp); etapas[i] = temp; i++; } System.out.println(etapas); st5.close(); // Seleccionar estaciones st6 String query6 = ("select * from estacion where ESTADO = 'activo'"); System.out.println(query6); Statement st6 = con.createStatement(); ResultSet rs6 = st6.executeQuery(query6); int estaciones[] = new int[num_est_activas - 1]; temp = 0; i = 0; while (rs6.next()) { temp = rs6.getInt("CODIGO"); System.out.println("estaciones[" + i + "]" + " = " + temp); estaciones[i] = temp; i++; } System.out.println(estaciones); st6.close(); // Crear relaciones st7 String query7 = (""); System.out.println(query7); Statement st7 = null; int i_estacion = 0; for (int k = 0; k < etapas.length; k++) { if (i_estacion == estaciones.length) { i_estacion = 0; } System.out.println("Etapa: " + k); System.out.println("Estacion: " + i_estacion); System.out.println("etapas[k] " + etapas[k]); System.out.println("estaciones[i_estacion] " + estaciones[i_estacion]); query7 = ("INSERT INTO ETAPA_ESTACION (ETAPA_ID, ESTACION_ID) VALUES ('" + etapas[k] + "', '" + estaciones[i_estacion] + "')"); System.out.println(query7); st7 = con.createStatement(); st7.executeUpdate(query7); i_estacion++; } // Cerrar conexion cerrarConexion(); JSONObject jRespuestaOk = new JSONObject(); jRespuestaOk.put("Respuesta", "Proceso correcto"); return jRespuestaOk; } // activarEstacion @POST @Path("/activarEstacion") public JSONObject activarEstacion(JSONObject jO) throws Exception { abrirConexion(); // Contar activos st2 String query2 = "select count(*) as cuenta from estacion where ESTADO='activo'"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query2); Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(query2); int num_est_activas = 0; while (rs2.next()) { num_est_activas = rs2.getInt("CUENTA"); System.out.println("num_est_activas: " + num_est_activas); } st2.close(); // Contar etapas st3 String query3 = "select count(*) as cuenta from etapa_de_produccion"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query3); Statement st3 = con.createStatement(); ResultSet rs3 = st3.executeQuery(query3); int num_etapas = 0; while (rs3.next()) { num_etapas = rs3.getInt("CUENTA"); System.out.println("num_etapas: " + num_etapas); } st3.close(); // Verificacion: no hay estaciones activas /* if(num_est_activas == 1) { JSONObject jRespuesta = new JSONObject(); jRespuesta.put("Respuesta", "No se puede borrar estacion"); rollback(); return jRespuesta; } */ // Cambiar estado st1 int estacion_codigo = Integer.parseInt(jO.get("codigo").toString()); String query1 = "UPDATE ESTACION SET ESTADO = 'activo' WHERE CODIGO = " + estacion_codigo; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query1); System.out.println("Estaciones actualizadas"); Statement st1 = con.createStatement(); st1.executeUpdate(query1); st1.close(); // Borrar relaciones etapa_estacion st4 String query4 = "DELETE FROM ETAPA_ESTACION"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query4); Statement st4 = con.createStatement(); st4.executeUpdate(query4); st4.close(); // Seleccionar etapas st5 String query5 = ("select * from etapa_de_produccion"); System.out.println(query5); Statement st5 = con.createStatement(); ResultSet rs5 = st5.executeQuery(query5); int etapas[] = new int[num_etapas]; int temp = 0; int i = 0; while (rs5.next()) { System.out.println("indice: " + i); temp = rs5.getInt("NUMERO_SECUENCIA"); System.out.println("etapas[" + i + "]" + " = " + temp); etapas[i] = temp; i++; } System.out.println(etapas); st5.close(); // Seleccionar estaciones st6 String query6 = ("select * from estacion where ESTADO = 'activo'"); System.out.println(query6); Statement st6 = con.createStatement(); ResultSet rs6 = st6.executeQuery(query6); int estaciones[] = new int[num_est_activas + 1]; temp = 0; i = 0; while (rs6.next()) { temp = rs6.getInt("CODIGO"); System.out.println("estaciones[" + i + "]" + " = " + temp); estaciones[i] = temp; i++; } System.out.println(estaciones); st6.close(); // Crear relaciones st7 String query7 = (""); System.out.println(query7); Statement st7 = null; int i_estacion = 0; for (int k = 0; k < etapas.length; k++) { if (i_estacion == estaciones.length) { i_estacion = 0; } System.out.println("Etapa: " + k); System.out.println("Estacion: " + i_estacion); System.out.println("etapas[k] " + etapas[k]); System.out.println("estaciones[i_estacion] " + estaciones[i_estacion]); query7 = ("INSERT INTO ETAPA_ESTACION (ETAPA_ID, ESTACION_ID) VALUES ('" + etapas[k] + "', '" + estaciones[i_estacion] + "')"); System.out.println(query7); st7 = con.createStatement(); st7.executeUpdate(query7); i_estacion++; } // Cerrar conexion cerrarConexion(); JSONObject jRespuestaOk = new JSONObject(); jRespuestaOk.put("Respuesta", "Proceso correcto"); return jRespuestaOk; } @POST @Path("/verPedido") public JSONObject verPedido(JSONObject jP) throws Exception { try { int idPedido = (int) jP.get("id_pedido"); JSONObject jO = new JSONObject(); abrirConexion(); String sql = "select * from PEDIDO_PRODUCTO where ID = " + idPedido; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); if (rs.next()) { jO.put("id", rs.getInt("id")); jO.put("estado", rs.getString("estado")); jO.put("cantidad_producto", rs.getInt("cantidad_producto")); jO.put("fecha_solicitud", rs.getDate("fecha_solicitud")); jO.put("fecha_esperada_entrega", rs.getDate("fecha_esperada_entrega")); jO.put("fecha_entrega", rs.getDate("fecha_entrega")); sql = "select CLIENTE.NOMBRE,CLIENTE.NUMERO_REGISTRO,CLIENTE.CIUDAD,CLIENTE.DIRECCION" + ",CLIENTE.REPRESENTANTE_LEGAL,CLIENTE.TELEFONO from PEDIDO_PRODUCTO inner join " + "CLIENTE on PEDIDO_PRODUCTO.ID_CLIENTE=CLIENTE.NUMERO_REGISTRO WHERE " + "PEDIDO_PRODUCTO.ID=" + idPedido; System.out.println("-----------------------------------------------------------------"); System.out.println("Ver Pedido - Cliente"); System.out.println(sql); System.out.println("-----------------------------------------------------------------"); Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); escribirEnLog(sql); // Cliente JSONObject jCliente = new JSONObject(); if (rs2.next()) { jCliente.put("numero_registro", rs2.getInt("numero_registro")); jCliente.put("nombre", rs2.getString("nombre")); jCliente.put("ciudad", rs2.getString("ciudad")); jCliente.put("direccion", rs2.getString("direccion")); jCliente.put("telefono", rs2.getString("telefono")); jCliente.put("representante_legal", rs2.getInt("representante_legal")); } jO.put("cliente", jCliente); st2.close(); // Items sql = "select * from ITEM inner join PRODUCTO on ITEM.NOMBRE_PRODUCTO=PRODUCTO.NOMBRE " + "where ID_PEDIDO=" + idPedido; st2 = con.createStatement(); rs2 = st2.executeQuery(sql); escribirEnLog(sql); JSONArray jItems = new JSONArray(); while (rs2.next()) { JSONObject jItem = new JSONObject(); jItem.put("id", rs2.getInt("id")); jItem.put("nombre_producto", rs2.getString("nombre_producto")); jItem.put("estado", rs2.getString("estado")); jItem.put("etapa", rs2.getInt("etapa")); jItem.put("costo_de_venta", rs2.getInt("costo_de_venta")); jItems.add(jItem); } jO.put("productos", jItems); st2.close(); //Materias Primas sql = "select (items*cantidad_unidades)as cantidad,id_materia_prima from " + "(select ITEM.NOMBRE_PRODUCTO as id_producto, count(*) as items " + "from ITEM where ID_PEDIDO=" + idPedido + " group by NOMBRE_PRODUCTO)" + " natural inner join MATERIAS_PRIMAS_PRODUCTO"; st2 = con.createStatement(); rs2 = st2.executeQuery(sql); escribirEnLog(sql); JSONArray jMateriasPrimas = new JSONArray(); while (rs2.next()) { JSONObject jMateriaPrima = new JSONObject(); jMateriaPrima.put("materia", rs2.getString("id_materia_prima")); jMateriaPrima.put("cantidad", rs2.getInt("cantidad")); jMateriasPrimas.add(jMateriaPrima); } jO.put("materias_primas", jMateriasPrimas); st2.close(); //Componentes sql = "select * from COMPONENTE_ITEM where ID_PEDIDO_PRODUCTO=" + idPedido; st2 = con.createStatement(); rs2 = st2.executeQuery(sql); escribirEnLog(sql); JSONArray jComponentes = new JSONArray(); while (rs2.next()) { JSONObject jComponente = new JSONObject(); jComponente.put("id", rs2.getInt("id")); jComponente.put("componente", rs2.getString("componente")); jComponente.put("unidades", rs2.getInt("unidades")); jComponente.put("estado", rs2.getString("estado")); jComponentes.add(jComponente); } jO.put("componentes", jComponentes); st2.close(); } st.close(); return jO; } catch (Exception e) { rollback(); e.printStackTrace(); throw new Exception("Error en la base de datos"); } } @POST @Path("/verProveedor") public JSONObject verProveedor(JSONObject jP) throws Exception { try { String idProveedor = jP.get("id_proveedor").toString(); abrirConexion(); JSONObject jResp = new JSONObject(); String sql = "select * from PROVEEDOR where DOCUMENTO_ID='" + idProveedor + "'"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); if (rs.next()) { jResp.put("documento_id", rs.getString("documento_id")); jResp.put("nombre", rs.getString("nombre")); jResp.put("ciudad", rs.getString("ciudad")); jResp.put("direccion", rs.getString("direccion")); jResp.put("telefono", rs.getString("telefono")); jResp.put("volumen_maximo", rs.getInt("volumen_maximo")); jResp.put("tiempo_de_entrega", rs.getInt("tiempo_de_entrega")); jResp.put("representante_legal", rs.getInt("representante_legal")); //Materias Primas sql = "select * from MATERIA_PRIMA where PROOVEDOR_ID ='" + idProveedor + "'"; Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(sql); escribirEnLog(sql); JSONArray jMaterias = new JSONArray(); while (rs2.next()) { JSONObject jMateria = new JSONObject(); jMateria.put("nombre", rs2.getString("nombre")); jMateria.put("u_medida", rs2.getString("u_medida")); jMateria.put("tipo", rs2.getString("tipo")); jMaterias.add(jMateria); } jResp.put("materias_primas", jMaterias); st2.close(); //Componentes sql = "select * from COMPONENTE where PROOVEDOR_ID ='" + idProveedor + "'"; st2 = con.createStatement(); rs2 = st2.executeQuery(sql); escribirEnLog(sql); JSONArray jComponentes = new JSONArray(); while (rs2.next()) { JSONObject jComponente = new JSONObject(); jComponente.put("nombre", rs2.getString("nombre")); jComponente.put("tipo", rs2.getString("tipo")); jComponentes.add(jComponente); } jResp.put("componentes", jComponentes); st2.close(); // Productos sql = "select * from MATERIAS_PRIMAS_PRODUCTO inner join MATERIA_PRIMA on " + "MATERIAS_PRIMAS_PRODUCTO.ID_MATERIA_PRIMA=MATERIA_PRIMA.NOMBRE where " + "MATERIA_PRIMA.PROOVEDOR_ID='" + idProveedor + "'"; st2 = con.createStatement(); rs2 = st2.executeQuery(sql); escribirEnLog(sql); JSONArray jProductos = new JSONArray(); while (rs2.next()) { JSONObject jProducto = new JSONObject(); jProducto.put("id_producto", rs2.getString("id_producto")); jProducto.put("cantidad_unidades", rs2.getInt("cantidad_unidades")); jProductos.add(jProducto); } jResp.put("productos", jProductos); st2.close(); } st.close(); return jResp; } catch (Exception e) { rollback(); e.printStackTrace(); throw new Exception("Error en la base de datos"); } } @POST @Path("/consultarClientes") public JSONArray consultarCliente(JSONObject jP) throws Exception { JSONArray jArray = new JSONArray(); abrirConexion(); System.out.println(jP); String criterio = jP.get("Criterio").toString(); System.out.println("Criterio: " + criterio); if (criterio.equalsIgnoreCase("Nombre")) { String nombre = jP.get("Nombre").toString(); String sql = "select * from CLIENTE inner join PEDIDO_PRODUCTO on CLIENTE.NUMERO_REGISTRO = PEDIDO_PRODUCTO.ID_CLIENTE where NOMBRE LIKE '%" + nombre + "%'"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(sql); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); int num_act = -1; int num = -1; while (rs.next()) { JSONObject jObject = new JSONObject(); num = rs.getInt("numero_registro"); if (num != num_act) { jObject.put("numero_registro", num); jObject.put("nombre", rs.getString("nombre")); jObject.put("ciudad", rs.getString("ciudad")); jObject.put("direccion", rs.getString("direccion")); jObject.put("telefono", rs.getString("telefono")); jObject.put("representante_legal", rs.getInt("representante_legal")); num_act = num; } else { jObject.put("numero_registro", ""); jObject.put("nombre", ""); jObject.put("ciudad", ""); jObject.put("direccion", ""); jObject.put("telefono", ""); jObject.put("representante_legal", ""); } jObject.put("id", rs.getInt("id")); jObject.put("fecha_esperada_entrega", rs.getDate("fecha_esperada_entrega")); jObject.put("fecha_entrega", rs.getDate("fecha_entrega")); jObject.put("estado", rs.getString("estado")); jObject.put("cantidad_producto", rs.getInt("cantidad_producto")); jObject.put("fecha_solicitud", rs.getDate("fecha_solicitud")); jArray.add(jObject); } st.close(); } else { String ciudad = jP.get("Ciudad").toString(); String sql = "select * from CLIENTE inner join PEDIDO_PRODUCTO on CLIENTE.NUMERO_REGISTRO = PEDIDO_PRODUCTO.ID_CLIENTE where CIUDAD LIKE '%" + ciudad + "%'"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(sql); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); int num_act = -1; int num = -1; while (rs.next()) { JSONObject jObject = new JSONObject(); num = rs.getInt("numero_registro"); if (num != num_act) { jObject.put("numero_registro", num); jObject.put("nombre", rs.getString("nombre")); jObject.put("ciudad", rs.getString("ciudad")); jObject.put("direccion", rs.getString("direccion")); jObject.put("telefono", rs.getString("telefono")); jObject.put("representante_legal", rs.getInt("representante_legal")); num_act = num; } else { jObject.put("numero_registro", ""); jObject.put("nombre", ""); jObject.put("ciudad", ""); jObject.put("direccion", ""); jObject.put("telefono", ""); jObject.put("representante_legal", ""); } jObject.put("id", rs.getInt("id")); jObject.put("fecha_esperada_entrega", rs.getDate("fecha_esperada_entrega")); jObject.put("fecha_entrega", rs.getDate("fecha_entrega")); jObject.put("estado", rs.getString("estado")); jObject.put("cantidad_producto", rs.getInt("cantidad_producto")); jObject.put("fecha_solicitud", rs.getDate("fecha_solicitud")); jArray.add(jObject); } st.close(); } cerrarConexion(); return jArray; } @POST @Path("/consultarPedidosRFC10") public JSONArray consultarPedidosRFC10(JSONObject jP) throws Exception { JSONArray jArray = new JSONArray(); abrirConexion(); System.out.println("Parametro de consultarPedidosRFC10"); System.out.println(jP); String tipo = jP.get("Tipo").toString(); System.out.println("Tipo: " + tipo); int costo = Integer.parseInt(jP.get("Costo").toString()); System.out.println("Costo: " + costo); String sql = "select * from PEDIDO_PRODUCTO " + "where ID IN (" + "select ID from (" + "select * from PEDIDO_PRODUCTO " + "inner join PEDIDO_USA_MATERIA_PRIMA " + "on ID = ID_PEDIDO) " + "inner join MATERIA_PRIMA " + "on NOMBRE = NOMBRE_MATERIA_PRIMA " + "where PRECIO > " + costo + " AND tipo = '" + tipo + "')"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(sql); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("id", rs.getInt("id")); jObject.put("fecha_esperada_entrega", rs.getDate("fecha_esperada_entrega")); jObject.put("fecha_entrega", rs.getDate("fecha_entrega")); jObject.put("estado", rs.getString("estado")); jObject.put("cantidad_producto", rs.getInt("cantidad_producto")); jObject.put("fecha_solicitud", rs.getDate("fecha_solicitud")); jArray.add(jObject); } st.close(); cerrarConexion(); return jArray; } @POST @Path("/consultarPedidosRFC11") public JSONArray consultarPedidosRFC11(JSONObject jP) throws Exception { JSONArray jArray = new JSONArray(); abrirConexion(); System.out.println("Parametro de consultarPedidosRFC11"); System.out.println(jP); String material = jP.get("Material").toString(); System.out.println("Material: " + material); String sql = "select * from PEDIDO_PRODUCTO " + "where ID IN (" + "select ID from (" + "select * from PEDIDO_PRODUCTO " + "inner join PEDIDO_USA_MATERIA_PRIMA " + "on ID = ID_PEDIDO) " + "inner join MATERIA_PRIMA " + "on NOMBRE = NOMBRE_MATERIA_PRIMA " + "where NOMBRE = '" + material + "')"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(sql); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("id", rs.getInt("id")); jObject.put("fecha_esperada_entrega", rs.getDate("fecha_esperada_entrega")); jObject.put("fecha_entrega", rs.getDate("fecha_entrega")); jObject.put("estado", rs.getString("estado")); jObject.put("cantidad_producto", rs.getInt("cantidad_producto")); jObject.put("fecha_solicitud", rs.getDate("fecha_solicitud")); jArray.add(jObject); } st.close(); cerrarConexion(); return jArray; } public void escribirEnLog(String instruccion) { // try { // // File file = new File("H:\\logs\\log.txt"); // // // if file doesnt exists, then create it // //if (!file.exists()) { // // file.createNewFile(); // //} // FileOutputStream fos = new FileOutputStream(file, true); // PrintWriter out = new PrintWriter(fos); // //FileWriter fw = new FileWriter(file.getAbsoluteFile()); // //BufferedWriter bw = new BufferedWriter(fw); // out.println(instruccion); // out.close(); // // System.out.println("Done"); // // } catch (IOException e) { // e.printStackTrace(); // } } @POST @Path("/consultarEtapasRangoFechaRFC8y9") public JSONObject consultarEtapasRangoFechaRFC8y9(JSONObject jP) throws Exception { try { abrirConexion(); JSONObject jreturn = new JSONObject(); String igualdad = (jP.get("igualdad").toString().equals("SI")) ? "=" : "!="; DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = format.parse(jP.get("fecha1").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String fecha1 = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); String fecha1Env = (cEsp.get(GregorianCalendar.MONTH) + 1) + "/" + (cEsp.get(GregorianCalendar.DAY_OF_MONTH)) + "/" + cEsp.get(GregorianCalendar.YEAR); date = format.parse(jP.get("fecha2").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 cEsp = new GregorianCalendar(); cEsp.setTime(date); String fecha2 = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); String fecha2Env = (cEsp.get(GregorianCalendar.MONTH) + 1) + "/" + (cEsp.get(GregorianCalendar.DAY_OF_MONTH)) + "/" + cEsp.get(GregorianCalendar.YEAR); String criterio = jP.get("criterio").toString(); String valor = jP.get("valor").toString(); JSONArray jResp = new JSONArray(); // RC12-solicitud-id-fechaInicial-FechaFinal Send send = new Send(); String mensaje = "RC12-" + criterio + "-" + valor + "-" + fecha1Env + "-" + fecha2Env; System.out.println("Mensaje a enviar " + mensaje); send.enviar(mensaje); send.close(); if (criterio.equals("materia prima")) { Statement st = con.createStatement(); String sql = "select* from " + "(select * from materias_primas_producto where id_materia_prima" + igualdad + "'" + valor + "') " + " inner join " + " (select * from " + " (select codigo_secuencia from ETAPA_FECHA where FECHA>=TO_DATE('" + fecha1 + "','dd-mm-yyyy') " + "AND FECHA<=TO_DATE('" + fecha2 + "','dd-mm-yyyy') " + " group by CODIGO_SECUENCIA)c " + " inner join " + " ETAPA_DE_PRODUCCION " + " on ETAPA_DE_PRODUCCION.numero_secuencia=c.codigo_secuencia) " + " on " + " id_producto = nombre_producto"; System.out.println("RFC8 ----------- QUERY\n" + sql); ResultSet rs = st.executeQuery(sql); while (rs.next()) { JSONObject jO = new JSONObject(); jO.put("id_producto", rs.getString("id_producto")); jO.put("id_etapa", rs.getInt("numero_secuencia")); jO.put("descripcion", rs.getString("descripcion")); jO.put("numero_etapa", rs.getInt("etapa")); jO.put("materia_prima", rs.getString("id_materia_prima")); jResp.add(jO); } } else if (criterio.equals("tipo material")) { Statement st = con.createStatement(); String sql = "select* from \n" + " (select id_producto,tipo from MATERIA_PRIMA inner join MATERIAS_PRIMAS_PRODUCTO on " + "NOMBRE=ID_MATERIA_PRIMA \n" + " where tipo" + igualdad + "'" + valor + "' \n" + " )\n" + " inner join \n" + " (select * from \n" + " (select codigo_secuencia from ETAPA_FECHA where FECHA>=TO_DATE('" + fecha1 + "','dd-mm-yyyy') " + "AND FECHA<=TO_DATE('" + fecha2 + "','dd-mm-yyyy') \n" + " group by CODIGO_SECUENCIA)c \n" + " inner join\n" + " ETAPA_DE_PRODUCCION\n" + " on ETAPA_DE_PRODUCCION.numero_secuencia=c.codigo_secuencia)\n" + " on\n" + " id_producto = nombre_producto"; System.out.println("RFC8 ----------- QUERY\n" + sql); ResultSet rs = st.executeQuery(sql); while (rs.next()) { JSONObject jO = new JSONObject(); jO.put("id_producto", rs.getString("id_producto")); jO.put("id_etapa", rs.getInt("numero_secuencia")); jO.put("descripcion", rs.getString("descripcion")); jO.put("numero_etapa", rs.getInt("etapa")); jO.put("tipo_material", rs.getString("tipo")); jResp.add(jO); } } else if (criterio.equals("pedido")) { Statement st = con.createStatement(); String sql = "select* from \n" + " (select id_producto,id_pedido from ITEM inner join MATERIAS_PRIMAS_PRODUCTO on " + "ITEM.NOMBRE_PRODUCTO=MATERIAS_PRIMAS_PRODUCTO.ID_PRODUCTO\n" + " where ITEM.ID_PEDIDO" + igualdad + valor + "\n" + " )\n" + " inner join \n" + " (select * from \n" + " (select codigo_secuencia from ETAPA_FECHA where FECHA>=TO_DATE('" + fecha1 + "','dd-mm-yyyy') " + "AND FECHA<=TO_DATE('" + fecha2 + "','dd-mm-yyyy') \n" + " group by CODIGO_SECUENCIA)c \n" + " inner join\n" + " ETAPA_DE_PRODUCCION\n" + " on ETAPA_DE_PRODUCCION.numero_secuencia=c.codigo_secuencia)\n" + " on\n" + " id_producto = nombre_producto"; System.out.println("RFC8 ----------- QUERY\n" + sql); ResultSet rs = st.executeQuery(sql); while (rs.next()) { JSONObject jO = new JSONObject(); jO.put("id_producto", rs.getString("id_producto")); jO.put("id_etapa", rs.getInt("numero_secuencia")); jO.put("descripcion", rs.getString("descripcion")); jO.put("numero_etapa", rs.getInt("etapa")); jO.put("id_pedido", rs.getInt("id_pedido")); jResp.add(jO); } } Long milis = System.currentTimeMillis(); while (System.currentTimeMillis() - milis < 10000) { for (int i = 0; i < buzon.size(); i++) { if (buzon.get(i).startsWith("RFC12R$")) { // RFC12$elemento1Tupla1-elemento2Tupla1-elemento3Tupla1/elemento1Tupla2-elemento2Tupla2 String str = buzon.get(i).substring(7); buzon.remove(i); jreturn.put("otraLista", str); } } } cerrarConexion(); jreturn.put("lista", jResp); return jreturn; } catch (Exception e) { rollback(); throw e; } } @GET @Path("/inicializarColas") public String inicializarColas() throws JMSException, NamingException { InitialContext init = new InitialContext(); this.cf = (ConnectionFactory) init.lookup("RemoteConnectionFactory"); this.d = (Destination) init.lookup("queue/queue1"); this.c = (javax.jms.Connection) this.cf.createConnection("guest123", "guest"); ((javax.jms.Connection) this.c).start(); this.s = ((javax.jms.Connection) this.c).createSession(false, Session.AUTO_ACKNOWLEDGE); mc = s.createConsumer(d); this.mc.setMessageListener(this); buzon = new ArrayList<String>(); return "Inicializo bien"; } public String receive() throws JMSException { TextMessage msg = (TextMessage) mc.receive(); return msg.getText(); } public void close() throws JMSException { this.c.close(); } public void onMessage(Message message) { try { TextMessage text = (TextMessage) message; String respuesta = text.getText(); String txt = respuesta; System.out.println("El mensaje de Jose fue: " + respuesta); System.out.println("onMessage"); System.out.println(respuesta.startsWith("jp-pe")); System.out.println(respuesta.equals("jp-pe")); if (txt.startsWith("RF18-")) { String[] params = txt.split("-"); String[] fecha = params[1].split("/"); Calendar c = new GregorianCalendar(Integer.parseInt(fecha[2]), Integer.parseInt(fecha[0]), Integer.parseInt(fecha[1])); JSONObject jp = new JSONObject(); jp.put("fechaEsperada", fecha[2] + "-" + ((fecha[0].length() == 1) ? ("0" + fecha[0]) : fecha[0]) + "-" + fecha[1]); jp.put("nombre", params[2]); jp.put("cantidad", params[3]); jp.put("id_cliente", params[4]); JSONObject jO = registrarPedido2(jp); Send env = new Send(); env.enviar("RF18R-" + jO.get("id_pedido") + "-" + jO.get("Respuesta")); env.close(); } else if (txt.startsWith("RF18R-")) { buzon.add(txt); } else if (txt.equals("jp-pe")) { System.out.println("Entro a jp-pe"); Send env = new Send(); env.enviar(darEtapasCuentaJose()); env.close(); } else if (txt.startsWith("jp-agr")) { System.out.println("Entro a agregar de Jose a Pacho"); String[] arreglo = txt.split(":"); insertarRegEtapaEstacionJose(arreglo[2], Integer.parseInt(arreglo[1])); } else if (txt.startsWith("jp-del")) { System.out.println("Entro a eliminar de Jose a Pacho"); String[] arreglo = txt.split(":"); borrarRegEtapaEstacionJose(arreglo[2], Integer.parseInt(arreglo[1])); } else if (txt.startsWith("jp-x")) { System.out.println("Entro a jp-x"); buzon.add(txt); System.out.println("Se anade al buzon: " + txt); System.out.println("Tamano buzon"); System.out.println(buzon.size()); } else if (txt.startsWith("jp-r")) { System.out.println("Entro a jp-r"); buzon.add(txt); System.out.println("Se anade al buzon: " + txt); System.out.println("Tamano buzon"); System.out.println(buzon.size()); } else if (txt.startsWith("jp-ret")) { System.out.println("Entro a jp-ret"); buzon.add(txt); System.out.println("Se anade al buzon: " + txt); System.out.println("Tamano buzon"); System.out.println(buzon.size()); } else if (txt.startsWith("RFC12R$")) { System.out.println("Entro a RFC12R$"); buzon.add(txt); } else if (txt.startsWith("RC12-")) { System.out.println("Entro a RC12-"); //RC12-solicitud-id-fechaInicial-FechaFinal String s[] = txt.split("-"); String criterio = s[1]; String valor = s[2]; String fecha[] = s[3].split("/"); Calendar c = new GregorianCalendar(Integer.parseInt(fecha[2]), Integer.parseInt(fecha[0]), Integer.parseInt(fecha[1])); Date fechaI = c.getTime(); fecha = s[4].split("/"); c = new GregorianCalendar(Integer.parseInt(fecha[2]), Integer.parseInt(fecha[0]), Integer.parseInt(fecha[1])); Date fechaF = c.getTime(); JSONObject jParam = new JSONObject(); jParam.put("criterio", criterio); jParam.put("valor", valor); jParam.put("fecha1", fechaI); jParam.put("fecha2", fechaF); String mensaje = consultarEtapasRangoFechaRFC8y9AEnviar(jParam); System.out.println("Respuesta a enviar RFC12: " + mensaje); //Enviar mis etapas Send send = new Send(); send.enviar("RFC12$" + mensaje); send.close(); } } catch (Exception e) { e.printStackTrace(); } } @GET @Path("/metodo4") public String metodo4() { try { Send env = new Send(); env.enviar("Mensaje de Jonathan y Francisco"); env.close(); return "Bien"; } catch (Exception e) { e.printStackTrace(); return "Mal"; } } public JSONObject registrarPedido2(JSONObject jO) throws Exception { try { JSONObject jRespuesta = new JSONObject(); String resp = ""; System.out.println("Registrar Pedido 2 " + jO.toJSONString()); abrirConexion(); String lock = "lock table " + "pedido_producto" + " in exclusive mode"; Statement stmt1 = con.createStatement(); stmt1.execute(lock); stmt1.close(); DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); System.out.println(jO.get("fechaEsperada").toString()); java.util.Date date = format.parse(jO.get("fechaEsperada").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String sFecha = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); System.out.println("Fecha: " + sFecha); String nombreProducto = jO.get("nombre").toString(); int cantidad = Integer.parseInt(jO.get("cantidad").toString()); int id_cliente = Integer.parseInt(jO.get("id_cliente").toString()); Calendar c = new GregorianCalendar(); String fechaSolicitud = c.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (c.get(GregorianCalendar.MONTH) + 1) + "-" + c.get(GregorianCalendar.YEAR); String fechaEntrega = c.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (c.get(GregorianCalendar.MONTH) + 2) + "-" + c.get(GregorianCalendar.YEAR); System.out.println("FEcha actual " + fechaSolicitud); String sql = "select max (id) as MAXIMO from PEDIDO_PRODUCTO"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); escribirEnLog(sql); int id_pedido = 1; if (rs.next()) { id_pedido = rs.getInt("MAXIMO") + 1; jRespuesta.put("id_pedido", id_pedido); System.out.println("JSON respuesta " + jRespuesta.toString()); //Crear pedido nuevo sql = "INSERT INTO PEDIDO_PRODUCTO (id,FECHA_ESPERADA_ENTREGA,Estado,cantidad_producto" + ",id_cliente,fecha_solicitud) VALUES (" + id_pedido + ",TO_DATE" + "('" + sFecha + "','DD-MM-YYYY'),'Espera'," + cantidad + "," + id_cliente + " ,TO_DATE('" + fechaSolicitud + "','DD-MM-YYYY'))"; System.out.println("----------------------Query-----------------------"); System.out.println(sql); Statement st2 = con.createStatement(); st2.executeUpdate(sql); escribirEnLog(sql); st2.close(); } st.close(); int productosReservados = reservarProductoBodega(nombreProducto, cantidad, id_pedido); System.out.println("Productos reservados " + productosReservados); if (productosReservados == cantidad) { //Modificar fecha entrega Statement st3 = con.createStatement(); sql = "update PEDIDO_PRODUCTO set FECHA_ENTREGA=TO_DATE('" + sFecha + "','DD-MM-YYYY')," + "ESTADO='En Bodega'" + "where id=" + id_pedido; System.out.println("------------------QUERY----------------------------"); System.out.println(sql); st3.executeUpdate(sql); escribirEnLog(sql); st3.close(); resp = "En Bodega"; } else { // Verificar que la cantidad disminuye dependiendo de cuantos productos ya estn en bodega cantidad = cantidad - productosReservados; //Verificar que haya estacin de produccion disponible sql = "select * from ESTACION where ESTADO='Disponible' AND CAPACIDAD > " + cantidad; System.out.println("------------------QUERY----------------------------"); System.out.println(sql); Statement st6 = con.createStatement(); rs = st6.executeQuery(sql); boolean hayEstaciones = false; if (rs.next()) { int codigo = rs.getInt("CODIGO"); sql = "update ESTACION set ESTADO='Reservado',ID_PEDIDO=" + id_pedido + "WHERE CODIGO=" + codigo; Statement st7 = con.createStatement(); st7.executeUpdate(sql); hayEstaciones = true; st7.close(); } st6.close(); if (hayEstaciones) { //Reservar recursos(materias primas) o pedir suministros int numProductosPotencial = Integer.MAX_VALUE; System.out.println("Nombre producto: " + nombreProducto); //Averiguar Componentes en bodega sql = "select * from COMPONENTES_PRODUCTO WHERE id_producto='" + nombreProducto + "'"; Statement st3 = con.createStatement(); rs = st3.executeQuery(sql); while (rs.next()) { String id_componente = rs.getString("id_componente"); int cantidad_unidades = rs.getInt("cantidad_unidades"); int numComponentes = cantidadComponentesBodega(id_componente); if (numComponentes >= cantidad_unidades) { int alcanzanComponentes = numComponentes / cantidad_unidades; numProductosPotencial = Math.min(alcanzanComponentes, numProductosPotencial); } } st3.close(); //Averiguar Materias Primas en bodega sql = "select * from MATERIAS_PRIMAS_PRODUCTO WHERE id_producto='" + nombreProducto + "'"; st3 = con.createStatement(); rs = st3.executeQuery(sql); while (rs.next()) { String id_materia = rs.getString("id_materia_prima"); int cantidad_unidades = rs.getInt("cantidad_unidades"); int numMateriasBodega = cantidadMateriasPrimasBodega(id_materia); if (numMateriasBodega >= cantidad_unidades) { int alcanzanMaterias = numMateriasBodega / cantidad_unidades; numProductosPotencial = Math.min(alcanzanMaterias, numProductosPotencial); } } st3.close(); System.out.println("Numero productos se pueden hacer con bodega " + numProductosPotencial); if (numProductosPotencial != Integer.MAX_VALUE && numProductosPotencial >= cantidad) { //Reservar componentes sql = "select * from COMPONENTES_PRODUCTO WHERE id_producto='" + nombreProducto + "'"; st3 = con.createStatement(); rs = st3.executeQuery(sql); while (rs.next()) { String id_componente = rs.getString("id_componente"); int cantidad_unidades = rs.getInt("cantidad_unidades"); reservarComponenteBodega(id_componente, cantidad * cantidad_unidades, id_pedido); } st3.close(); // Reservar materias primas sql = "select * from MATERIAS_PRIMAS_PRODUCTO WHERE id_producto='" + nombreProducto + "'"; st3 = con.createStatement(); rs = st3.executeQuery(sql); while (rs.next()) { String id_materia = rs.getString("id_materia_prima"); int cantidad_unidades = rs.getInt("cantidad_unidades"); reservarMateriaPrimaBodega(id_materia, cantidad * cantidad_unidades, id_pedido); } st3.close(); //Falta fecha esperada crearItemsReservadosPedido(nombreProducto, id_pedido, cantidad); resp = "Espera"; } else { //Poner el pedido en estad ESPERA st3 = con.createStatement(); sql = "update PEDIDO_PRODUCTO set ESTADO='Espera' where id=" + id_pedido; st3.executeUpdate(sql); st3.close(); resp = "Espera"; } } else { resp = "Espera"; } } cerrarConexion(); //return resp; jRespuesta.put("Respuesta", resp); return jRespuesta; } catch (Exception e) { e.printStackTrace(); rollback(); //return "error"; JSONObject jRespuesta = new JSONObject(); jRespuesta.put("Respuesta", "error"); return jRespuesta; } } @GET @Path("/darEtapasCuentaJose") public String darEtapasCuentaJose() throws Exception { JSONArray jArray = new JSONArray(); abrirConexion(); String sql = "select ESTACION_ID, count(*) as num_etapas from ETAPA_ESTACION group by ESTACION_ID"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(sql); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { JSONObject jObject = new JSONObject(); jObject.put("estacion_id", rs.getInt("estacion_id")); jObject.put("num_etapas", rs.getInt("num_etapas")); System.out.println(jObject); jArray.add(jObject); } System.out.println(jArray); st.close(); cerrarConexion(); JSONObject jObject = new JSONObject(); jObject.put("arreglo", jArray); return "pj-r::" + jObject; } @GET @Path("/borrarRegEtapaEstacionJose/{id_etapa}/{id_estacion}") public String borrarRegEtapaEstacionJose(@PathParam("id_etapa") String etapaId, @PathParam("id_estacion") int estacionId) throws Exception { abrirConexion(); String sql = "DELETE FROM ETAPA_ESTACION WHERE ETAPA_ID='" + etapaId + "' AND ESTACION_ID=" + estacionId; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(sql); Statement st = con.createStatement(); st.executeQuery(sql); st.close(); cerrarConexion(); return "Bien"; } @GET @Path("/insertarRegEtapaEstacionJose/{id_etapa}/{id_estacion}") public String insertarRegEtapaEstacionJose(@PathParam("id_etapa") String etapaId, @PathParam("id_estacion") int estacionId) throws Exception { abrirConexion(); String sql = "INSERT INTO ETAPA_ESTACION (ETAPA_ID,ESTACION_ID) VALUES ('" + etapaId + "'," + estacionId + ")"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(sql); Statement st = con.createStatement(); st.executeQuery(sql); st.close(); cerrarConexion(); return "Bien"; } @GET @Path("/insertarRegEtapaEstacionJose/{id_etapa}/{id_estacion}") public String darProductoMaximoJose(@PathParam("id_etapa") String etapaId, @PathParam("id_estacion") int estacionId) throws Exception { abrirConexion(); String sql = "INSERT INTO ETAPA_ESTACION (ETAPA_ID,ESTACION_ID) VALUES ('" + etapaId + "'," + estacionId + ")"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(sql); Statement st = con.createStatement(); st.executeQuery(sql); st.close(); cerrarConexion(); return "Bien"; } @GET @Path("/metodoPrueba") public String metodoPrueba() { try { Send env = new Send(); env.enviar("pj-pe"); env.close(); System.out.println("Bien"); org.json.JSONObject jRespuesta; Long milis = System.currentTimeMillis(); org.json.JSONArray jArray = new org.json.JSONArray(); while (System.currentTimeMillis() - milis < 10000) { for (int i = 0; i < buzon.size(); i++) { if (buzon.get(i).startsWith("jp-r")) { String[] arregloTexto = buzon.get(i).split("::"); String texto = arregloTexto[1]; jRespuesta = new org.json.JSONObject(texto); jArray = jRespuesta.getJSONArray("arreglo"); } } } return "Retorna " + jArray.toString(); } catch (Exception e) { e.printStackTrace(); return ("Mal"); } } @GET @Path("/esperaPor") public String esperaPor(String parametroEntrada) { try { System.out.println("Entra a espera por"); Long milis = System.currentTimeMillis(); System.out.println("Espera 10 segundo"); System.out.println("Tamano buzon"); System.out.println(buzon.size()); while (System.currentTimeMillis() - milis < 10000) { if (buzon.size() > 0) { System.out.println(buzon.size()); } for (int i = 0; i < buzon.size(); i++) { System.out.println("Recorre buzon"); System.out.println(buzon.get(i)); if (buzon.get(i).startsWith(parametroEntrada)) { return buzon.get(i); } buzon.remove(i); } } System.out.println("Tamano buzon salir metodo:"); System.out.println(buzon.size()); return ""; } catch (Exception e) { e.printStackTrace(); return ("Mal"); } } @GET @Path("/desactivarEstacionJose/{etapaId}") public JSONObject desactivarEstacionJose(@PathParam("etapaId") String etapaId) throws Exception { System.out.println("metodo/////////1"); abrirConexion(); // Contar activos st2 String query2 = "select count(*) as cuenta from estacion where ESTADO='activo'"; //dar la cuenta de estaciones activas Send env = new Send(); env.enviar("pj-spe"); env.close(); String resultado = esperaPor("jp-x"); System.out.println("metodo/////////2"); System.out.println("metodo/////////2" + resultado); String[] arregloTexto = resultado.split("::"); String texto = arregloTexto[1]; org.json.JSONObject jRespuesta = new org.json.JSONObject(texto); ///////////////////////////////////////////////// jArrayEstaciones org.json.JSONArray jArrayEstaciones = jRespuesta.getJSONArray("arreglo"); System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query2); Statement st2 = con.createStatement(); ResultSet rs2 = st2.executeQuery(query2); int num_est_activas = 0; while (rs2.next()) { num_est_activas = rs2.getInt("CUENTA") + jArrayEstaciones.length(); System.out.println("num_est_activas: " + num_est_activas); } st2.close(); // Contar etapas st3 String query3 = "select count(*) as cuenta from etapa_de_produccion"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query3); Statement st3 = con.createStatement(); ResultSet rs3 = st3.executeQuery(query3); int num_etapas = 0; env = new Send(); env.enviar("pj-pet"); env.close(); resultado = esperaPor("jp-ret"); arregloTexto = resultado.split("::"); texto = arregloTexto[1]; System.out.println("metodo/////////3"); System.out.println(texto); jRespuesta = new org.json.JSONObject(texto); ///////////////////////////////////////////////// jArrayEtapas org.json.JSONArray jArrayEtapas = jRespuesta.getJSONArray("arreglo"); while (rs3.next()) { num_etapas = rs3.getInt("CUENTA") + jArrayEtapas.length(); System.out.println("num_etapas: " + num_etapas); } st3.close(); // Cambiar estado st1 String query1 = "UPDATE ESTACION SET ESTADO = 'inactivo' WHERE CODIGO = '" + etapaId + "'"; System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query1); System.out.println("Estaciones actualizadas"); Statement st1 = con.createStatement(); st1.executeUpdate(query1); st1.close(); // Borrar relaciones etapa_estacion st4 String query4 = "DELETE FROM ETAPA_ESTACION"; env = new Send(); env.enviar("pj-tdel"); env.close(); System.out.println("- - - - - - - - - - - - - - - - - Print Query - - - - - - - - - - - - - - - - -"); System.out.println(query4); Statement st4 = con.createStatement(); st4.executeUpdate(query4); st4.close(); // Seleccionar etapas st5 String query5 = ("select * from etapa_de_produccion"); System.out.println(query5); Statement st5 = con.createStatement(); ResultSet rs5 = st5.executeQuery(query5); String etapas[] = new String[num_etapas]; String temp = ""; int i = 0; while (rs5.next()) { System.out.println("indice: " + i); temp = rs5.getString("NUEVO_ID"); System.out.println("etapas[" + i + "]" + " = " + temp); etapas[i] = temp; i++; } System.out.println(etapas); st5.close(); // Seleccionar estaciones st6 String query6 = ("select * from estacion where ESTADO = 'activo'"); System.out.println(query6); Statement st6 = con.createStatement(); ResultSet rs6 = st6.executeQuery(query6); int estaciones[] = new int[num_est_activas]; int temp1 = 0; i = 0; while (rs6.next()) { temp1 = rs6.getInt("CODIGO"); System.out.println("estaciones[" + i + "]" + " = " + temp1); estaciones[i] = temp1; i++; } System.out.println(estaciones); st6.close(); // Crear relaciones st7 String query7 = ""; System.out.println(query7); Statement st7 = null; String[][] arreglo_etapas = new String[etapas.length][2]; System.out.println("arreglo_etapas TAM" + arreglo_etapas.length); for (int j = 0; j < etapas.length - jArrayEtapas.length(); j++) { arreglo_etapas[j][0] = etapas[j]; arreglo_etapas[j][1] = "0"; System.out.println("indice: for 1 " + j); } for (int j = 0; j < jArrayEtapas.length(); j++) { System.out.println(jArrayEtapas.get(j)); System.out.println("indice: for 2 " + (j)); System.out.println("indice: for 2.2 " + (etapas.length - jArrayEtapas.length() + j)); org.json.JSONObject obj = jArrayEtapas.optJSONObject(j); arreglo_etapas[etapas.length - jArrayEtapas.length() + j][0] = obj.getString("numero") + ";" + obj.getString("id_producto"); arreglo_etapas[etapas.length - jArrayEtapas.length() + j][1] = "1"; } int[][] arreglo_estaciones = new int[estaciones.length][2]; for (int j = 0; j < estaciones.length - jArrayEstaciones.length(); j++) { arreglo_estaciones[j][0] = estaciones[j]; arreglo_estaciones[j][1] = 0; } for (int j = 0; j < jArrayEstaciones.length(); j++) { org.json.JSONObject obj = jArrayEstaciones.optJSONObject(j); System.out.println(obj.toString()); System.out.println(obj.toString()); arreglo_estaciones[estaciones.length + j - jArrayEstaciones.length()][0] = obj.getInt("id"); arreglo_estaciones[estaciones.length + j - jArrayEstaciones.length()][1] = 1; } int i_estacion = 0; System.out.println("Imprime arreglo_estaciones TAM: " + arreglo_estaciones.length); for (int k = 0; k < arreglo_etapas.length; k++) { if (i_estacion == arreglo_estaciones.length) { i_estacion = 0; } System.out.println("indice for 3 " + i_estacion); System.out.println("indice k " + k); if (arreglo_estaciones[i_estacion][1] == 0) { query7 = ("INSERT INTO ETAPA_ESTACION (ETAPA_ID, ESTACION_ID) VALUES ('" + arreglo_etapas[k][0] + "', " + arreglo_estaciones[i_estacion][0] + ")"); System.out.println(query7); st7 = con.createStatement(); st7.executeUpdate(query7); } else { if (arreglo_etapas[k][1].equals("0")) { String numero = arreglo_etapas[k][0]; String id_producto = "app2"; env = new Send(); env.enviar( "pj-agr" + ":" + numero + ":" + id_producto + ":" + arreglo_estaciones[i_estacion][0]); env.close(); } else { String numero = arreglo_etapas[k][0].split(";")[0]; String id_producto = arreglo_etapas[k][0].split(";")[1]; env = new Send(); env.enviar( "pj-agr" + ":" + numero + ":" + id_producto + ":" + arreglo_estaciones[i_estacion][0]); env.close(); } } i_estacion++; } // Cerrar conexion cerrarConexion(); JSONObject jRespuestaOk = new JSONObject(); jRespuestaOk.put("Respuesta", "Proceso correcto"); return jRespuestaOk; } public String consultarEtapasRangoFechaRFC8y9AEnviar(JSONObject jP) throws Exception { try { abrirConexion(); String sReturn = ""; String igualdad = (jP.get("igualdad").toString().equals("SI")) ? "=" : "!="; DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = format.parse(jP.get("fecha1").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 Calendar cEsp = new GregorianCalendar(); cEsp.setTime(date); String fecha1 = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); String fecha1Env = (cEsp.get(GregorianCalendar.MONTH) + 1) + "/" + (cEsp.get(GregorianCalendar.DAY_OF_MONTH)) + "/" + cEsp.get(GregorianCalendar.YEAR); date = format.parse(jP.get("fecha2").toString().substring(0, 10)); System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010 cEsp = new GregorianCalendar(); cEsp.setTime(date); String fecha2 = cEsp.get(GregorianCalendar.DAY_OF_MONTH) + "-" + (cEsp.get(GregorianCalendar.MONTH) + 1) + "-" + cEsp.get(GregorianCalendar.YEAR); String fecha2Env = (cEsp.get(GregorianCalendar.MONTH) + 1) + "/" + (cEsp.get(GregorianCalendar.DAY_OF_MONTH)) + "/" + cEsp.get(GregorianCalendar.YEAR); String criterio = jP.get("criterio").toString(); String valor = jP.get("valor").toString(); // RC12-solicitud-id-fechaInicial-FechaFinal if (criterio.equals("Id insumo producido")) { Statement st = con.createStatement(); String sql = "select* from " + "(select * from materias_primas_producto where id_materia_prima" + igualdad + "'" + valor + "') " + " inner join " + " (select * from " + " (select codigo_secuencia from ETAPA_FECHA where FECHA>=TO_DATE('" + fecha1 + "','dd-mm-yyyy') " + "AND FECHA<=TO_DATE('" + fecha2 + "','dd-mm-yyyy') " + " group by CODIGO_SECUENCIA)c " + " inner join " + " ETAPA_DE_PRODUCCION " + " on ETAPA_DE_PRODUCCION.numero_secuencia=c.codigo_secuencia) " + " on " + " id_producto = nombre_producto"; System.out.println("RFC8 ----------- QUERY\n" + sql); ResultSet rs = st.executeQuery(sql); sReturn += "id_producto-id_etapa-descripcion-numero_etapa-materia_prima"; while (rs.next()) { sReturn += "/" + rs.getString("id_producto") + "-" + rs.getInt("numero_secuencia") + "-" + rs.getString("descripcion") + "-" + rs.getInt("etapa") + "-" + rs.getString("id_materia_prima"); } } else if (criterio.equals("Tipo de material")) { Statement st = con.createStatement(); String sql = "select* from \n" + " (select id_producto,tipo from MATERIA_PRIMA inner join MATERIAS_PRIMAS_PRODUCTO on " + "NOMBRE=ID_MATERIA_PRIMA \n" + " where tipo" + igualdad + "'" + valor + "' \n" + " )\n" + " inner join \n" + " (select * from \n" + " (select codigo_secuencia from ETAPA_FECHA where FECHA>=TO_DATE('" + fecha1 + "','dd-mm-yyyy') " + "AND FECHA<=TO_DATE('" + fecha2 + "','dd-mm-yyyy') \n" + " group by CODIGO_SECUENCIA)c \n" + " inner join\n" + " ETAPA_DE_PRODUCCION\n" + " on ETAPA_DE_PRODUCCION.numero_secuencia=c.codigo_secuencia)\n" + " on\n" + " id_producto = nombre_producto"; System.out.println("RFC8 ----------- QUERY\n" + sql); ResultSet rs = st.executeQuery(sql); sReturn += "id_producto-id_etapa-descripcion-numero_etapa-tipo_material"; while (rs.next()) { sReturn += "/" + rs.getString("id_producto") + "-" + rs.getInt("numero_secuencia") + "-" + rs.getString("descripcion") + "-" + rs.getInt("etapa") + "-" + rs.getString("tipo"); } } else if (criterio.equals("Id Pedido")) { Statement st = con.createStatement(); String sql = "select* from \n" + " (select id_producto,id_pedido from ITEM inner join MATERIAS_PRIMAS_PRODUCTO on " + "ITEM.NOMBRE_PRODUCTO=MATERIAS_PRIMAS_PRODUCTO.ID_PRODUCTO\n" + " where ITEM.ID_PEDIDO" + igualdad + valor + "\n" + " )\n" + " inner join \n" + " (select * from \n" + " (select codigo_secuencia from ETAPA_FECHA where FECHA>=TO_DATE('" + fecha1 + "','dd-mm-yyyy') " + "AND FECHA<=TO_DATE('" + fecha2 + "','dd-mm-yyyy') \n" + " group by CODIGO_SECUENCIA)c \n" + " inner join\n" + " ETAPA_DE_PRODUCCION\n" + " on ETAPA_DE_PRODUCCION.numero_secuencia=c.codigo_secuencia)\n" + " on\n" + " id_producto = nombre_producto"; System.out.println("RFC8 ----------- QUERY\n" + sql); ResultSet rs = st.executeQuery(sql); sReturn += "id_producto-id_etapa-descripcion-numero_etapa-id_pedido"; while (rs.next()) { // JSONObject jO = new JSONObject(); // jO.put("id_producto", rs.getString("id_producto")); // jO.put("id_etapa", rs.getInt("numero_secuencia")); // jO.put("descripcion", rs.getString("descripcion")); // jO.put("numero_etapa", rs.getInt("etapa")); // jO.put("id_pedido", rs.getInt("id_pedido")); // jResp.add(jO); sReturn += "/" + rs.getString("id_producto") + "-" + rs.getInt("numero_secuencia") + "-" + rs.getString("descripcion") + "-" + rs.getInt("etapa") + "-" + rs.getString("id_pedido"); } } cerrarConexion(); return sReturn; } catch (Exception e) { rollback(); throw e; } } }