/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package server; import types.*; import conexion.*; import java.sql.*; import javax.jws.*; import java.util.*; import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; /** * * @author Marco A. Trejo Lemus */ @WebService() public class WebCMX { public Resultado result; public int existe = 0, existe1 = 0; public int intstatus; public String strCuenta = ""; public Integer intTotrec = 0; public String strCta = ""; public Integer intcount = 0; public Integer intnagrupacion = 0; public String strCta2 = ""; public String strCta3 = ""; public Integer nstatus = 0; public Integer countcta = 0; public Integer intreg1 = 0; public Integer intreg2 = 0; public Integer intreg3 = 0; public List usr = new ArrayList (); /** * * Operacion Web Service * **/ @WebMethod(operationName="RecepcionRemesa",action="urn:getRecepcionRemesa") @WebResult(name="getRecepcionRemesa") public Resultado RecepcionRemesa( @WebParam(name = "intNremesa")int intNremesa, @WebParam(name = "intMensajeria")int intMensajeria, @WebParam(name = "lstEscaneoInicial")List lstEscaneoInicial, @WebParam(name = "strUsuario")String strUsuario, @WebParam(name = "strClave")String strClave ) { //Empieza la implementacion de codigo desde aqui: int Nlongitud = lstEscaneoInicial.size(); //longitud del arreglo String lstEscaneoInicial /* Declara arreglos de tipo objeto*/ List listCuentas; //Arreglo que se enviara con datos List listCcuentas = new ArrayList(0); //Arreglo vacio //Obtiene fechahora DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date date = new Date(); dateFormat.format(date); //date tiene formato de yyyy/MM/dd HH:mm:ss try { AdministradorConexion conectar2 = null;//crea conn para llamar funcion extraer conectar2 = new AdministradorConexion(); usr = conectar2.STRextraerUsuario(strUsuario,strClave); //consulto BD Administrador y traigo usuario String uusuario = usr.get(0); String cclave = usr.get(1); System.out.println("Usuario es: "+uusuario); System.out.println("Clave es: "+cclave); conectar2.desconectar(); if(uusuario!="" && cclave!="" ) { System.out.println("Autentificacion correcta, OK"); try { CMXConexion conn = new CMXConexion(); //Conexión a base de datos cmx OK //select estatus String recibidosuc= conn.getResultdeT010007(intNremesa, intMensajeria); //T010007 'N' //no cierra conn al salir //Obtener Query T010007 estatus de cmx OK y cierra conexion conn = new CMXConexion(); //Conexión a base de datos cmx OK String estatus = conn.getResultdeT010007a(intNremesa, intMensajeria); //T010007 'N' //no cierra conn al salir //Obtener Query T010007a estatus de cmx OK if(recibidosuc.equals("N")==true) //la remesa ya fue recibida cuenta con recepcion { System.out.println("recibidosuc es:"+recibidosuc); if(estatus.equals("")==false) //si es diferente de "", existe estatus { if(estatus.equals("A")==true) //A Remesa Abierta, B Remesa Cerrada { System.out.println("estatus es:"+estatus); //Comprueba que entra al if conn = new CMXConexion(); //Conexion a base de datos cmx existe = conn.getResultdeA010007(intNremesa, intMensajeria); //Obtener Query A010007 dato de cmx System.out.println("Resultado del query A010007: "+existe); //Resultado del query A010007: 0 if((existe==0)==false) // si no es 0, hay piezas Si existe ya esta Recibida { CMXConexion conn0 = new CMXConexion(); //Conexion a base de datos cmx int tempstatus = conn0.getResultaT010083(4); /*envia consulta a T010083 intStatus = 4 */ result.setIntStatus(tempstatus); String tempstrdescripcion = conn0.getResultaT010083a(4); /*envia consulta a T010083 intStatus = 4 */ result.setStrDescripcion(tempstrdescripcion); System.out.println("Regresa intNstatus ="+tempstatus+" Str descripcion= "+tempstrdescripcion+" arreglo vacio: "); } else { CMXConexion conn5 = new CMXConexion(); //Conexion a base de datos cmx existe1 = conn5.getResultdeA010007d(intNremesa, intMensajeria); //Obtener Query A010007d * de cmx OK System.out.println("Resultado Query A010007d: "+existe1); //Resultado Query A010007d: 0 if((existe1==0)==false) //si no es 0 hay datos { //Regresa intNstatus4 y arreglo vacio CMXConexion conn0 = new CMXConexion();//Conexion a base de datos cmx int tempstatus = conn0.getResultaT010083(4); /*envia consulta a T010083 intStatus = 25 */ result.setIntStatus(tempstatus); String tempstrdescripcion = conn0.getResultaT010083a(4); /*envia consulta a T010083 strdescripcion = 15 */ result.setStrDescripcion(tempstrdescripcion); result.setLstCuentas(listCcuentas); /*Envia arreglo vacio*/ System.out.println("Regresa intNstatus ="+tempstatus+" Str descripcion= "+tempstrdescripcion+" arreglo vacio: "); } else { //Asignar valores a lstArregloEscaneoRecibe System.out.println("Longitud de lstEscaneoInicial es: "+lstEscaneoInicial.size()); { // Recorrer el arreglo EscaneoRecibe, e insertamos las cuentas en la 085 CMXConexion conn7 = new CMXConexion();//Conexion a base de datos cmx for(int i = 0; i< Nlongitud; i++) //Nlongitud = longitud del arreglo que envio el cliente { // obtener strCuenta, strCuenta = (String) lstEscaneoInicial.get(i); System.out.println("Obtener cuenta de lstEscaneoInicial es: "+strCuenta); // insert into T010085 int reg2 = conn7.setINSERTaT010085(strCuenta, intNremesa, intMensajeria, date); if ( reg2 == 1 ) { System.out.println("INSERT a T010085 correcto"); } else { System.out.println("INSERT a T010085 no se completo"); } } } /************************************************************************************************/ /*block*/ { System.out.println("Entra al bloque 1"); String SQL ="SELECT cuenta,count(cuenta) from T010085 WHERE nremesa="+intNremesa+" && nmensajeria="+intMensajeria+" && '"+dateFormat.format(date)+"' group by cuenta"; Statement stmt; ResultSet rs; Connection conexion=null; CMXConexion connecta = new CMXConexion(); try { //obtenemos el driver de para mysql Class.forName("com.mysql.jdbc.Driver"); //obtenemos la conexión conexion = connecta.getConnection(); stmt = conexion.createStatement(); rs = stmt.executeQuery(SQL); System.out.println("Ejecuta query del bloque 1"); if (rs!=null) { System.out.println("Obtener Query T010085 count(codigo) OK"); } if(rs.next()) { strCta = rs.getString(1); intcount = rs.getInt(2); System.out.println("strCta es: "+strCta+" intcount es:"+intcount); if(intcount > 1) //si intcount es > 1 estan repetidos son varias cuentas { //Insertamos las repetidas en la 084 CMXConexion conn8 = new CMXConexion(); //Envia 6:cuentas repetidas System.out.println("Entra si intcount : "+intcount+" > a 1 para Obtener Query de T010084 ..."); conn8.setINSERTaT010084(strCta, intNremesa, intMensajeria, 6, date); //insertalos en la T010084 } if(rs.equals(null)==true) {System.out.println("Entra si rs==null "+rs+" "); } } System.out.println("Sale del if"); rs.close(); rs = null; stmt.close(); stmt = null; //conexion = null; } catch(SQLException e) { System.out.println("Error en: "+e); } /************************************************************************************************/ /*end block*/ //Para ver cuantas piezas hay en la T01001 contra la 85 las cuentas que el cliente nos envia //Que cuentas no existen en la 85 y si existen en la 1 /*block*/ String SQL2 ="SELECT T010001.cuenta, T010085.cuenta FROM T010001 left join T010085 ON (T010001.cuenta = T010085.cuenta) WHERE T010001.nremesa="+intNremesa+" && T010001.nmensajeria="+intMensajeria+" && T010085.cuenta is null"; Statement stmt2; ResultSet rs2; //Connection conexion = null; try { stmt2 = conexion.createStatement(); rs2 = stmt2.executeQuery(SQL2); if (rs2!=null) { System.out.println("Obtener Query T010001 cuenta OK"); } if(rs2.next()) //insertar las cuentas que nos enviaron pero no existen { strCta2 = rs2.getString(1); CMXConexion conn9 = new CMXConexion(); //Envia 7:cuenta repetida conn9.setINSERTaT010084(strCta2, intNremesa, intMensajeria, 7, date); //inserta en la T010084 } rs2.close(); rs2 = null; stmt2.close(); stmt2 = null; //conexion.close(); //conexion2 = null; } catch(SQLException e) { System.out.println(e); } /************************************************************************************************/ /*end block*/ //Para ver el numero de cuentas que el ciente tiene pero que no hay en la 01 /*block*/ String SQL3 ="SELECT T010085.cuenta, T010085 left join T010001 ON (T010085.cuenta = T010001.cuenta) WHERE T010085.nremesa="+intNremesa+" && T010085.nmensajeria="+intMensajeria+" && T010001.cuenta is null"; Statement stmt3; ResultSet rs3; //Connection conexion = null; try { stmt3 = conexion.createStatement(); rs3 = stmt3.executeQuery(SQL3); if (rs3!=null) { System.out.println("Obtener Query T010001 cuenta OK"); } if(rs3.next()) { strCta3 = rs3.getString(1); CMXConexion conn10 = new CMXConexion(); //Envia 8:cuenta repetida conn10.setINSERTaT010084(strCta3, intNremesa, intMensajeria, 8, date); //inserta en la T010084 } rs3.close(); rs3 = null; stmt3.close(); stmt3 = null; //conexion.close(); conexion = null; } catch(SQLException e) { System.out.println(e); } /************************************************************************************************/ /*end block*/ boolean banderaerror = false; // /*block*/ String SQL4 ="SELECT cuenta,nstatus FROM T010084 WHERE nremesa="+intNremesa+" && nmensajeria="+intMensajeria+" && "+date+""; String SQL5 ="SELECT count(cuenta) FROM T010084 WHERE nremesa="+intNremesa+" && nmensajeria="+intMensajeria+" && "+date+""; Statement stmt4; ResultSet rs4; Statement stmt5; ResultSet rs5; //Connection conexion = null; //Connection conexion2 = null; try { stmt4 = conexion.createStatement(); stmt5 = conexion.createStatement(); rs4 = stmt4.executeQuery(SQL4); rs5 = stmt5.executeQuery(SQL5); if (rs5!=null) { System.out.println("Obtener Query T010084 count(cuenta) OK"); } if (rs4!=null) { System.out.println("Obtener Query T010084 cuenta,nstatus OK"); } if(rs5.next()) { countcta = rs4.getInt(1);//Obtener el tamaño de lstCuentas } listCuentas = new ArrayList(countcta);//Declarar el arreglo int contador=0; if(rs4.next()) //si existen cuentas hay error { banderaerror = true; strCta3 = rs4.getString(1); nstatus = rs4.getInt(2); //asigna a arreglo lstcuentas, cuenta y intNstatuscta //llenar cuenta y estatus al arreglo listCuentas.add(strCta3); // Cuenta : 0100010,.,.,., listCuentas.add(nstatus); // estatus: A,.,.,., contador++; } result.setLstCuentas(listCuentas); //envio el arreglo a variable array en result rs4.close(); rs4 = null; stmt4.close(); stmt4 = null;// conexion.close(); conexion = null; rs5.close(); rs5 = null; stmt5.close(); stmt5 = null; //conexion2.close(); conexion2 = null; } catch(SQLException e) { System.out.println(e); } /************************************************************************************************/ /*end block*/ if(banderaerror==true) { /*Regresa intNstatus 5 = Verificar cuentas y arreglo lleno*/ result.setIntStatus(5); String tempstrdescripcion = conn.getResultaT010083a(5); /*envia consulta a T010083 intStatus = 5 */ result.setStrDescripcion(tempstrdescripcion); System.out.println("Regresa intNstatus = 5 Str descripcion= "+tempstrdescripcion+" arreglo vacio: "); } else { //update T010007 CMXConexion conn8 = new CMXConexion();//Conexion a base de datos qpn intreg1 = conn8.setUPDATEaT010007(intNremesa, intMensajeria); /************************************************************************************************/ /*block*/ String SQL6 ="SELECT totalsistema,nagrupacion from T010007 WHERE nremesa="+intNremesa+" && nmensajeria=12 && '"+dateFormat.format(date)+"'"; Statement stmt6; ResultSet rs6; //Connection conexion = null; try { stmt6 = conexion.createStatement(); rs6 = stmt6.executeQuery(SQL); if (rs6!=null) { System.out.println("Obtener Query T010007 totalsistena,nagrupacion OK"); } if(rs6.next()) { intTotrec = rs6.getInt(1); intnagrupacion = rs6.getInt(2); CMXConexion conn9 = new CMXConexion(); // intreg2 = conn9.setINSERTaA010007(intNremesa, intMensajeria ,intTotrec, intnagrupacion); //insertalos en la T010007 //setINSERTaA010007(int intNremesa, int intMensajeria, int intTotrec) CMXConexion conn10 = new CMXConexion(); // intreg3= conn10.setINSERTaA010007d(intNremesa, intMensajeria, intnagrupacion); } rs6.close(); rs6 = null; stmt6.close(); stmt6 = null; //conexion.close(); conexion = null; } catch(SQLException e) { System.out.println(e); } /************************************************************************************************/ /*end block*/} /*Si update o insert's correctos*/ if((intreg1==0)&&(intreg2==0)&&(intreg3==0)) { System.out.println("Valores de update o insert's : "+intreg1+intreg2+intreg3); /*Regresa intNstatus 1 = Metodo correcto y arreglo vacio*/ // CMXConexion conn0 = new CMXConexion();//Conexion a base de datos cmx //int tempstatus =1; /*envia consulta a T010083 intStatus = 1 */ result.setIntStatus(1); String tempstrdescripcion = conn.getResultaT010083a(1); /*envia consulta a T010083 strdescripcion = 1 */ result.setStrDescripcion(tempstrdescripcion); result.setLstCuentas(listCcuentas); /*Envia arreglo vacio*/ System.out.println("Regresa intNstatus =1 Str descripcion= "+tempstrdescripcion+" arreglo vacio: "); } else { //Regreso intNstatus 25 y arreglo vacio result.setIntStatus(25); String tempstrdescripcion = conn.getResultaT010083a(25); /*envia consulta a T010083 strdescripcion = 25 */ result.setStrDescripcion(tempstrdescripcion); result.setLstCuentas(listCcuentas); /*Envia arreglo vacio*/ System.out.println("Regresa intNstatus =25 Str descripcion= "+tempstrdescripcion+" arreglo vacio: "); } } } } } else { /*Regresa intNstatus 10 = Remesa con status de cierre arreglo vacio*/ result.setIntStatus(10); String tempstrdescripcion = conn.getResultaT010083a(10); /*envia consulta a T010083 strdescripcion = 10 */ result.setStrDescripcion(tempstrdescripcion); result.setLstCuentas(listCcuentas); /*Envia arreglo vacio*/ System.out.println("Regresa intNstatus =10 Str descripcion= "+tempstrdescripcion+" arreglo vacio: "); } } /* Regresa intNStatus 3 y arreglo vacio*/ result.setIntStatus(3); String tempstrdescripcion = conn.getResultaT010083a(3); /*envia consulta a T010083 strdescripcion = 3*/ result.setStrDescripcion(tempstrdescripcion); result.setLstCuentas(listCcuentas); /*Envia arreglo vacio*/ System.out.println("Regresa intNstatus = 3 Str descripcion= "+tempstrdescripcion+" arreglo vacio: "); } else { /*Regresa intNstatus 2 = Remesa no existe de cierre arreglo vacio*/ result.setIntStatus(2); String tempstrdescripcion = conn.getResultaT010083a(2); /*envia consulta a T010083 strdescripcion = 2*/ result.setStrDescripcion(tempstrdescripcion); result.setLstCuentas(listCcuentas); /*Envia arreglo vacio*/ System.out.println("Regresa intNstatus = 2 Str descripcion= "+tempstrdescripcion+" arreglo vacio: "); } } catch (Exception e) { System.out.println ("Conexion principal cmx termino: " + e); } /*Regresamos los valores intStatus ,strDescripcion y lstCuentas*/ } else System.out.println ("La autentificacion 2 no fue satisfactoria intente de nuevo... " ); } catch (Exception exec) { System.out.println ("La autentificacion 1 no fue satisfactoria intente de nuevo: " + exec); } /*Regresamos result con los valores intStatus y strDescripcion*/ System.out.println("Cerramos conn y regresamos result: "); return result; } }//fin de la clase