/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
*/ 

package Datos;

import java.sql.ResultSet;
import javax.swing.table.DefaultTableModel;

public class ConsultasSQL {

    private static ConsultasSQL yo;
    private BaseDeDatos bd = null;
    
    public ConsultasSQL(BaseDeDatos bd) {
        yo = this;
        this.bd = bd;
    }

    public static ConsultasSQL getConsultas() {
        return yo;
    }
//      public String transformaACitaPrevia( String sq)
//    {
//       if (Fichas.Selector.getSelector().G .getjCheckCP()) {
//   return sq;
//       }
//       String sq1 = sq;
//       sq1 = sq1.replace("Colas.Cola","CategoriasEsta.CodigoEstadistico");
//       sq1 = sq1.replace("Colas.Descripcion","CategoriasEsta.CategoriaEsta");
//
//       sq1 = sq1.replace("Colas","CategoriasEsta");
//
//       sq1 = sq1.replace("Cola","CodigoEstadistico");
//       sq1 = sq1.replace("Descripcion","CategoriaEsta");
//
//       return sq1;
//    }
     public String transformaACodEsta( String sq)
    {
        String sqm = transformaACitaPrevia(sq);
       if (Fichas.Selector.getSelector().getjRadioCola()) {
      return sqm;
       }
       String sq1 = sqm;
       sq1 = sq1.replace("Colas.Cola","CategoriasEsta.CodigoEstadistico");
       sq1 = sq1.replace("Colas.Descripcion","CategoriasEsta.CategoriaEsta");

       sq1 = sq1.replace("Colas","CategoriasEsta");

       sq1 = sq1.replace("Cola","CodigoEstadistico");
       sq1 = sq1.replace("Descripcion","CategoriaEsta");

       return sq1;
    }
        public String transformaAHoraPresente( String sq)
    {
       if (Fichas.Selector.getSelector(). getjCheckHP()) {
  
       String sq1 = sq;
       sq1 = sq1.replace("HoraCalculada2","HoraPresente");
   
       return sq1;
       }
       return sq;
    }
            public String transformaACitaPrevia( String sq)
    {
       
        
       if (Fichas.Selector.getSelector(). getjCheckCP()) {
       
           if (sq.toUpperCase().indexOf("ACCIONES") > -1)
           {
           return sq;
           }
       String sq1 = sq;
       sq1 = sq1.replaceFirst(" WHERE "," WHERE CP = 1 AND ");
   
       return sq1;
       }
       return sq;
    }

    public DefaultTableModel DatosConsultaTicketEmitidosPorCola() {

        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        // bd.estableceConexion();
        String turno;
        turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT Colas.Descripcion, COUNT(*) AS Total FROM HistoricoCandidatos " +
                "INNER JOIN Colas ON HistoricoCandidatos.Cola = Colas.Cola " + 
                " WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") " +
                "AND HistoricoCandidatos.Estado <> ' ' AND " + Condicion + turno + 
                " GROUP BY Colas.Descripcion ";
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaTicketAbandonadosPorCola() {
        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT HistoricoCandidatos.Estado, COUNT(*) AS Total FROM HistoricoCandidatos " +
                " WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") " +
                " AND " + Condicion + turno +
                " GROUP BY HistoricoCandidatos.Estado ";
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }
      public DefaultTableModel DatosConsultaTicketAbandonadosPorColabueno() {
        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT Colas.Descripcion, COUNT(*) AS Total FROM HistoricoCandidatos " +
                "INNER JOIN Colas ON HistoricoCandidatos.Cola = Colas.Cola " +
                "WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") " +
                "AND HistoricoCandidatos.Estado = 'D' AND " + Condicion + turno +
                " GROUP BY Colas.Descripcion ";
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }


    public DefaultTableModel DatosConsultaTicketReenviadosPorCola() {
        DefaultTableModel modelo = new DefaultTableModel();
        String turno;
        turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        bd.estableceConexion();
        String SQL = "SELECT     TOP 100 PERCENT Turno, NumeroTicket, Cola, HoraCita " +
                "FROM HistoricoCandidatos WHERE (HoraCita " + PedirFechaInicial() + "  ) AND (NumeroTicket IN " +
                " (SELECT NumeroTicket " +
                " FROM HistoricoCandidatos AS Tmp " +
                " GROUP BY NumeroTicket, HoraCita" +
                " HAVING COUNT(*) > 1  AND LEN(NumeroTicket) > 2 AND HoraCita = HistoricoCandidatos.HoraCita)) " +
                "           AND (HoraCita " + PedirFechaFinal() + ") " + turno;
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaTicketEmitidosPorFecha_Cola() {
        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        bd.estableceConexion();

        String SQL = "SELECT Colas.Descripcion, CONVERT(nchar(10), HistoricoCandidatos.HoraPresente, 103) AS Fecha,   DATEPART(y, HistoricoCandidatos.HoraPresente) AS Horas,  COUNT(*) AS Total " +
            " FROM HistoricoCandidatos INNER JOIN  Colas ON HistoricoCandidatos.Cola = Colas.Cola " +
            " WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND " + Condicion + " AND Estado <> ' ' " + turno +
            " GROUP BY Colas.Descripcion, CONVERT(nchar(10), HistoricoCandidatos.HoraPresente, 103), DATEPART(y, HistoricoCandidatos.HoraPresente)" +
            " ORDER BY 'Horas'";
         SQL =  transformaACodEsta(SQL);
         ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaRetrasos_Fecha() {

        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        bd.estableceConexion();
        String SQL1 = " SELECT Fecha, AVG(Retraso /60) AS Retraso_Medio, COUNT(*)  AS Numero, MAX(Retraso/60) AS Maximo" +
            " FROM (SELECT CONVERT(nchar(10), HoraPresente, 102) AS 'Fecha', DATEDIFF(s, HoraCalculada2,HoraAtendido) AS Retraso" +
            " FROM HistoricoCandidatos WHERE DATEDIFF(s,HistoricoCandidatos.HoraCalculada2, HistoricoCandidatos.HoraAtendido) > 1 AND HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND " +
                    Condicion + " AND Estado IN ('F','S') " + turno + ") derivedtbl_1" +
            " GROUP BY Fecha" +
            " ORDER BY 'Fecha'";
        SQL1 =  transformaACodEsta(SQL1);
        SQL1 =  transformaAHoraPresente(SQL1);
        ResultSet rs = bd.dameLista(SQL1);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }
    public DefaultTableModel DatosConsultaRetrasos_AgrupadosH() {

        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        bd.estableceConexion();
        String SQL1 = "SELECT Retraso , Numero FROM (SELECT  CASE"+
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 6 THEN '  <5'" +
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 11 THEN ' <10'" +
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 21 THEN ' <20'" +
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 31 THEN ' <30'" +

        " ELSE '>30'" +
        " END AS Retraso, COUNT(*)  AS Numero  FROM HistoricoCandidatos WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND " +
        Condicion + " AND Estado IN ('F','S','A','D') " + turno + " GROUP BY CASE "+
                  " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 6 THEN '  <5'" +
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 11 THEN ' <10'" +
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 21 THEN ' <20'" +
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 31 THEN ' <30'" +
        " ELSE '>30' END) derivedtbl_1 ORDER BY Retraso";
//         String SQL1 = "SELECT Retraso , Numero FROM (" +
//                "SELECT  CASE"+
//        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 6 THEN '<5'" +
//        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 11 THEN '<10'" +
//        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 21 THEN '<20'" +
//        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 31 THEN '<30'" +
//
//        " ELSE '>30'" +
//        " END AS Retraso, COUNT(*)  AS Numero  FROM HistoricoCandidatos WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND " +
//        Condicion + " AND Estado IN ('S') " + turno + " GROUP BY CASE "+
//                  " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 6 THEN '<5'" +
//        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 11 THEN '<10'" +
//        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 21 THEN '<20'" +
//        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 31 THEN '<30'" +
//        " ELSE '> 30' END) derivedtbl_1 ORDER BY Retraso";

        SQL1 =  transformaACodEsta(SQL1);
        SQL1 =  transformaAHoraPresente(SQL1);
        ResultSet rs = bd.dameLista(SQL1);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }
   
 public DefaultTableModel DatosConsultaRetrasos_Agrupados() {

        DefaultTableModel modelo = new DefaultTableModel();
      //  String Condicion = PedirCondicion("Candidatos.HoraCita");
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        bd.estableceConexion();
        String SQL1 = "SELECT Retraso , Numero FROM (SELECT  CASE"+
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 6 THEN '  <5'" +
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 11 THEN ' <10'" +
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 21 THEN ' <20'" +
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 31 THEN ' <30'" +
        " ELSE '>30'" +
        " END AS Retraso, COUNT(*)  AS Numero  FROM Candidatos WHERE Candidatos.Cola IN(" + colasvalidas + ")" +
        " AND Estado IN ('F','S','A','D') " + turno + " GROUP BY CASE "+
                  " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 6 THEN '  <5'" +
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 11 THEN ' <10'" +
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 21 THEN ' <20'" +
        " WHEN DATEDIFF(MINUTE, HoraCalculada2,HoraAtendido) < 31 THEN ' <30'" +
        " ELSE '>30' END) derivedtbl_1 ORDER BY Retraso";

        SQL1 =  transformaACodEsta(SQL1);
        SQL1 =  transformaAHoraPresente(SQL1);
        ResultSet rs = bd.dameLista(SQL1);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }
      

    public DefaultTableModel DatosConsultaRetrasos_Cola() {
        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        bd.estableceConexion();
        String SQL = "SELECT Descripcion, AVG(Retraso/60) AS Retraso_Medio, COUNT(*)  AS Numero, MAX(Retraso/60) AS Maximo" +
            " FROM (SELECT Colas.Descripcion, DATEDIFF(s,HistoricoCandidatos.HoraCalculada2,HistoricoCandidatos.HoraAtendido) AS Retraso" +
            "  FROM HistoricoCandidatos INNER JOIN Colas ON HistoricoCandidatos.Cola = Colas.Cola" + 
            "  WHERE DATEDIFF(s,HistoricoCandidatos.HoraCalculada2,HistoricoCandidatos.HoraAtendido) > 1 AND HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND " + Condicion + " AND Estado IN ('F','S') " + turno + " )" + "  derivedtbl_1 " +
            "  GROUP BY Descripcion";
          SQL =  transformaACodEsta(SQL);
          SQL = transformaAHoraPresente(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaTiempoMedio_Cola() {
        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT Descripcion, AVG(Tiempo/60) AS Tiempo_Medio, COUNT(*)  AS Numero, MAX(Tiempo/60) AS Maximo" +
            " FROM (SELECT Colas.Descripcion, DATEDIFF(s,HistoricoCandidatos.HoraAtendido, HistoricoCandidatos.HoraFinalizado) AS Tiempo" +
            "  FROM HistoricoCandidatos INNER JOIN Colas ON HistoricoCandidatos.Cola = Colas.Cola" +
            "  WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND " + Condicion + " AND Estado IN ('F','S')) derivedtbl_1 " +
            "  GROUP BY Descripcion";
         SQL =  transformaACodEsta(SQL);
         ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaRetrasos_Hora() {
        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        bd.estableceConexion();
        String SQL = "SELECT Hora, AVG(Retraso/60) AS MediaRetraso, COUNT(*) AS Numero, MAX(Retraso/60) AS Maximo" +
            " FROM (SELECT DATEPART(hh, HoraAtendido) AS Hora, DATEDIFF(s, HoraCalculada2, HoraAtendido) AS Retraso" +
            " FROM HistoricoCandidatos" +
            " WHERE DATEDIFF(s,HistoricoCandidatos.HoraCalculada2, HistoricoCandidatos.HoraAtendido) > 1 AND HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND " + Condicion + " AND Estado IN ('F','S') " + turno + " ) derivedtbl_1 " +
            " GROUP BY Hora ";
         SQL =  transformaACodEsta(SQL);
         SQL = this.transformaAHoraPresente(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaTiemposOperador() {
        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoAcciones.FechaConexion");
        bd.estableceConexion();
        String SQL = "SELECT Operadores.codigo, Operadores.Nombre, SUM(HistoricoAcciones.TiempoLibre) / 60 AS Tiempo_Libre, " +
                " SUM(HistoricoAcciones.TiempoOcupado) / 60 AS Tiempo_Ocupado," +
                " SUM(HistoricoAcciones.TiempoDescanso) / 60 AS Tiempo_NoOperativo FROM HistoricoAcciones " +
                " INNER JOIN Operadores ON " + 
                " HistoricoAcciones.Codigo = Operadores.codigo" +
                " WHERE " + Condicion;
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
            SQL += turno;
        }
        SQL += " GROUP BY Operadores.codigo, Operadores.Nombre " +
               " ORDER BY Nombre";
         SQL =  transformaACodEsta(SQL);
               ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaTiemposOperadorActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        bd.estableceConexion();
        String SQL = "SELECT Operadores.codigo, Operadores.Nombre, SUM(AccionesHoy.TiempoLibre) / 60 AS Tiempo_Libre, " +
                " SUM(AccionesHoy.TiempoOcupado) / 60 AS Tiempo_Ocupado," + 
                " SUM(AccionesHoy.TiempoDescanso) / 60 AS Tiempo_NoOperativo FROM AccionesHoy " +
                " INNER JOIN Operadores ON " +
                " AccionesHoy.Codigo = Operadores.codigo";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " WHERE Turno = '" + turno + "' ";
        }
        SQL += " GROUP BY Operadores.codigo, Operadores.Nombre" +
               " ORDER BY Nombre";
          SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaServiciosOperadorActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = " SELECT Operadores.codigo, Operadores.Nombre, Colas.Descripcion, COUNT(Colas.Cola) AS Numero" +
            " FROM Candidatos INNER JOIN  Colas ON Candidatos.Cola = Colas.Cola INNER JOIN Operadores ON " +
            " Candidatos.Operador = Operadores.codigo " +
            " WHERE Candidatos.Cola IN(" + colasvalidas + ")  AND Candidatos.Estado IN ('F','S') ";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        SQL += "  GROUP BY Colas.Descripcion, Operadores.codigo, Operadores.Nombre" +
               " ORDER BY  Operadores.Nombre";
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaServiciosOperador() {
        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = " SELECT Operadores.codigo, Operadores.Nombre, Colas.Descripcion, COUNT(Colas.Cola) AS Numero" +
            " FROM HistoricoCandidatos INNER JOIN Colas ON HistoricoCandidatos.Cola = Colas.Cola " +
            " INNER JOIN Operadores ON HistoricoCandidatos.Operador = Operadores.codigo " +
            " WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND " + Condicion + " AND HistoricoCandidatos.Estado IN ('F','S') ";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        SQL += " GROUP BY Colas.Descripcion, Operadores.codigo, Operadores.Nombre" +
               " ORDER BY  Operadores.Nombre";
         SQL =  transformaACodEsta(SQL);

        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public String PedirCondicion(String campo) {
        java.text.SimpleDateFormat dateFormatAMD = new java.text.SimpleDateFormat("yyyy-MM-dd");
        String f1 = dateFormatAMD.format(Fichas.Selector.getSelector().getFechaI()) + " 00:00:00";
        String f2 = "";
        if (Fichas.Selector.getSelector().getjRadioFI()) {
            f2 = dateFormatAMD.format(Fichas.Selector.getSelector().getFechaI()) + " 23:59:59";
        } else {
            f2 = dateFormatAMD.format(Fichas.Selector.getSelector().getFechaF()) + " 23:59:59";
        }
        String fin = campo + " >= CONVERT(DATETIME,'" + f1 + "', 102) AND " + campo + " <= CONVERT(DATETIME,'" + f2 + "', 102) ";
        return fin;
    }

    public String PedirFechaInicial() {
        java.text.SimpleDateFormat dateFormatAMD = new java.text.SimpleDateFormat("yyyy-MM-dd");
        String f1 = dateFormatAMD.format(Fichas.Selector.getSelector().getFechaI()) + " 00:00:00";
        String fin = " >= CONVERT(DATETIME,'" + f1 + "', 102)";
        return fin;
    }

    public String PedirFechaFinal() {
        java.text.SimpleDateFormat dateFormatAMD = new java.text.SimpleDateFormat("yyyy-MM-dd");
        String f1 = "";
        if (Fichas.Selector.getSelector().getjRadioFI()) {
            f1 = dateFormatAMD.format(Fichas.Selector.getSelector().getFechaI()) + " 23:59:59";
        } else {
            f1 = dateFormatAMD.format(Fichas.Selector.getSelector().getFechaF()) + " 23:59:59";
        }
        String fin = " <= CONVERT(DATETIME,'" + f1 + "', 102) ";
        return fin;
    }

    public DefaultTableModel DatosConsultaTicketEmitidosPorFecha() {
        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT CONVERT(nchar(10), HoraPresente, 103) AS Fecha, COUNT(*) AS Total FROM HistoricoCandidatos " +
            " WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND " + Condicion + " AND (Estado <> ' ') " + turno +
            " GROUP BY CONVERT(nchar(10), HoraPresente, 103), DATEPART(y, HoraPresente)" +
            " ORDER BY DATEPART(y, HoraPresente) ";
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaTicketEmitidosPorHoraMinuto1() {
        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        String SQL = " Select HistoricoCandidatos.HoraPresente  AS Horas FROM HistoricoCandidatos " +
            " WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND " + Condicion + " AND (Estado <> ' ') " + turno+ " ORDER BY HistoricoCandidatos.HoraPresente" ;
          SQL =  transformaACodEsta(SQL);

        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }
 public DefaultTableModel DatosConsultaTicketEmitidosPorHoraMinuto2() {
        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        String SQL = " SELECT DATEPART(hh, HistoricoCandidatos.HoraPresente)  AS Horas, COUNT(*) AS Total FROM HistoricoCandidatos " +
            " WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND " + Condicion + " AND (Estado <> ' ') " + turno +
            " GROUP BY DATEPART(hh, HistoricoCandidatos.HoraPresente) ORDER BY Horas";
         SQL =  transformaACodEsta(SQL);

        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaTicketAbandonadosPorHora() {
        DefaultTableModel modelo = new DefaultTableModel();
        String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            turno = " AND Turno = '" + turno + "' ";
        }
        String SQL = " SELECT DATEPART(hh, HistoricoCandidatos.HoraPresente)  " +
                " AS Horas, COUNT(*) AS Total FROM HistoricoCandidatos " +
                " WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND " + Condicion + " AND (Estado = 'D') " + turno +
                " GROUP BY DATEPART(hh, HistoricoCandidatos.HoraPresente)";
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaTicketEmitidosPorColaActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();

        String SQL = "SELECT Colas.Descripcion, COUNT(*) AS Total " +
                " FROM Candidatos INNER JOIN Colas ON Candidatos.Cola = Colas.Cola " + 
                " WHERE Candidatos.Cola IN(" + colasvalidas + ")  AND Estado <> ' ' ";
        if (!turno.equals(" ")) {
            SQL += "  AND Turno = '" + turno + "' ";
        }
        SQL += " GROUP BY Colas.Descripcion ";
        SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaOrigenActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();

        String SQL = "SELECT Candidatos.Origen, COUNT(*) AS Total " +
                " FROM Candidatos  WHERE Candidatos.Cola IN(" + colasvalidas + ")  ";
        if (!turno.equals(" ")) {
            SQL += "  AND Turno = '" + turno + "' ";
        }
        SQL += " GROUP BY Candidatos.Origen ";
    //    SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }
    public DefaultTableModel DatosConsultaOrigenHistoricoAcciones() {
        DefaultTableModel modelo = new DefaultTableModel();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
          String Condicion = PedirCondicion("HistoricoCandidatos.HoraCita");
        bd.estableceConexion();

        String SQL = "SELECT HistoricoCandidatos.Origen, COUNT(*) AS Total " +
                " FROM HistoricoCandidatos  WHERE HistoricoCandidatos.Cola IN(" + colasvalidas + ") AND "+ Condicion ;
        if (!turno.equals(" ")) {
            SQL += "  AND Turno = '" + turno + "' ";
        }
        SQL += " GROUP BY HistoricoCandidatos.Origen ";
        SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }


    public DefaultTableModel DatosConsultaTicketRelacionActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT Candidatos.Nif, Candidatos.Nombre, Candidatos.HoraCita, Candidatos.Cola, Candidatos.Estado, Candidatos.NumeroTicket  " +
                " FROM Candidatos " +
                "WHERE Candidatos.Cola IN(" + colasvalidas + ") ";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        SQL += " ORDER BY Candidatos.HoraCita ";
        SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaRetrasos_ColaActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        
        String SQL = "SELECT Descripcion, AVG(Retraso/60) AS Retraso_Medio, COUNT(*)  AS Numero, MAX(Retraso/60) AS Maximo" +
            " FROM (SELECT Colas.Descripcion, DATEDIFF(s,Candidatos.HoraCalculada2, Candidatos.HoraAtendido) AS Retraso" +
            "  FROM Candidatos INNER JOIN Colas ON Candidatos.Cola = Colas.Cola" +
            "  WHERE  DATEDIFF(s,Candidatos.HoraCalculada2, Candidatos.HoraAtendido) > 1 AND Candidatos.Cola IN (" + colasvalidas + ") AND Estado IN ('F','S')";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        SQL += ")  derivedtbl_1 GROUP BY Descripcion";
        SQL =  transformaACodEsta(SQL);
        SQL = transformaAHoraPresente(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaRetrasos_ColaPresentesActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT Descripcion, AVG(Retraso/60) AS Retraso_Medio, COUNT(*)  AS Numero, MAX(Retraso/60) AS Maximo" +
            " FROM (SELECT Colas.Descripcion, DATEDIFF(s, Candidatos.HoraCalculada2, GETDATE()) AS Retraso" +
            "  FROM Candidatos INNER JOIN Colas ON Candidatos.Cola = Colas.Cola" +
         //   "  WHERE DATEDIFF(s,Candidatos.HoraCalculada2, GETDATE()) > 1 AND Candidatos.Cola IN(" + colasvalidas + ") AND (Estado = 'P'))" +
            "  WHERE  Candidatos.Cola IN(" + colasvalidas + ") AND (Estado = 'P'))" +
          
                "  derivedtbl_1 GROUP BY Descripcion";
         SQL =  transformaACodEsta(SQL);
         SQL =  transformaAHoraPresente(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaRetrasos_HoraActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT Hora, AVG(Retraso /60) AS MediaRetraso, COUNT(*) AS Numero, MAX(Retraso/60) AS Maximo" +
            " FROM (SELECT DATEPART(hh, HoraAtendido) AS Hora, DATEDIFF(s, HoraCalculada2, HoraAtendido) AS Retraso" +
            " FROM Candidatos" +
            "  WHERE  DATEDIFF(s,Candidatos.HoraCalculada2, Candidatos.HoraAtendido) > 1 AND Candidatos.Cola IN (" + colasvalidas + ") AND Estado IN ('F','S')";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        SQL += ")  derivedtbl_1 GROUP BY Hora ";
        SQL =  transformaACodEsta(SQL);
        SQL = this.transformaAHoraPresente(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaTicketEmitidosPorHoraActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = " SELECT DATEPART(hh, Candidatos.HoraPresente)  AS Horas, COUNT(*) AS Total FROM Candidatos " +
            " WHERE Candidatos.Cola IN(" + colasvalidas + ") AND (Estado <> ' ') ";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        SQL += " GROUP BY DATEPART(hh, Candidatos.HoraPresente)";
        SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }
    public DefaultTableModel DatosConsultaTicketEmitidosPorHoraMinutoActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = " SELECT Candidatos.HoraPresente AS Horas FROM Candidatos " +
            " WHERE Candidatos.Cola IN(" + colasvalidas + ") AND (Estado <> ' ') ";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        SQL += " ORDER BY Candidatos.HoraPresente";
          SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

  

    public DefaultTableModel DatosConsultaRentaPorEstadoHoraActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT DATEPART(hh, HoraCita) AS Horas, COUNT(*) AS Total, Estado " +
            " FROM Candidatos WHERE Candidatos.Cola IN(" + colasvalidas + ") AND (LEN(Niu) > 8) ";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        SQL += "GROUP BY DATEPART(hh, HoraCita), Estado ";
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaRentaPorEstadoHoraActual1(String estado) {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT DATEPART(hh, HoraCita) AS Horas, COUNT(*) AS Total " +
            " FROM Candidatos WHERE Candidatos.Cola IN(" + colasvalidas + ") AND (LEN(Niu) > 8) AND  Estado IN (" + estado + ") ";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        SQL += " GROUP BY DATEPART(hh, HoraCita) ";
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }
    
    public DefaultTableModel DatosConsultaRentaPorEstadoHoraMinutoActual1(String estado) {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT HoraCita AS Horas, COUNT(*) AS Total " +
            " FROM Candidatos WHERE Candidatos.Cola IN(" + colasvalidas + ") AND (LEN(Niu) > 8) AND  Estado IN (" + estado + ") ";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        SQL += " GROUP BY  HoraCita ";
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }
    
    public DefaultTableModel DatosConsultaRentaPorEstadoHoraMinutoActual1Vacia() {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT HoraCita AS Horas FROM Candidatos WHERE Candidatos.Cola IN(" + colasvalidas + ") AND (LEN(Niu) > 8) ";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        SQL += " GROUP BY HoraCita ";
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }
    
    public DefaultTableModel DatosConsultaHuecosHoraActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT DATEPART(hh, HoraCita) AS Horas, COUNT(*) AS Total " +
            " FROM Huecos WHERE Huecos.Cola IN(" + colasvalidas + ") AND huecos.HoraCita > { fn NOW() } ";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        
        SQL += " GROUP BY DATEPART(hh, HoraCita) ";
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaRentaActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        bd.estableceConexion();
        String SQL = "SELECT Centro, SUM(Impresas) AS Impresas, SUM(Intranet) AS Intranet, " +
                " SUM(numBorradoresConfirmados) AS Borradores_Confirmados," + 
                " SUM(numBorradoresRectificados) AS Borradores_Rectificados FROM AccionesHoy ";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += "  WHERE Turno = '" + turno + "' ";
        }
        SQL += " GROUP BY Centro";
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaRenta2Actual() {
        DefaultTableModel modelo = new DefaultTableModel();
        bd.estableceConexion();
        String turno = Fichas.Selector.getSelector().PedirTurno();
        String SQL = " SELECT Puesto, Impresas, Intranet, numBorradoresConfirmados, numBorradoresRectificados FROM AccionesHoy " +
                " WHERE (AccionesHoy.Impresas + AccionesHoy.Intranet + AccionesHoy.numBorradoresConfirmados + AccionesHoy.numBorradoresRectificados) > 0 ";
        if (!turno.equals(" ")) {
            SQL += "  AND Turno = '" + turno + "' ";
        }
        SQL += " ORDER BY Puesto";
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }

    public DefaultTableModel DatosConsultaCitaPreviaPorColaActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT Colas.Descripcion, COUNT(*) AS Total FROM Candidatos INNER JOIN Colas ON Candidatos.Cola = Colas.Cola " +
            " WHERE Candidatos.Cola IN(" + colasvalidas + ")  AND  LEN(Niu) > 8 ";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Turno = '" + turno + "' ";
        }
        SQL += " GROUP BY Colas.Descripcion ";
         SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }
    
    public DefaultTableModel DatosConsultaCitaPreviaRentaActual() {
        DefaultTableModel modelo = new DefaultTableModel();
        String colasvalidas = Fichas.Selector.getSelector().ColasValidas();
        bd.estableceConexion();
        String SQL = "SELECT Indicadores FROM Candidatos  WHERE Candidatos.CodigoEstadistico = '5' AND Candidatos.Cola IN(" + colasvalidas + ")  AND  LEN(Niu) > 8 AND LEN(Indicadores) > 8";
        String turno = Fichas.Selector.getSelector().PedirTurno();
        if (!turno.equals(" ")) {
            SQL += " AND Candidatos.Turno = '" + turno + "' ";
        }
        SQL =  transformaACodEsta(SQL);
        ResultSet rs = bd.dameLista(SQL);
        ConversorResultSetADefaultTableModel.rellena(rs, modelo);
        bd.cierraConexion();
        return modelo;
    }
}
