package com.ejie.ad74a.dao;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.support.DataAccessUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.ejie.ad74a.annotation.HistoricoAnnotation;
import com.ejie.ad74a.dao.comun.UtilDAO;
import com.ejie.ad74a.exceptions.ManagerErrors;
import com.ejie.ad74a.model.BandejaPapel0;
import com.ejie.ad74a.model.BandejaTelematica;
import com.ejie.ad74a.model.Cuentas;
import com.ejie.ad74a.model.DatosInterop;
import com.ejie.ad74a.model.Dependencia;
import com.ejie.ad74a.model.Direcciones;
import com.ejie.ad74a.model.Discapacidad;
import com.ejie.ad74a.model.Estados;
import com.ejie.ad74a.model.Expedientes;
import com.ejie.ad74a.model.Instalaciones;
import com.ejie.ad74a.model.Perfiles;
import com.ejie.ad74a.model.PisosTutelados;
import com.ejie.ad74a.model.Solicitantes;
import com.ejie.ad74a.model.TramitesExpediente;
import com.ejie.ad74a.model.Valoraciones;
import com.ejie.ad74a.util.Ad74aDataBaseAudit;
import com.ejie.ad74a.util.UtilSQL;
import com.ejie.ad74a.util.comun.UtilSeguridad;
import com.ejie.ad74a.util.comun.Utilidades;
import com.ejie.ad74a.util.constantes.Constantes;
import com.ejie.ad74a.util.constantes.ErroresExpedienteEnum;
import com.ejie.ad74a.util.constantes.EstadosExpedienteEnum;
import com.ejie.ad74a.util.constantes.FinalizacionEstudioEnum;
import com.ejie.ad74a.util.constantes.ProcedimientosEnum;
import com.ejie.ad74a.util.constantes.modelos.TipoExpedientes;
import com.ejie.x38.dao.RowNumResultSetExtractor;
import com.ejie.x38.dto.JerarquiaDto;
import com.ejie.x38.dto.TableManager;
import com.ejie.x38.dto.TableManagerJerarquia;
import com.ejie.x38.dto.TableRequestDto;
import com.ejie.x38.dto.TableRowDto;
import com.ejie.x38.json.JSONObject;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

import es.redsara.intermediacion.scsp.esquemas.datosespecificos.Retorno;

/**
 * ExpedientesDaoImpl generated by UDA, 10-feb-2023 12:13:19.
 * 
 * @author UDA
 */

@Repository
@Transactional
public class ExpedientesDaoImpl implements ExpedientesDao {
	private static final Logger logger = LoggerFactory.getLogger(ExpedientesDaoImpl.class);
	@Autowired
	private Ad74aJdbcTemplate ad74aJdbcTemplate;

	public static final String[] ORDER_BY_WHITE_LIST = new String[] { "IDEXPEDIENTE00", "FOLDERID00", "FREGISTRO00",
			"NUMREGISTRO00", "FREGISTROOTRO00", "NUMREGISTROOTRO00", "FRECEPCION00", "FAPERTURAEXP00", "FCIERRE00",
			"FARCHIVO00", "FDESISTIMIENTO00", "FRESOLDESIS00", "IDTIPOENTRADA00", "NUMEXPEDIENTE00", "IDTIPONOT00",
			"CANALNOT00", "EMAILNOT00", "TFNONOT00", "IDIOMANOT00", "IDPROCEDIMIENTO00", "DEOFICIO00", "URGENCIA00",
			"RAZONURGENCIA00", "CODIGOSGA00", "PRESENTASOL00", "SEOPONE00", "NOMBRECON00", "APELLIDO1CON00",
			"APELLIDO2CON00", "AUTORIZACIONCON00", "IDENTIFICADORCON00", "TIPOIDENCON00", "EXENCIONSOL00",
			"EXENCIONRES00", "EXISTEINSTALACION00", "ERROREXPEDIENTE00", "IDIOMASERVICIO00", "FBAJA00",
			"IDMOTIVOBAJA00", "OBSERVACIONES00", "TECNICOEXPEDIENTE00", "TIPOREP00", "TIPOIDENTIFICADORREP00",
			"IDENTIFICADORREP00", "NOMBREREP00", "APELLIDO1REP00", "APELLIDO2REP00", "SEXOREP00", "RAZONSOCIALREP00",
			"IDDIRECCIONNOTIF00", "AUTORIZACONSULTA00", "AUTORIZADARINFO00", "TIPODESIS00", "EXONERACIONRES00",
			"ESTADONOTIFICACION00", "RESULTADOESTUDIO00", "FRESOLUCION00", "PRECIOFINAL00", "DOCUMENTACION00",
			"MOTIVOINFORME00", "ORIGENOFICIO00", "USUALTA00", "USUMODIF00", "FALTA00", "FMODIF00", "SOLIDSOLICITANTE01",
			"SOLTIPOIDENTIFICADOR01", "SOLIDENTIFICADOR01", "SOLNOMBRE01", "SOLAPELLIDO101", "SOLAPELLIDO201",
			"SOLSEXO01", "SOLFNACIMIENTO01", "SOLNUMSS01", "SOLNUMTIS01", "SOLFALTATELEASISTENCIA01",
			"SOLBENEFICIARIO01", "SOLFBENEFICIARIO01", "SOLFBAJA01", "SOLFINICIO01", "SOLNUMABONADO01",
			"SOLOBSERVACIONES01", "SOLNOREINTENTAR01", "SOLIDIOMASERVICIO01", "SOLIDIOMASOLICITANTE01",
			"SOLOTROIDIOMA01", "SOLTLFNOSERVICIO01", "SOLTLFNOMOVIL01", "SOLEMAIL01", "SOLTIPOBENEFICIARIO01",
			"SOLFRETIRADA01", "SOLUSUALTA01", "SOLUSUMODIF01", "SOLFALTA01", "SOLFMODIF01", "SOLINSTALADO01",
			"SOLIDMOTIVOBAJA01", "PERFILESIDPERFIL07", "PERFILESMAYOR65DEP07", "PERFILESMAYOR65RIESGODEP07",
			"PERFILESMAYOR75SOLA07", "PERFILESDISINTELECTUAL07", "PERFILESDISFISICA07", "PERFILESDISSENSORIAL07",
			"PERFILESENFMENTAL07", "PERFILESRIESGOAISLAMIENTO07", "PERFILESPISOTUTELADO07", "PERFILESFALTA07",
			"PERFILESUSUALTA07", "CUENTASIDCUENTA05", "CUENTASNUMCUENTA05", "CUENTASCODTIPOIDENTITULAR05",
			"CUENTASIDENTITULAR05", "CUENTASIDSOLICITANTE05", "CUENTASUSUHISTORICO05", "CUENTASFHISTORICO05",
			"CUENTASFALTA05", "CUENTASUSUALTA05", "ESTADOSIDESTADO30", "ESTADOSDESCES30", "ESTADOSDESCEU30",
			"DIRECCIONESIDDIRECCION06", "DIRECCIONESCALLE06", "DIRECCIONESCP06", "DIRECCIONESIDCALLE06",
			"DIRECCIONESIDLOCALIDAD06", "DIRECCIONESIDMUNICIPIO06", "DIRECCIONESIDPAIS06", "DIRECCIONESIDPORTAL06",
			"DIRECCIONESIDPROVINCIA06", "DIRECCIONESLETRA06", "DIRECCIONESLOCALIDAD06", "DIRECCIONESMUNICIPIO06",
			"DIRECCIONESPAIS06", "DIRECCIONESPISO06", "DIRECCIONESPORTAL06", "DIRECCIONESESCALERA06",
			"DIRECCIONESPROVINCIA06", "DIRECCIONESIDSOLICITANTE06", "DIRECCIONESUSUHISTORICO06",
			"DIRECCIONESFHISTORICO06", "DIRECCIONESFALTA06", "DIRECCIONESUSUALTA06", "SOLIDCUENTA01", "SOLIDPERFIL01",
			"SOLIDDIRECCION01", "SOLIDVALORACION01", "PERFILESIDPISO07", "ESDENEGACIONSERVICIO00",
			"PDTESOLICITARPADRON00" };

	private JdbcTemplate jdbcTemplate;
	// private Ad74aJdbcTemplate jdbcTemplate;

	private SimpleJdbcCall jdbcCall;

	public static final String SEQUENCE_EXPEDIENTE = "SEQ_EXPEDIENTES";

	public static final String SEQUENCE_NUM_FOLDER_ALTA = "SEQ_NUM_FOLDER_ALTA";
	public static final String SEQUENCE_NUM_FOLDER_BAJA = "SEQ_NUM_FOLDER_BAJA";
	public static final String SEQUENCE_NUM_FOLDER_UPDATE = "SEQ_NUM_FOLDER_UPDATE";
	public static final String SEQUENCE_NUM_FOLDER_REVISION = "SEQ_NUM_FOLDER_REVISION";
	public static final String SEQUENCE_NUM_FOLDER_INFORME = "SEQ_NUM_FOLDER_INFORME";
	public static final String SEQUENCE_NUM_FOLDER_LIQUIDACION = "SEQ_NUM_FOLDER_LIQUIDACION";

	/*
	 * ROW_MAPPERS
	 */
	private RowMapper<Expedientes> rwMap = new RowMapper<Expedientes>() {
		public Expedientes mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			Expedientes expedientes = new Expedientes(UtilSQL.getLong(resultSet, "IDEXPEDIENTE00"),
					resultSet.getString("FOLDERID00"), resultSet.getTimestamp("FREGISTRO00"),
					resultSet.getString("NUMREGISTRO00"), resultSet.getTimestamp("FREGISTROOTRO00"),
					resultSet.getString("NUMREGISTROOTRO00"), resultSet.getDate("FRECEPCION00"),
					resultSet.getDate("FAPERTURAEXP00"), resultSet.getDate("FCIERRE00"),
					resultSet.getDate("FARCHIVO00"), resultSet.getDate("FDESISTIMIENTO00"),
					resultSet.getDate("FRESOLDESIS00"), resultSet.getString("IDTIPOENTRADA00"),
					resultSet.getString("NUMEXPEDIENTE00"), resultSet.getString("IDTIPONOT00"),
					resultSet.getString("CANALNOT00"), resultSet.getString("EMAILNOT00"),
					resultSet.getString("TFNONOT00"), resultSet.getString("IDIOMANOT00"),
					resultSet.getString("IDPROCEDIMIENTO00"), UtilSQL.getInt(resultSet, "DEOFICIO00"),
					UtilSQL.getInt(resultSet, "URGENCIA00"), resultSet.getString("RAZONURGENCIA00"),
					UtilSQL.getLong(resultSet, "CODIGOSGA00"), UtilSQL.getInt(resultSet, "PRESENTASOL00"),
					UtilSQL.getInt(resultSet, "SEOPONE00"), resultSet.getString("NOMBRECON00"),
					resultSet.getString("APELLIDO1CON00"), resultSet.getString("APELLIDO2CON00"),
					UtilSQL.getInt(resultSet, "AUTORIZACIONCON00"), resultSet.getString("IDENTIFICADORCON00"),
					resultSet.getString("TIPOIDENCON00"), UtilSQL.getInt(resultSet, "EXENCIONSOL00"),
					UtilSQL.getInt(resultSet, "EXENCIONRES00"), resultSet.getDate("FBAJA00"),
					UtilSQL.getLong(resultSet, "IDMOTIVOBAJA00"), resultSet.getString("OBSERVACIONES00"),
					UtilSQL.getInt(resultSet, "EXISTEINSTALACION00"), UtilSQL.getInt(resultSet, "ERROREXPEDIENTE00"),
					UtilSQL.getInt(resultSet, "IDIOMASERVICIO00"), resultSet.getString("TECNICOEXPEDIENTE00"),
					UtilSQL.getInt(resultSet, "TIPOREP00"), resultSet.getString("TIPOIDENTIFICADORREP00"),
					resultSet.getString("IDENTIFICADORREP00"), resultSet.getString("NOMBREREP00"),
					resultSet.getString("APELLIDO1REP00"), resultSet.getString("APELLIDO2REP00"),
					resultSet.getString("SEXOREP00"), resultSet.getString("RAZONSOCIALREP00"),
					UtilSQL.getInt(resultSet, "CONTACTOINSTREP00"), UtilSQL.getLong(resultSet, "IDDIRECCIONNOTIF00"),
					UtilSQL.getInt(resultSet, "AUTORIZACONSULTA00"), UtilSQL.getInt(resultSet, "AUTORIZADARINFO00"),
					resultSet.getString("TIPODESIS00"), UtilSQL.getInt(resultSet, "EXONERACIONRES00"),
					UtilSQL.getInt(resultSet, "ESTADONOTIFICACION00"), UtilSQL.getInt(resultSet, "RESULTADOESTUDIO00"),
					resultSet.getDate("FRESOLUCION00"), resultSet.getBigDecimal("PRECIOFINAL00"),
					UtilSQL.getInt(resultSet, "DOCUMENTACION00"), resultSet.getString("MOTIVOINFORME00"),
					resultSet.getString("ORIGENOFICIO00"), resultSet.getString("USUALTA00"),
					resultSet.getString("USUMODIF00"), resultSet.getDate("FALTA00"), resultSet.getDate("FMODIF00"),
					UtilSQL.getInt(resultSet, "RESULTADOESTUDIO00"),
					new Solicitantes(UtilSQL.getLong(resultSet, "SOLIDSOLICITANTE01"),
							resultSet.getString("SOLTIPOIDENTIFICADOR01"), resultSet.getString("SOLIDENTIFICADOR01"),
							resultSet.getString("SOLNOMBRE01"), resultSet.getString("SOLAPELLIDO101"),
							resultSet.getString("SOLAPELLIDO201"), resultSet.getString("SOLSEXO01"),
							resultSet.getDate("SOLFNACIMIENTO01"), resultSet.getString("SOLNUMSS01"),
							resultSet.getString("SOLNUMTIS01"), resultSet.getDate("SOLFALTATELEASISTENCIA01"),
							UtilSQL.getInt(resultSet, "SOLBENEFICIARIO01"), resultSet.getDate("SOLFBENEFICIARIO01"),
							resultSet.getDate("SOLFBAJA01"), resultSet.getDate("SOLFINICIO01"),
							resultSet.getString("SOLNUMABONADO01"), resultSet.getString("SOLOBSERVACIONES01"),
							UtilSQL.getInt(resultSet, "SOLNOREINTENTAR01"),
							UtilSQL.getInt(resultSet, "SOLIDIOMASERVICIO01"),
							UtilSQL.getInt(resultSet, "SOLIDIOMASOLICITANTE01"), resultSet.getString("SOLOTROIDIOMA01"),
							resultSet.getString("SOLTLFNOSERVICIO01"), resultSet.getString("SOLTLFNOMOVIL01"),
							resultSet.getString("SOLEMAIL01"), UtilSQL.getInt(resultSet, "SOLTIPOBENEFICIARIO01"),
							resultSet.getDate("SOLFRETIRADA01"), UtilSQL.getInt(resultSet, "SOLMANTENERINST01"),
							UtilSQL.getInt(resultSet, "SOLEXENCION01"), UtilSQL.getInt(resultSet, "SOLEXONERACION01"),
							UtilSQL.getInt(resultSet, "SOLINSTALADO01"),
							// UtilSQL.getInt(resultSet, "SOLMOTIVINSTFUERAPLAZO01"),
							UtilSQL.getLong(resultSet, "SOLIDMOTIVOBAJA01"), resultSet.getString("SOLUSUALTA01"),
							resultSet.getString("SOLUSUMODIF01"), resultSet.getDate("SOLFALTA01"),
							resultSet.getDate("SOLFMODIF01"), UtilSQL.getInt(resultSet, "ESDENEGACIONSERVICIO01"),
							new Cuentas(UtilSQL.getLong(resultSet, "SOLIDCUENTA01"), null, null, null, null, null, null,
									null, null, null),
							new Perfiles(UtilSQL.getLong(resultSet, "SOLIDPERFIL01"), null, null, null, null, null,
									null, null, null, null, null, null, null, null, null),
							new Direcciones(UtilSQL.getLong(resultSet, "SOLIDDIRECCION01"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null),
							new Valoraciones(UtilSQL.getLong(resultSet, "SOLIDVALORACION01"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null),
							null),
					new Perfiles(UtilSQL.getLong(resultSet, "PerfilesIDPERFIL07"),
							UtilSQL.getInt(resultSet, "PerfilesMAYOR65DEP07"),
							UtilSQL.getInt(resultSet, "PerfilesMAYOR65RIESGODEP07"),
							UtilSQL.getInt(resultSet, "PerfilesMAYOR75SOLA07"),
							UtilSQL.getInt(resultSet, "PerfilesDISINTELECTUAL07"),
							UtilSQL.getInt(resultSet, "PerfilesDISFISICA07"),
							UtilSQL.getInt(resultSet, "PerfilesDISSENSORIAL07"),
							UtilSQL.getInt(resultSet, "PerfilesENFMENTAL07"),
							UtilSQL.getInt(resultSet, "PerfilesRIESGOAISLAMIENTO07"),
							UtilSQL.getInt(resultSet, "PerfilesPISOTUTELADO07"), resultSet.getDate("PerfilesFALTA07"),
							resultSet.getString("PerfilesUSUALTA07"),
							new PisosTutelados(UtilSQL.getLong(resultSet, "PerfilesIDPISO07"), null, null, null, null,
									null, null, null, null)),
					new Cuentas(UtilSQL.getLong(resultSet, "CuentasIDCUENTA05"),
							resultSet.getString("CuentasNUMCUENTA05"),
							resultSet.getString("CuentasCODTIPOIDENTITULAR05"),
							resultSet.getString("CuentasIDENTITULAR05"),
							UtilSQL.getLong(resultSet, "CUENTASIDSOLICITANTE05"),
							resultSet.getString("CUENTASUSUHISTORICO05"), resultSet.getDate("CUENTASFHISTORICO05"),
							resultSet.getDate("CuentasFALTA05"), resultSet.getString("CuentasUSUALTA05"),
							resultSet.getString("NOMBRETITCUENTA05"), resultSet.getString("APELLIDO1TITCUENTA05"),
							resultSet.getString("APELLIDO2TITCUENTA05")),
					new Estados(UtilSQL.getLong(resultSet, "EstadosIDESTADO30"), resultSet.getString("EstadosDESCES30"),
							resultSet.getString("EstadosDESCEU30"), UtilSQL.getInt(resultSet, "ORDEN30"),
							UtilSQL.getInt(resultSet, "VISIBLE30")),
					new Direcciones(UtilSQL.getLong(resultSet, "DireccionesIDDIRECCION06"),
							resultSet.getString("DireccionesCALLE06"), resultSet.getString("DireccionesCP06"),
							UtilSQL.getLong(resultSet, "DireccionesIDCALLE06"),
							UtilSQL.getLong(resultSet, "DireccionesIDLOCALIDAD06"),
							resultSet.getString("DireccionesIDMUNICIPIO06"), resultSet.getString("DireccionesIDPAIS06"),
							UtilSQL.getLong(resultSet, "DireccionesIDPORTAL06"),
							resultSet.getString("DireccionesIDPROVINCIA06"), resultSet.getString("DireccionesLETRA06"),
							resultSet.getString("DireccionesLOCALIDAD06"),
							resultSet.getString("DireccionesMUNICIPIO06"), resultSet.getString("DireccionesPAIS06"),
							resultSet.getString("DireccionesPISO06"), resultSet.getString("DireccionesPORTAL06"),
							resultSet.getString("DireccionesESCALERA06"), resultSet.getString("DireccionesPROVINCIA06"),
							UtilSQL.getLong(resultSet, "DIRECCIONESIDSOLICITANTE06"),
							resultSet.getString("DIRECCIONESUSUHISTORICO06"),
							resultSet.getDate("DIRECCIONESFHISTORICO06"), resultSet.getDate("DireccionesFALTA06"),
							resultSet.getString("DireccionesUSUALTA06")));

			if (expedientes.getErrorExpediente00() != null) {
				expedientes.setErrorExpediente00_desc(
						ErroresExpedienteEnum.getDesc(expedientes.getErrorExpediente00().intValue()));
			}

			// Dirección de notificación
			if (UtilDAO.hasColumn(resultSet, "DIRECCIONESNOTIDDIRECCION06")
					&& UtilSQL.getLong(resultSet, "DIRECCIONESNOTIDDIRECCION06") != 0L) {

				Direcciones direccionNotif = new Direcciones(UtilSQL.getLong(resultSet, "DIRECCIONESNOTIDDIRECCION06"),
						resultSet.getString("DIRECCIONESNOTCALLE06"), resultSet.getString("DIRECCIONESNOTCP06"),
						UtilSQL.getLong(resultSet, "DIRECCIONESNOTIDCALLE06"),
						UtilSQL.getLong(resultSet, "DIRECCIONESNOTIDLOCALIDAD06"),
						resultSet.getString("DIRECCIONESNOTIDMUNICIPIO06"),
						resultSet.getString("DIRECCIONESNOTIDPAIS06"),
						UtilSQL.getLong(resultSet, "DIRECCIONESNOTIDPORTAL06"),
						resultSet.getString("DIRECCIONESNOTIDPROVINCIA06"),
						resultSet.getString("DIRECCIONESNOTLETRA06"), resultSet.getString("DIRECCIONESNOTLOCALIDAD06"),
						resultSet.getString("DIRECCIONESNOTMUNICIPIO06"), resultSet.getString("DIRECCIONESNOTPAIS06"),
						resultSet.getString("DIRECCIONESNOTPISO06"), resultSet.getString("DIRECCIONESNOTPORTAL06"),
						resultSet.getString("DIRECCIONESNOTESCALERA06"),
						resultSet.getString("DIRECCIONESNOTPROVINCIA06"),
						UtilSQL.getLong(resultSet, "DIRECCIONESNOTIDSOLICITANTE06"),
						resultSet.getString("DIRECCIONESNOTUSUHISTORICO06"),
						resultSet.getDate("DIRECCIONESNOTFHISTORICO06"), resultSet.getDate("DIRECCIONESNOTFALTA06"),
						resultSet.getString("DIRECCIONESNOTUSUALTA06"));

				expedientes.setDireccionNotif(direccionNotif);

			}

			DatosInterop datosInterop = new DatosInterop(UtilSQL.getLong(resultSet, "INTEROPIDINTEROP19"));
			datosInterop.setCodresulConDgp19(resultSet.getString("INTEROPCODRESULCONDGP19"));
			datosInterop.setResulConDgp19(resultSet.getString("INTEROPRESULCONDGP19"));
			expedientes.setDatosInterop(datosInterop);
			// TramitesExpediente te = new TramitesExpediente();
			// te.setExpediente(new Expedientes());
			// te.getExpediente().setSeOpone00(UtilSQL.getInt(resultSet, "SEOPONE00"));
			// Discapacidad disc = new Discapacidad();
			// disc.setIdDiscapacidad71(UtilSQL.getLong(resultSet, "IDDISCAPACIDAD71"));
			// disc.setDescDiscapacidad71(resultSet.getString("DESCDISCAPACIDAD71"));
			// disc.setDiscapacidadFisica71(UtilSQL.getInt(resultSet,"DISCAPACIDADFISICA71"));
			// disc.setDiscapacidadIntelecto71(UtilSQL.getInt(resultSet,"DISCAPACIDADINTELECTO71"));
			// disc.setDiscapacidadSensorial71(UtilSQL.getInt(resultSet,"DISCAPACIDADSENSORIAL71"));
			// te.setDiscapacidad(disc);
			// Dependencia depe = new Dependencia();
			// depe.setIdDependencia04(UtilSQL.getLong(resultSet, "IDDEPENDENCIA04"));
			// depe.setIdGradoDependencia04(UtilSQL.getLong(resultSet,"IDGRADODEPENDENCIA04"));
			// depe.setDescOtraDependencia04(resultSet.getString("DESCOTRADEPENDENCIA04"));
			// depe.setBaremo04(UtilSQL.getLong(resultSet,"BAREMO_04"));
			// depe.setfResolucion04(resultSet.getDate("FRESOLUCION04"));
			// te.setDependencias(depe);
			// expedientes.setTramitesExpediente(te);

			// Instalación
			if (UtilDAO.hasColumn(resultSet, "FINSTALACION52") && resultSet.getDate("FINSTALACION52") != null) {
				Instalaciones instalaciones = new Instalaciones();
				instalaciones.setfInstalacion52(resultSet.getDate("FINSTALACION52"));
				instalaciones.setMotivInstFueraPlazo52(resultSet.getInt("MOTIVINSTFUERAPLAZO52"));
				expedientes.getSolicitantes().setInstalaciones(instalaciones);
			}

			return expedientes;
		}
	};

	private RowMapper<Expedientes> rwMapFind = new RowMapper<Expedientes>() {
		private ObjectMapper omInteropDatosRetorno = new ObjectMapper()
				.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

		public Expedientes mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			Expedientes expedientes = new Expedientes(UtilSQL.getLong(resultSet, "IDEXPEDIENTE00"),
					resultSet.getString("FOLDERID00"), resultSet.getTimestamp("FREGISTRO00"),
					resultSet.getString("NUMREGISTRO00"), resultSet.getTimestamp("FREGISTROOTRO00"),
					resultSet.getString("NUMREGISTROOTRO00"), resultSet.getDate("FRECEPCION00"),
					resultSet.getDate("FAPERTURAEXP00"), resultSet.getDate("FCIERRE00"),
					resultSet.getDate("FARCHIVO00"), resultSet.getDate("FDESISTIMIENTO00"),
					resultSet.getDate("FRESOLDESIS00"), resultSet.getString("IDTIPOENTRADA00"),
					resultSet.getString("NUMEXPEDIENTE00"), resultSet.getString("IDTIPONOT00"),
					resultSet.getString("CANALNOT00"), resultSet.getString("EMAILNOT00"),
					resultSet.getString("TFNONOT00"), resultSet.getString("IDIOMANOT00"),
					resultSet.getString("IDPROCEDIMIENTO00"), UtilSQL.getInt(resultSet, "DEOFICIO00"),
					UtilSQL.getInt(resultSet, "URGENCIA00"), resultSet.getString("RAZONURGENCIA00"),
					UtilSQL.getLong(resultSet, "CODIGOSGA00"), UtilSQL.getInt(resultSet, "PRESENTASOL00"),
					UtilSQL.getInt(resultSet, "SEOPONE00"), resultSet.getString("NOMBRECON00"),
					resultSet.getString("APELLIDO1CON00"), resultSet.getString("APELLIDO2CON00"),
					UtilSQL.getInt(resultSet, "AUTORIZACIONCON00"), resultSet.getString("IDENTIFICADORCON00"),
					resultSet.getString("TIPOIDENCON00"), UtilSQL.getInt(resultSet, "EXENCIONSOL00"),
					UtilSQL.getInt(resultSet, "EXENCIONRES00"), resultSet.getDate("FBAJA00"),
					UtilSQL.getLong(resultSet, "IDMOTIVOBAJA00"), resultSet.getString("OBSERVACIONES00"),
					UtilSQL.getInt(resultSet, "EXISTEINSTALACION00"), UtilSQL.getInt(resultSet, "ERROREXPEDIENTE00"),
					UtilSQL.getInt(resultSet, "IDIOMASERVICIO00"), resultSet.getString("TECNICOEXPEDIENTE00"),
					UtilSQL.getInt(resultSet, "TIPOREP00"), resultSet.getString("TIPOIDENTIFICADORREP00"),
					resultSet.getString("IDENTIFICADORREP00"), resultSet.getString("NOMBREREP00"),
					resultSet.getString("APELLIDO1REP00"), resultSet.getString("APELLIDO2REP00"),
					resultSet.getString("SEXOREP00"), resultSet.getString("RAZONSOCIALREP00"),
					UtilSQL.getInt(resultSet, "CONTACTOINSTREP00"), UtilSQL.getLong(resultSet, "IDDIRECCIONNOTIF00"),
					UtilSQL.getInt(resultSet, "AUTORIZACONSULTA00"), UtilSQL.getInt(resultSet, "AUTORIZADARINFO00"),
					resultSet.getString("TIPODESIS00"), UtilSQL.getInt(resultSet, "EXONERACIONRES00"),
					UtilSQL.getInt(resultSet, "ESTADONOTIFICACION00"), UtilSQL.getInt(resultSet, "RESULTADOESTUDIO00"),
					resultSet.getDate("FRESOLUCION00"), resultSet.getBigDecimal("PRECIOFINAL00"),
					UtilSQL.getInt(resultSet, "DOCUMENTACION00"), resultSet.getString("MOTIVOINFORME00"),
					resultSet.getString("ORIGENOFICIO00"), resultSet.getString("USUALTA00"),
					resultSet.getString("USUMODIF00"), resultSet.getDate("FALTA00"), resultSet.getDate("FMODIF00"),
					UtilSQL.getInt(resultSet, "ESDENEGACIONSERVICIO00"), UtilSQL.getLong(resultSet, "IDLIQUIDACION00"),
					new Solicitantes(UtilSQL.getLong(resultSet, "SOLIDSOLICITANTE01"),
							resultSet.getString("SOLTIPOIDENTIFICADOR01"), resultSet.getString("SOLIDENTIFICADOR01"),
							resultSet.getString("SOLNOMBRE01"), resultSet.getString("SOLAPELLIDO101"),
							resultSet.getString("SOLAPELLIDO201"), resultSet.getString("SOLSEXO01"),
							resultSet.getDate("SOLFNACIMIENTO01"), resultSet.getString("SOLNUMSS01"),
							resultSet.getString("SOLNUMTIS01"), resultSet.getDate("SOLFALTATELEASISTENCIA01"),
							UtilSQL.getInt(resultSet, "SOLBENEFICIARIO01"), resultSet.getDate("SOLFBENEFICIARIO01"),
							resultSet.getDate("SOLFBAJA01"), resultSet.getDate("SOLFINICIO01"),
							resultSet.getString("SOLNUMABONADO01"), resultSet.getString("SOLOBSERVACIONES01"),
							UtilSQL.getInt(resultSet, "SOLNOREINTENTAR01"),
							UtilSQL.getInt(resultSet, "SOLIDIOMASERVICIO01"),
							UtilSQL.getInt(resultSet, "SOLIDIOMASOLICITANTE01"), resultSet.getString("SOLOTROIDIOMA01"),
							resultSet.getString("SOLTLFNOSERVICIO01"), resultSet.getString("SOLTLFNOMOVIL01"),
							resultSet.getString("SOLEMAIL01"), UtilSQL.getInt(resultSet, "SOLTIPOBENEFICIARIO01"),
							resultSet.getDate("SOLFRETIRADA01"), UtilSQL.getInt(resultSet, "SOLMANTENERINST01"),
							UtilSQL.getInt(resultSet, "SOLEXENCION01"), UtilSQL.getInt(resultSet, "SOLEXONERACION01"),
							UtilSQL.getInt(resultSet, "SOLINSTALADO01"),
							// UtilSQL.getInt(resultSet, "SOLMOTIVINSTFUERAPLAZO01"),
							UtilSQL.getLong(resultSet, "SOLIDMOTIVOBAJA01"), resultSet.getString("SOLUSUALTA01"),
							resultSet.getString("SOLUSUMODIF01"), resultSet.getDate("SOLFALTA01"),
							resultSet.getDate("SOLFMODIF01"), UtilSQL.getInt(resultSet, "ESDENEGACIONSERVICIO01"),
							new Cuentas(UtilSQL.getLong(resultSet, "SOLIDCUENTA01"), null, null, null, null, null, null,
									null, null, null),
							new Perfiles(UtilSQL.getLong(resultSet, "SOLIDPERFIL01"), null, null, null, null, null,
									null, null, null, null, null, null, null, null, null),
							new Direcciones(UtilSQL.getLong(resultSet, "SOLIDDIRECCION01"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null),
							new Valoraciones(UtilSQL.getLong(resultSet, "SOLIDVALORACION01"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null),
							null),
					new Perfiles(UtilSQL.getLong(resultSet, "PerfilesIDPERFIL07"),
							UtilSQL.getInt(resultSet, "PerfilesMAYOR65DEP07"),
							UtilSQL.getInt(resultSet, "PerfilesMAYOR65RIESGODEP07"),
							UtilSQL.getInt(resultSet, "PerfilesMAYOR75SOLA07"),
							UtilSQL.getInt(resultSet, "PerfilesDISINTELECTUAL07"),
							UtilSQL.getInt(resultSet, "PerfilesDISFISICA07"),
							UtilSQL.getInt(resultSet, "PerfilesDISSENSORIAL07"),
							UtilSQL.getInt(resultSet, "PerfilesENFMENTAL07"),
							UtilSQL.getInt(resultSet, "PerfilesRIESGOAISLAMIENTO07"),
							UtilSQL.getInt(resultSet, "PerfilesPISOTUTELADO07"), resultSet.getDate("PerfilesFALTA07"),
							resultSet.getString("PerfilesUSUALTA07"),
							new PisosTutelados(UtilSQL.getLong(resultSet, "PerfilesIDPISO07"), null, null, null, null,
									null, null, null, null)),
					new Cuentas(UtilSQL.getLong(resultSet, "CuentasIDCUENTA05"),
							resultSet.getString("CuentasNUMCUENTA05"),
							resultSet.getString("CuentasCODTIPOIDENTITULAR05"),
							resultSet.getString("CuentasIDENTITULAR05"),
							UtilSQL.getLong(resultSet, "CUENTASIDSOLICITANTE05"),
							resultSet.getString("CUENTASUSUHISTORICO05"), resultSet.getDate("CUENTASFHISTORICO05"),
							resultSet.getDate("CuentasFALTA05"), resultSet.getString("CuentasUSUALTA05"),
							resultSet.getString("NOMBRETITCUENTA05"), resultSet.getString("APELLIDO1TITCUENTA05"),
							resultSet.getString("APELLIDO2TITCUENTA05")),
					new Estados(UtilSQL.getLong(resultSet, "EstadosIDESTADO30"), resultSet.getString("EstadosDESCES30"),
							resultSet.getString("EstadosDESCEU30"), UtilSQL.getInt(resultSet, "ORDEN30"),
							UtilSQL.getInt(resultSet, "VISIBLE30")),
					new Direcciones(UtilSQL.getLong(resultSet, "DireccionesIDDIRECCION06"),
							resultSet.getString("DireccionesCALLE06"), resultSet.getString("DireccionesCP06"),
							UtilSQL.getLong(resultSet, "DireccionesIDCALLE06"),
							UtilSQL.getLong(resultSet, "DireccionesIDLOCALIDAD06"),
							resultSet.getString("DireccionesIDMUNICIPIO06"), resultSet.getString("DireccionesIDPAIS06"),
							UtilSQL.getLong(resultSet, "DireccionesIDPORTAL06"),
							resultSet.getString("DireccionesIDPROVINCIA06"), resultSet.getString("DireccionesLETRA06"),
							resultSet.getString("DireccionesLOCALIDAD06"),
							resultSet.getString("DireccionesMUNICIPIO06"), resultSet.getString("DireccionesPAIS06"),
							resultSet.getString("DireccionesPISO06"), resultSet.getString("DireccionesPORTAL06"),
							resultSet.getString("DireccionesESCALERA06"), resultSet.getString("DireccionesPROVINCIA06"),
							UtilSQL.getLong(resultSet, "DIRECCIONESIDSOLICITANTE06"),
							resultSet.getString("DIRECCIONESUSUHISTORICO06"),
							resultSet.getDate("DIRECCIONESFHISTORICO06"), resultSet.getDate("DireccionesFALTA06"),
							resultSet.getString("DireccionesUSUALTA06")),
					new Direcciones(UtilSQL.getLong(resultSet, "DireccionesNOTIDDIRECCION06"),
							resultSet.getString("DireccionesNOTCALLE06"), resultSet.getString("DireccionesNOTCP06"),
							UtilSQL.getLong(resultSet, "DireccionesNOTIDCALLE06"),
							UtilSQL.getLong(resultSet, "DireccionesNOTIDLOCALIDAD06"),
							resultSet.getString("DireccionesNOTIDMUNICIPIO06"),
							resultSet.getString("DireccionesNOTIDPAIS06"),
							UtilSQL.getLong(resultSet, "DireccionesNOTIDPORTAL06"),
							resultSet.getString("DireccionesNOTIDPROVINCIA06"),
							resultSet.getString("DireccionesNOTLETRA06"),
							resultSet.getString("DireccionesNOTLOCALIDAD06"),
							resultSet.getString("DireccionesNOTMUNICIPIO06"),
							resultSet.getString("DireccionesNOTPAIS06"), resultSet.getString("DireccionesNOTPISO06"),
							resultSet.getString("DireccionesNOTPORTAL06"),
							resultSet.getString("DireccionesNOTESCALERA06"),
							resultSet.getString("DireccionesNOTPROVINCIA06"),
							UtilSQL.getLong(resultSet, "DireccionesNOTIDSOLICITANTE06"),
							resultSet.getString("DireccionesNOTUSUHISTORICO06"),
							resultSet.getDate("DireccionesNOTFHISTORICO06"), resultSet.getDate("DireccionesNOTFALTA06"),
							resultSet.getString("DireccionesNOTUSUALTA06")));

			if (expedientes.getErrorExpediente00() != null) {
				expedientes.setErrorExpediente00_desc(
						ErroresExpedienteEnum.getDesc(expedientes.getErrorExpediente00().intValue()));
			}

			DatosInterop datosInterop = new DatosInterop(UtilSQL.getLong(resultSet, "INTEROPIDINTEROP19"));
			datosInterop.setCodresulConDgp19(resultSet.getString("INTEROPCODRESULCONDGP19"));
			datosInterop.setResulConDgp19(resultSet.getString("INTEROPRESULCONDGP19"));
			datosInterop.setCodresulConPadron19(resultSet.getString("INTEROPCODRESULCONPADRON19"));
			datosInterop.setResulConPadron19(resultSet.getString("INTEROPRESULCONPADRON19"));
			datosInterop.setCodresulConIrpf19(resultSet.getString("INTEROPCODRESULCONIRPF19"));
			datosInterop.setResulConIrpf19(resultSet.getString("INTEROPRESULCONIRPF19"));
			datosInterop.setCodresulConImserso19(resultSet.getString("INTEROPCODRESULCONIMSERSO19"));
			datosInterop.setResulConImserso19(resultSet.getString("INTEROPRESULCONIMSERSO19"));
			datosInterop.setCodresulConConyuIrpf19(resultSet.getString("INTEROPCODRESULCONCONYUIRPF19"));
			datosInterop.setResulConConyuIrpf19(resultSet.getString("INTEROPRESULCONCONYUIRPF19"));
			datosInterop.setCodresulDiscapa19(resultSet.getString("INTEROPCODRESULDISCAPA19"));
			datosInterop.setResulDiscapa19(resultSet.getString("INTEROPRESULDISCAPA19"));

			String datosRetornoDGPStr = resultSet.getString("INTEROPDATOSRETORNODGP19");
			if (StringUtils.isNotBlank(datosRetornoDGPStr)) {
				try {
					datosInterop
							.setDatosRetornoDGP19(omInteropDatosRetorno.readValue(datosRetornoDGPStr, Retorno.class));
				} catch (IOException e) {
					logger.warn("Error '{}' al parsear json de la columna DATOS_RETORNO_DGP '{}'.", e.getMessage(),
							datosRetornoDGPStr);
				}
			}
			expedientes.setDatosInterop(datosInterop);
			TramitesExpediente te = new TramitesExpediente();
			te.setExpediente(new Expedientes());
			te.getExpediente().setSeOpone00(UtilSQL.getInt(resultSet, "SEOPONE00"));
			Discapacidad disc = new Discapacidad();
			disc.setIdDiscapacidad71(UtilSQL.getLong(resultSet, "IDDISCAPACIDAD71"));
			disc.setDescDiscapacidad71(resultSet.getString("DESCDISCAPACIDAD71"));
			disc.setDiscapacidadFisica71(UtilSQL.getInt(resultSet, "DISCAPACIDADFISICA71"));
			disc.setDiscapacidadIntelecto71(UtilSQL.getInt(resultSet, "DISCAPACIDADINTELECTO71"));
			disc.setDiscapacidadSensorial71(UtilSQL.getInt(resultSet, "DISCAPACIDADSENSORIAL71"));
			te.setDiscapacidad(disc);
			Dependencia depe = new Dependencia();
			depe.setIdDependencia04(UtilSQL.getLong(resultSet, "IDDEPENDENCIA04"));
			depe.setIdGradoDependencia04(UtilSQL.getLong(resultSet, "IDGRADODEPENDENCIA04"));
			depe.setDescOtraDependencia04(resultSet.getString("DESCOTRADEPENDENCIA04"));
			depe.setBaremo04(resultSet.getBigDecimal("BAREMO_04"));
			depe.setfResolucion04(resultSet.getDate("FRESOLUCION04"));
			te.setDependencias(depe);
			expedientes.setTramitesExpediente(te);

			// Instalación
			if (UtilDAO.hasColumn(resultSet, "FINSTALACION52") && resultSet.getDate("FINSTALACION52") != null) {
				Instalaciones instalaciones = new Instalaciones();
				instalaciones.setfInstalacion52(resultSet.getDate("FINSTALACION52"));
				instalaciones.setMotivInstFueraPlazo52(resultSet.getInt("MOTIVINSTFUERAPLAZO52"));
				expedientes.getSolicitantes().setInstalaciones(instalaciones);
			}

			// Pendiente de solicitar padron
			if (UtilDAO.hasColumn(resultSet, "PDTESOLICITARPADRON00")) {
				expedientes.setPdteSolicitarPadron00(resultSet.getInt("PDTESOLICITARPADRON00"));
			}

			return expedientes;
		}
	};

	private RowMapper<Expedientes> rwMapPK = new RowMapper<Expedientes>() {
		public Expedientes mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			return new Expedientes(UtilSQL.getLong(resultSet, "IDEXPEDIENTE00"));
		}
	};

	private RowMapper<Expedientes> rwMapPapel0 = new RowMapper<Expedientes>() {
		public Expedientes mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			Expedientes expediente = new Expedientes();

			expediente.setIdExpediente00(UtilSQL.getLong(resultSet, "IDEXPEDIENTE00"));
			expediente.setNumExpediente00(resultSet.getString("NUMEXPEDIENTE00"));
			expediente.setIdProcedimiento00(resultSet.getString("IDPROCEDIMIENTO00"));

			Solicitantes solicitante = new Solicitantes();
			solicitante.setIdentificador01(resultSet.getString("SOLIDENTIFICADOR01"));
			solicitante.setNombre01(resultSet.getString("SOLNOMBRE01"));
			solicitante.setApellido101(resultSet.getString("SOLAPELLIDO101"));
			solicitante.setApellido201(resultSet.getString("SOLAPELLIDO201"));

			expediente.setSolicitantes(solicitante);

			Estados estado = new Estados();
			estado.setIdEstado30(UtilSQL.getLong(resultSet, "IDESTADO30"));
			estado.setDescripcionEs30(resultSet.getString("DESCRIPCIONES30"));
			estado.setDescripcionEu30(resultSet.getString("DESCRIPCIONEU30"));
			expediente.setEstados(estado);

			return expediente;
		}
	};

	private RowMapper<Expedientes> rwMapSoloExp = new RowMapper<Expedientes>() {
		public Expedientes mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			Expedientes expediente = new Expedientes();

			expediente.setIdExpediente00(UtilSQL.getLong(resultSet, "IDEXPEDIENTE00"));
			expediente.setFolderId00(resultSet.getString("FOLDERID00"));
			expediente.setfRegistro00(resultSet.getDate("FREGISTRO00"));
			expediente.setNumRegistro00(resultSet.getString("NUMREGISTRO00"));
			expediente.setfRegistroOtro00(resultSet.getDate("FREGISTROOTRO00"));
			expediente.setNumRegistroOtro00(resultSet.getString("NUMREGISTROOTRO00"));
			expediente.setfRecepcion00(resultSet.getDate("FRECEPCION00"));
			expediente.setfAperturaExp00(resultSet.getDate("FAPERTURAEXP00"));
			expediente.setfCierre00(resultSet.getDate("FCIERRE00"));
			expediente.setfArchivo00(resultSet.getDate("FARCHIVO00"));
			expediente.setfDesistimiento00(resultSet.getDate("FDESISTIMIENTO00"));
			expediente.setIdTipoEntrada00(resultSet.getString("IDTIPOENTRADA00"));

			expediente.setNumExpediente00(resultSet.getString("NUMEXPEDIENTE00"));
			expediente.setIdTipoNot00(resultSet.getString("IDTIPONOT00"));
			expediente.setCanalNot00(resultSet.getString("CANALNOT00"));
			expediente.setEmailNot00(resultSet.getString("EMAILNOT00"));
			expediente.setTfnoNot00(resultSet.getString("TFNONOT00"));
			expediente.setIdiomaNot00(resultSet.getString("IDIOMANOT00"));
			expediente.setIdProcedimiento00(resultSet.getString("IDPROCEDIMIENTO00"));
			expediente.setDeOficio00(UtilSQL.getInt(resultSet, "DEOFICIO00"));

			expediente.setUrgencia00(UtilSQL.getInt(resultSet, "URGENCIA00"));
			expediente.setRazonUrgencia00(resultSet.getString("RAZONURGENCIA00"));
			expediente.setCodigoSga00(UtilSQL.getLong(resultSet, "CODIGOSGA00"));
			expediente.setPresentaSol00(UtilSQL.getInt(resultSet, "PRESENTASOL00"));
			expediente.setSeOpone00(UtilSQL.getInt(resultSet, "SEOPONE00"));
			expediente.setNombreCon00(resultSet.getString("NOMBRECON00"));
			expediente.setApellido1Con00(resultSet.getString("APELLIDO1CON00"));
			expediente.setApellido2Con00(resultSet.getString("APELLIDO2CON00"));
			expediente.setAutorizacionCon00(UtilSQL.getInt(resultSet, "AUTORIZACIONCON00"));
			expediente.setIdentificadorCon00(resultSet.getString("IDENTIFICADORCON00"));
			expediente.setTipoIdenCon00(resultSet.getString("TIPOIDENCON00"));
			expediente.setExencionSol00(UtilSQL.getInt(resultSet, "EXENCIONSOL00"));
			expediente.setExencionRes00(UtilSQL.getInt(resultSet, "EXENCIONRES00"));
			expediente.setfBaja00(resultSet.getDate("FBAJA00"));
			expediente.setIdMotivoBaja00(UtilSQL.getLong(resultSet, "IDMOTIVOBAJA00"));
			expediente.setObservaciones00(resultSet.getString("OBSERVACIONES00"));
			expediente.setTecnicoExpediente00(resultSet.getString("TECNICOEXPEDIENTE00"));
			expediente.setAutorizaConsulta00(UtilSQL.getInt(resultSet, "AUTORIZACONSULTA00"));
			expediente.setAutorizaDarInfo00(UtilSQL.getInt(resultSet, "AUTORIZADARINFO00"));
			expediente.setExoneracionRes00(UtilSQL.getInt(resultSet, "EXONERACIONRES00"));
			expediente.setUsuAlta00(resultSet.getString("USUALTA00"));
			expediente.setUsuModif00(resultSet.getString("USUMODIF00"));
			expediente.setfAlta00(resultSet.getDate("FALTA00"));
			expediente.setfModif00(resultSet.getDate("FMODIF00"));
			expediente.setIdSolicitante00(UtilSQL.getLong(resultSet, "IDSOLICITANTE00"));

			return expediente;
		}
	};

	/**
	 * Rowmapper para Jerarquía
	 *
	 * @param dataSource DataSource
	 * @return
	 */
	private RowMapper<JerarquiaDto<Expedientes>> rwMapJerarquia = new RowMapper<JerarquiaDto<Expedientes>>() {
		public JerarquiaDto<Expedientes> mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			Expedientes expedientes = new Expedientes(UtilSQL.getLong(resultSet, "IDEXPEDIENTE00"),
					resultSet.getString("FOLDERID00"), resultSet.getTimestamp("FREGISTRO00"),
					resultSet.getString("NUMREGISTRO00"), resultSet.getTimestamp("FREGISTROOTRO00"),
					resultSet.getString("NUMREGISTROOTRO00"), resultSet.getDate("FRECEPCION00"),
					resultSet.getDate("FAPERTURAEXP00"), resultSet.getDate("FCIERRE00"),
					resultSet.getDate("FARCHIVO00"), resultSet.getDate("FDESISTIMIENTO00"),
					resultSet.getDate("FRESOLDESIS00"), resultSet.getString("IDTIPOENTRADA00"),
					resultSet.getString("NUMEXPEDIENTE00"), resultSet.getString("IDTIPONOT00"),
					resultSet.getString("CANALNOT00"), resultSet.getString("EMAILNOT00"),
					resultSet.getString("TFNONOT00"), resultSet.getString("IDIOMANOT00"),
					resultSet.getString("IDPROCEDIMIENTO00"), UtilSQL.getInt(resultSet, "DEOFICIO00"),
					UtilSQL.getInt(resultSet, "URGENCIA00"), resultSet.getString("RAZONURGENCIA00"),
					UtilSQL.getLong(resultSet, "CODIGOSGA00"), UtilSQL.getInt(resultSet, "PRESENTASOL00"),
					UtilSQL.getInt(resultSet, "SEOPONE00"), resultSet.getString("NOMBRECON00"),
					resultSet.getString("APELLIDO1CON00"), resultSet.getString("APELLIDO2CON00"),
					UtilSQL.getInt(resultSet, "AUTORIZACIONCON00"), resultSet.getString("IDENTIFICADORCON00"),
					resultSet.getString("TIPOIDENCON00"), UtilSQL.getInt(resultSet, "EXENCIONSOL00"),
					UtilSQL.getInt(resultSet, "EXENCIONRES00"), resultSet.getDate("FBAJA00"),
					UtilSQL.getLong(resultSet, "IDMOTIVOBAJA00"), resultSet.getString("OBSERVACIONES00"),
					UtilSQL.getInt(resultSet, "EXISTEINSTALACION00"), UtilSQL.getInt(resultSet, "ERROREXPEDIENTE00"),
					UtilSQL.getInt(resultSet, "IDIOMASERVICIO00"), resultSet.getString("TECNICOEXPEDIENTE00"),
					UtilSQL.getInt(resultSet, "TIPOREP00"), resultSet.getString("TIPOIDENTIFICADORREP00"),
					resultSet.getString("IDENTIFICADORREP00"), resultSet.getString("NOMBREREP00"),
					resultSet.getString("APELLIDO1REP00"), resultSet.getString("APELLIDO2REP00"),
					resultSet.getString("SEXOREP00"), resultSet.getString("RAZONSOCIALREP00"),
					UtilSQL.getInt(resultSet, "CONTACTOINSTREP00"), UtilSQL.getLong(resultSet, "IDDIRECCIONNOTIF00"),
					UtilSQL.getInt(resultSet, "AUTORIZACONSULTA00"), UtilSQL.getInt(resultSet, "AUTORIZADARINFO00"),
					resultSet.getString("TIPODESIS00"), UtilSQL.getInt(resultSet, "EXONERACIONRES00"),
					UtilSQL.getInt(resultSet, "ESTADONOTIFICACION00"), UtilSQL.getInt(resultSet, "RESULTADOESTUDIO00"),
					resultSet.getDate("FRESOLUCION00"), resultSet.getBigDecimal("PRECIOFINAL00"),
					UtilSQL.getInt(resultSet, "DOCUMENTACION00"), resultSet.getString("MOTIVOINFORME00"),
					resultSet.getString("ORIGENOFICIO00"), resultSet.getString("USUALTA00"),
					resultSet.getString("USUMODIF00"), resultSet.getDate("FALTA00"), resultSet.getDate("FMODIF00"),
					UtilSQL.getInt(resultSet, "ESDENEGACIONSERVICIO00"),
					new Solicitantes(UtilSQL.getLong(resultSet, "SOLIDSOLICITANTE01"),
							resultSet.getString("SOLTIPOIDENTIFICADOR01"), resultSet.getString("SOLIDENTIFICADOR01"),
							resultSet.getString("SOLNOMBRE01"), resultSet.getString("SOLAPELLIDO101"),
							resultSet.getString("SOLAPELLIDO201"), resultSet.getString("SOLSEXO01"),
							resultSet.getDate("SOLFNACIMIENTO01"), resultSet.getString("SOLNUMSS01"),
							resultSet.getString("SOLNUMTIS01"), resultSet.getDate("SOLFALTATELEASISTENCIA01"),
							UtilSQL.getInt(resultSet, "SOLBENEFICIARIO01"), resultSet.getDate("SOLFBENEFICIARIO01"),
							resultSet.getDate("SOLFBAJA01"), resultSet.getDate("SOLFINICIO01"),
							resultSet.getString("SOLNUMABONADO01"), resultSet.getString("SOLOBSERVACIONES01"),
							UtilSQL.getInt(resultSet, "SOLNOREINTENTAR01"),
							UtilSQL.getInt(resultSet, "SOLIDIOMASERVICIO01"),
							UtilSQL.getInt(resultSet, "SOLIDIOMASOLICITANTE01"), resultSet.getString("SOLOTROIDIOMA01"),
							resultSet.getString("SOLTLFNOSERVICIO01"), resultSet.getString("SOLTLFNOMOVIL01"),
							resultSet.getString("SOLEMAIL01"), UtilSQL.getInt(resultSet, "SOLTIPOBENEFICIARIO01"),
							resultSet.getDate("SOLFRETIRADA01"), UtilSQL.getInt(resultSet, "SOLMANTENERINST01"),
							UtilSQL.getInt(resultSet, "SOLEXENCION01"), UtilSQL.getInt(resultSet, "SOLEXONERACION01"),
							UtilSQL.getInt(resultSet, "SOLINSTALADO01"),
							// UtilSQL.getInt(resultSet, "SOLMOTIVINSTFUERAPLAZO01"),
							UtilSQL.getLong(resultSet, "SOLIDMOTIVOBAJA01"), resultSet.getString("SOLUSUALTA01"),
							resultSet.getString("SOLUSUMODIF01"), resultSet.getDate("SOLFALTA01"),
							resultSet.getDate("SOLFMODIF01"), UtilSQL.getInt(resultSet, "ESDENEGACIONSERVICIO01"),
							new Cuentas(UtilSQL.getLong(resultSet, "SOLIDCUENTA01"), null, null, null, null, null, null,
									null, null, null),
							new Perfiles(UtilSQL.getLong(resultSet, "SOLIDPERFIL01"), null, null, null, null, null,
									null, null, null, null, null, null, null, null, null),
							new Direcciones(UtilSQL.getLong(resultSet, "SOLIDDIRECCION01"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null, null,
									null, null, null, null, null, null),
							new Valoraciones(UtilSQL.getLong(resultSet, "ValIDVALORACION08"), null, null, null, null,
									null, null, null, null, null, null, null, null, null, null, null, null, null),
							null),
					new Perfiles(UtilSQL.getLong(resultSet, "PerfilesIDPERFIL07"),
							UtilSQL.getInt(resultSet, "PerfilesMAYOR65DEP07"),
							UtilSQL.getInt(resultSet, "PerfilesMAYOR65RIESGODEP07"),
							UtilSQL.getInt(resultSet, "PerfilesMAYOR75SOLA07"),
							UtilSQL.getInt(resultSet, "PerfilesDISINTELECTUAL07"),
							UtilSQL.getInt(resultSet, "PerfilesDISFISICA07"),
							UtilSQL.getInt(resultSet, "PerfilesDISSENSORIAL07"),
							UtilSQL.getInt(resultSet, "PerfilesENFMENTAL07"),
							UtilSQL.getInt(resultSet, "PerfilesRIESGOAISLAMIENTO07"),
							UtilSQL.getInt(resultSet, "PerfilesPISOTUTELADO07"), resultSet.getDate("PerfilesFALTA07"),
							resultSet.getString("PerfilesUSUALTA07"),
							new PisosTutelados(UtilSQL.getLong(resultSet, "PerfilesIDPISO07"), null, null, null, null,
									null, null, null, null)),
					new Cuentas(UtilSQL.getLong(resultSet, "CuentasIDCUENTA05"),
							resultSet.getString("CuentasNUMCUENTA05"),
							resultSet.getString("CuentasCODTIPOIDENTITULAR05"),
							resultSet.getString("CuentasIDENTITULAR05"),
							UtilSQL.getLong(resultSet, "CUENTASIDSOLICITANTE05"),
							resultSet.getString("CUENTASUSUHISTORICO05"), resultSet.getDate("CUENTASFHISTORICO05"),
							resultSet.getDate("CuentasFALTA05"), resultSet.getString("CuentasUSUALTA05"),
							resultSet.getString("NOMBRETITCUENTA05"), resultSet.getString("APELLIDO1TITCUENTA05"),
							resultSet.getString("APELLIDO2TITCUENTA05")),
					new Estados(UtilSQL.getLong(resultSet, "EstadosIDESTADO30"), resultSet.getString("EstadosDESCES30"),
							resultSet.getString("EstadosDESCEU30"), UtilSQL.getInt(resultSet, "ORDEN30"),
							UtilSQL.getInt(resultSet, "VISIBLE30")),
					new Direcciones(UtilSQL.getLong(resultSet, "DireccionesIDDIRECCION06"),
							resultSet.getString("DireccionesCALLE06"), resultSet.getString("DireccionesCP06"),
							UtilSQL.getLong(resultSet, "DireccionesIDCALLE06"),
							UtilSQL.getLong(resultSet, "DireccionesIDLOCALIDAD06"),
							resultSet.getString("DireccionesIDMUNICIPIO06"), resultSet.getString("DireccionesIDPAIS06"),
							UtilSQL.getLong(resultSet, "DireccionesIDPORTAL06"),
							resultSet.getString("DireccionesIDPROVINCIA06"), resultSet.getString("DireccionesLETRA06"),
							resultSet.getString("DireccionesLOCALIDAD06"),
							resultSet.getString("DireccionesMUNICIPIO06"), resultSet.getString("DireccionesPAIS06"),
							resultSet.getString("DireccionesPISO06"), resultSet.getString("DireccionesPORTAL06"),
							resultSet.getString("DireccionesESCALERA06"), resultSet.getString("DireccionesPROVINCIA06"),
							UtilSQL.getLong(resultSet, "DIRECCIONESIDSOLICITANTE06"),
							resultSet.getString("DIRECCIONESUSUHISTORICO06"),
							resultSet.getDate("DIRECCIONESFHISTORICO06"), resultSet.getDate("DireccionesFALTA06"),
							resultSet.getString("DireccionesUSUALTA06")));

			if (expedientes.getErrorExpediente00() != null) {
				expedientes.setErrorExpediente00_desc(
						ErroresExpedienteEnum.getDesc(expedientes.getErrorExpediente00().intValue()));
			}

			// Pendiente de solicitar padron
			if (UtilDAO.hasColumn(resultSet, "PDTESOLICITARPADRON00")) {
				expedientes.setPdteSolicitarPadron00(resultSet.getInt("PDTESOLICITARPADRON00"));
			}

			JerarquiaDto<Expedientes> jerarquia = new JerarquiaDto<Expedientes>();
			jerarquia.setModel(expedientes);
			jerarquia.setLevel(resultSet.getBigDecimal("LEVEL").intValue());
			jerarquia.setParentNodes(resultSet.getString("PARENTNODES"));
			jerarquia.setIsLeaf(Boolean.parseBoolean(resultSet.getString("ISLEAF")));
			jerarquia.setFilter(Boolean.parseBoolean(resultSet.getString("FILTER")));
			return jerarquia;
		}
	};

	private RowMapper<JSONObject> rwMapCuadroMando = new RowMapper<JSONObject>() {
		public JSONObject mapRow(ResultSet resultSet, int rowNum) throws SQLException {

//			JSONObject rowObj = new JSONObject();
//			rowObj.put("idEstado", UtilSQL.getLong(resultSet, "ID_ESTADO_30"));
//			rowObj.put("descEstadoEs", resultSet.getString("DESCRIPCION_ES_30"));
//			rowObj.put("descEstadoEu", resultSet.getString("DESCRIPCION_EU_30"));
//
//			String procedureDesc = ProcedimientosEnum.getDesc(resultSet.getString("ID_PROCEDIMIENTO_00"));
//			rowObj.put("idProcedimiento", resultSet.getString("ID_PROCEDIMIENTO_00"));
//			rowObj.put("procedimientoDesc", procedureDesc);

			// rowObj.put("tecnicoExpediente",
			// resultSet.getString("TECNICO_EXPEDIENTE_00"));

			JSONObject rowObj = new JSONObject();
			rowObj.put("idEstado", UtilSQL.getLong(resultSet, "ESTADO"));
			rowObj.put("descEstadoEs", resultSet.getString("DESCES"));
			rowObj.put("descEstadoEu", resultSet.getString("DESCEU"));

			String procedureDesc = ProcedimientosEnum.getDesc(resultSet.getString("PROCEDUREID"));
			rowObj.put("idProcedimiento", resultSet.getString("PROCEDUREID"));
			rowObj.put("procedimientoDesc", procedureDesc);

			rowObj.put("total", UtilSQL.getLong(resultSet, "TOTAL"));

			return rowObj;

		}
	};

	private RowMapper<Expedientes> rwMapInterOp = new RowMapper<Expedientes>() {
		public Expedientes mapRow(ResultSet resultSet, int rowNum) throws SQLException {

			Expedientes expediente = new Expedientes();

			expediente.setIdExpediente00(UtilSQL.getLong(resultSet, "IDEXPEDIENTE00"));
			expediente.setNumExpediente00(resultSet.getString("NUMEXPEDIENTE00"));
			expediente.setFolderId00(resultSet.getString("FOLDERID00"));
			expediente.setIdProcedimiento00(resultSet.getString("FOLDERID00"));
			expediente.setTecnicoExpediente00(resultSet.getString("TECNICOEXPEDIENTE00"));

			DatosInterop interop = new DatosInterop();
			interop.setIdExpediente19(UtilSQL.getLong(resultSet, "IDEXPEDIENTE00"));
			interop.setFolderId(resultSet.getString("FOLDERID00"));
			if (UtilDAO.hasColumn(resultSet, "FINVOKECONCONYUIRPF19")
					&& null != resultSet.getTimestamp("FINVOKECONCONYUIRPF19")) {
				interop.setfinvokeConConyuIrpf19(resultSet.getTimestamp("FINVOKECONCONYUIRPF19"));
			}
			if (UtilDAO.hasColumn(resultSet, "CODRESULCONCONYUIRPF19")
					&& null != resultSet.getString("CODRESULCONCONYUIRPF19")) {
				interop.setCodresulConConyuIrpf19(resultSet.getString("CODRESULCONCONYUIRPF19"));
			}

			if (UtilDAO.hasColumn(resultSet, "FINVOKECONDGP19") && null != resultSet.getTimestamp("FINVOKECONDGP19")) {
				interop.setfinvokeConDgp19(resultSet.getTimestamp("FINVOKECONDGP19"));
			}
			if (UtilDAO.hasColumn(resultSet, "CODRESULCONDGP19") && null != resultSet.getString("CODRESULCONDGP19")) {
				interop.setCodresulConDgp19(resultSet.getString("CODRESULCONDGP19"));
			}

			if (UtilDAO.hasColumn(resultSet, "FINVOKECONIMSERSO19")
					&& null != resultSet.getTimestamp("FINVOKECONIMSERSO19")) {
				interop.setfinvokeConImserso19(resultSet.getTimestamp("FINVOKECONIMSERSO19"));
			}
			if (UtilDAO.hasColumn(resultSet, "CODRESULCONIMSERSO19")
					&& null != resultSet.getString("CODRESULCONIMSERSO19")) {
				interop.setCodresulConImserso19(resultSet.getString("CODRESULCONIMSERSO19"));
			}

			if (UtilDAO.hasColumn(resultSet, "FINVOKECONIRPF19")
					&& null != resultSet.getTimestamp("FINVOKECONIRPF19")) {
				interop.setfinvokeConIrpf19(resultSet.getTimestamp("FINVOKECONIRPF19"));
			}
			if (UtilDAO.hasColumn(resultSet, "CODRESULCONIRPF19") && null != resultSet.getString("CODRESULCONIRPF19")) {
				interop.setCodresulConIrpf19(resultSet.getString("CODRESULCONIRPF19"));
			}

			if (UtilDAO.hasColumn(resultSet, "FINVOKECONPADRON19")
					&& null != resultSet.getTimestamp("FINVOKECONPADRON19")) {
				interop.setfinvokeConPadron19(resultSet.getTimestamp("FINVOKECONPADRON19"));
			}
			if (UtilDAO.hasColumn(resultSet, "CODRESULCONPADRON19")
					&& null != resultSet.getString("CODRESULCONPADRON19")) {
				interop.setCodresulConPadron19(resultSet.getString("CODRESULCONPADRON19"));
			}

			if (UtilDAO.hasColumn(resultSet, "FINVOKEDISCAPA19")
					&& null != resultSet.getTimestamp("FINVOKEDISCAPA19")) {
				interop.setFinvokeDiscapa19(resultSet.getTimestamp("FINVOKEDISCAPA19"));
			}
			if (UtilDAO.hasColumn(resultSet, "CODRESULDISCAPA19") && null != resultSet.getString("CODRESULDISCAPA19")) {
				interop.setCodresulDiscapa19(resultSet.getString("CODRESULDISCAPA19"));
			}

			expediente.setDatosInterop(interop);

			return expediente;
		}
	};

	/**
	 * Method use to set the datasource.
	 *
	 * @param dataSource DataSource
	 * @return
	 */
	@Resource
	public void setDataSource(DataSource dataSource) {
		this.jdbcTemplate = new JdbcTemplate(dataSource);
	}

	/*
	 * OPERACIONES CRUD
	 */

	/**
	 * Inserts a single row in the Expedientes table.
	 *
	 * @param expedientes Expedientes
	 * @return Expedientes
	 */
	public Expedientes add(Expedientes expedientes) {

		GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();

		String query = "INSERT INTO EXPEDIENTES (ID_EXPEDIENTE_00, ID_SOLICITANTE_00, ID_PERFIL_00, ID_CUENTA_00, ID_ESTADO_00, ID_DIRECCION_00, FOLDER_ID_00, F_REGISTRO_00, NUM_REGISTRO_00, F_REGISTRO_OTRO_00,"
				+ " NUM_REGISTRO_OTRO_00, F_RECEPCION_00, F_APERTURA_EXP_00, F_CIERRE_00, F_ARCHIVO_00, F_DESISTIMIENTO_00, F_RESOL_DESIS_00, ID_TIPO_ENTRADA_00, NUM_EXPEDIENTE_00, ID_TIPO_NOT_00, CANAL_NOT_00, EMAIL_NOT_00, TFNO_NOT_00, IDIOMA_NOT_00, ID_PROCEDIMIENTO_00,"
				+ " DE_OFICIO_00, URGENCIA_00, RAZON_URGENCIA_00, CODIGO_SGA_00, PRESENTA_SOL_00, SE_OPONE_00, NOMBRE_CON_00, APELLIDO1_CON_00, APELLIDO2_CON_00, AUTORIZACION_CON_00, IDENTIFICADOR_CON_00, TIPO_IDEN_CON_00, EXENCION_SOL_00,EXENCION_RES_00, F_BAJA_00,"
				+ " ID_MOTIVO_BAJA_00, OBSERVACIONES_00, EXISTE_INSTALACION_00, ERROR_EXPEDIENTE_00, IDIOMA_SERVICIO_00, TECNICO_EXPEDIENTE_00, TIPO_REP_00, TIPO_IDENTIFICADOR_REP_00, IDENTIFICADOR_REP_00, NOMBRE_REP_00, APELLIDO1_REP_00, APELLIDO2_REP_00,"
				+ " SEXO_REP_00, RAZON_SOCIAL_REP_00, CONTACTO_INST_REP_00, ID_DIRECCION_NOTIF_00, AUTORIZA_CONSULTA_00, AUTORIZA_DAR_INFO_00, TIPO_DESIS_00, EXONERACION_RES_00, ESTADO_NOTIFICACION_00, RESULTADO_ESTUDIO_00, F_RESOLUCION_00, PRECIO_FINAL_00, DOCUMENTACION_00, MOTIVO_INFORME_00, ORIGEN_OFICIO_00, USU_ALTA_00, USU_MODIF_00, F_MODIF_00) "
				+ "VALUES (" + SEQUENCE_EXPEDIENTE
				+ ".NEXTVAL,:idSolicitante,:idPerfil,:idCuenta,:idEstado,:idDireccion,:folderId,:fRegistro,:numRegistro,:fRegistroOtro,"
				+ ":numRegistroOtro,:fRecepcion,:fAperturaExp,:fCierre,:fArchivo,:fDesistimiento,:fResolDesis,:idTipoEntrada,:numExpediente,:idTipoNot,:canalNot,:emailNot,:tfnoNot,:idiomaNot,:idProcedimiento,"
				+ ":deOficio,:urgencia,:razonUrgencia,:codigoSga,:presentaSol,:seOpone,:nombreCon,:apellidoCon1,:apellidoCon2,:autorizacionCon,UPPER(:identificadorCon),:tipoIdenCon,:exencionSol,:exencionRes,:fBaja,"
				+ ":idMotivoBaja,:observaciones,:existeInstalacion, :errorExpediente, :idiomaServicio, :tenicoExpediente, :tipoRep, :tipoIdentifRep, UPPER(:identificadorRep), :nombreRep, :ape1Rep, :ape2Rep,"
				+ " :sexoRep, :razonSocialRep, :contactoInstRep, :idDireccionNotif, :autoConsulta, :autoDarInfo, :tipoDesis, :exoneracionRes, :estadoNotif, :resEstudio, :fResolucion, :precioFinal, :documentacion,:motivoInforme,:origenOficio,:usuAlta,:usuModif,:fModif)";
		Object getSolicitantesIdSolicitante01Aux = null;
		if (expedientes.getSolicitantes() != null && expedientes.getSolicitantes().getIdSolicitante01() != null) {
			getSolicitantesIdSolicitante01Aux = expedientes.getSolicitantes().getIdSolicitante01();
		}
		Object getPerfilesIdPerfil07Aux = null;
		if (expedientes.getPerfiles() != null && expedientes.getPerfiles().getIdPerfil07() != null) {
			getPerfilesIdPerfil07Aux = expedientes.getPerfiles().getIdPerfil07();
		}
		Object getCuentasIdCuenta05Aux = null;
		if (expedientes.getCuentas() != null && expedientes.getCuentas().getIdCuenta05() != null) {
			getCuentasIdCuenta05Aux = expedientes.getCuentas().getIdCuenta05();
		}
		Object getEstadosIdEstado30Aux = null;
		if (expedientes.getEstados() != null && expedientes.getEstados().getIdEstado30() != null) {
			getEstadosIdEstado30Aux = expedientes.getEstados().getIdEstado30();
		}
		Object getDireccionesIdDireccion06Aux = null;
		if (expedientes.getDirecciones() != null && expedientes.getDirecciones().getIdDireccion06() != null) {
			getDireccionesIdDireccion06Aux = expedientes.getDirecciones().getIdDireccion06();
		}

		MapSqlParameterSource parameters = new MapSqlParameterSource()
				.addValue("idSolicitante", getSolicitantesIdSolicitante01Aux)
				.addValue("idPerfil", getPerfilesIdPerfil07Aux).addValue("idCuenta", getCuentasIdCuenta05Aux)
				.addValue("idEstado", getEstadosIdEstado30Aux).addValue("idDireccion", getDireccionesIdDireccion06Aux)
				.addValue("folderId", expedientes.getFolderId00()).addValue("fRegistro", expedientes.getfRegistro00())
				.addValue("numRegistro", expedientes.getNumRegistro00())
				.addValue("fRegistroOtro", expedientes.getfRegistroOtro00())
				.addValue("numRegistroOtro", expedientes.getNumRegistroOtro00())
				.addValue("fRecepcion", expedientes.getfRecepcion00())
				.addValue("fAperturaExp", expedientes.getfAperturaExp00())
				.addValue("fCierre", expedientes.getfCierre00()).addValue("fArchivo", expedientes.getfArchivo00())
				.addValue("fDesistimiento", expedientes.getfDesistimiento00())
				.addValue("fResolDesis", expedientes.getfResolDesis00())
				.addValue("idTipoEntrada", expedientes.getIdTipoEntrada00())
				.addValue("numExpediente", expedientes.getNumExpediente00())
				.addValue("idTipoNot", expedientes.getIdTipoNot00()).addValue("canalNot", expedientes.getCanalNot00())
				.addValue("emailNot", expedientes.getEmailNot00()).addValue("tfnoNot", expedientes.getTfnoNot00())
				.addValue("idiomaNot", expedientes.getIdiomaNot00())
				.addValue("idProcedimiento", expedientes.getIdProcedimiento00())
				.addValue("deOficio", expedientes.getDeOficio00())
				.addValue("urgencia", expedientes.getUrgencia00() == null ? 0 : expedientes.getUrgencia00())
				.addValue("razonUrgencia", expedientes.getRazonUrgencia00())
				.addValue("codigoSga", expedientes.getCodigoSga00())
				.addValue("presentaSol", expedientes.getPresentaSol00())
				.addValue("seOpone", expedientes.getSeOpone00() == null ? 0 : expedientes.getSeOpone00())
				.addValue("nombreCon", expedientes.getNombreCon00())
				.addValue("apellidoCon1", expedientes.getApellido1Con00())
				.addValue("apellidoCon2", expedientes.getApellido2Con00())
				.addValue("autorizacionCon", expedientes.getAutorizacionCon00())
				.addValue("identificadorCon", expedientes.getIdentificadorCon00())
				.addValue("tipoIdenCon", expedientes.getTipoIdenCon00())
				.addValue("exencionSol", expedientes.getExencionSol00())
				.addValue("exencionRes", expedientes.getExencionRes00()).addValue("fBaja", expedientes.getfBaja00())
				.addValue("idMotivoBaja", expedientes.getIdMotivoBaja00())
				.addValue("observaciones", expedientes.getObservaciones00())
				.addValue("existeInstalacion", expedientes.getExisteInstalacion00())
				.addValue("errorExpediente", expedientes.getErrorExpediente00())
				.addValue("idiomaServicio", expedientes.getIdiomaServicio00())
				.addValue("tenicoExpediente", expedientes.getTecnicoExpediente00())
				.addValue("tipoRep", expedientes.getTipoRep00())
				.addValue("tipoIdentifRep", expedientes.getTipoIdentificadorRep00())
				.addValue("identificadorRep", expedientes.getIdentificadorRep00())
				.addValue("nombreRep", expedientes.getNombreRep00())
				.addValue("ape1Rep", expedientes.getApellido1Rep00())
				.addValue("ape2Rep", expedientes.getApellido2Rep00()).addValue("sexoRep", expedientes.getSexoRep00())
				.addValue("razonSocialRep", expedientes.getRazonSocialRep00())
				.addValue("contactoInstRep", expedientes.getContactoInstRep00())
				.addValue("idDireccionNotif", expedientes.getIdDireccionNotif00())
				.addValue("autoConsulta", expedientes.getAutorizaConsulta00())
				.addValue("autoDarInfo", expedientes.getAutorizaDarInfo00())
				.addValue("tipoDesis", expedientes.getTipoDesis00())
				.addValue("exoneracionRes", expedientes.getExoneracionRes00())
				.addValue("estadoNotif", expedientes.getEstadoNotificacion00())
				.addValue("resEstudio", expedientes.getResultadoEstudio00())
				.addValue("fResolucion", expedientes.getfResolucion00())
				.addValue("precioFinal", expedientes.getPrecioFinal00())
				.addValue("documentacion", expedientes.getDocumentacion00())
				.addValue("motivoInforme", expedientes.getMotivoInforme00())
				.addValue("origenOficio", expedientes.getOrigenOficio00())
				.addValue("usuAlta", expedientes.getUsuAlta00()).addValue("usuModif", expedientes.getUsuModif00())
				.addValue("fModif", expedientes.getfModif00());

		NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
		namedParameterJdbcTemplate.update(query, parameters, generatedKeyHolder, new String[] { "ID_EXPEDIENTE_00" });
		expedientes.setIdExpediente00(generatedKeyHolder.getKey().longValue());

		return expedientes;
	}

	/**
	 * Finds a single row in the Expedientes table.
	 *
	 * @param expedientes Expedientes
	 * @return Expedientes
	 */
	@Transactional(readOnly = true)
	public Expedientes find(Expedientes expedientes) {

		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		String query = "SELECT t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.ID_LIQUIDACION_00 IDLIQUIDACION00, t1.FOLDER_ID_00 FOLDERID00, t1.F_REGISTRO_00 FREGISTRO00, t1.NUM_REGISTRO_00 NUMREGISTRO00, t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00, "
				+ " t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00, t1.F_RECEPCION_00 FRECEPCION00, t1.F_APERTURA_EXP_00 FAPERTURAEXP00, t1.F_CIERRE_00 FCIERRE00, t1.F_ARCHIVO_00 FARCHIVO00, "
				+ " t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00, t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00, t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00, t1.ID_TIPO_NOT_00 IDTIPONOT00, "
				+ " t1.CANAL_NOT_00 CANALNOT00, t1.EMAIL_NOT_00 EMAILNOT00, t1.TFNO_NOT_00 TFNONOT00, t1.IDIOMA_NOT_00 IDIOMANOT00, t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00, t1.DE_OFICIO_00 DEOFICIO00, "
				+ " t1.URGENCIA_00 URGENCIA00, t1.RAZON_URGENCIA_00 RAZONURGENCIA00, t1.CODIGO_SGA_00 CODIGOSGA00, t1.PRESENTA_SOL_00 PRESENTASOL00, t1.SE_OPONE_00 SEOPONE00, t1.NOMBRE_CON_00 NOMBRECON00, "
				+ " t1.APELLIDO1_CON_00 APELLIDO1CON00, t1.APELLIDO2_CON_00 APELLIDO2CON00, t1.AUTORIZACION_CON_00 AUTORIZACIONCON00, t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00, t1.TIPO_IDEN_CON_00 TIPOIDENCON00, "
				+ " t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00, t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00, t1.OBSERVACIONES_00 OBSERVACIONES00, "
				+ " t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00, t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00, "
				+ " t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00,"
				+ " t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00,"
				+ " t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00,"
				+ " t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00,"
				+ " t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00, t1.USU_MODIF_00 USUMODIF00,"
				+ " t1.F_ALTA_00 FALTA00, t1.F_MODIF_00 FMODIF00, t1.ES_DENEGACION_SERVICIO_00 ESDENEGACIONSERVICIO00, t1.PDTE_SOLICITAR_PADRON_00 PDTESOLICITARPADRON00, "
				+ " t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01, t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01, "
				+ " t2.NOMBRE_01 SOLNOMBRE01, t2.APELLIDO1_01 SOLAPELLIDO101, t2.APELLIDO2_01 SOLAPELLIDO201, t2.SEXO_01 SOLSEXO01, t2.F_NACIMIENTO_01 SOLFNACIMIENTO01, t2.NUMSS_01 SOLNUMSS01,"
				+ " t2.NUMTIS_01 SOLNUMTIS01, t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01, t2.BENEFICIARIO_01 SOLBENEFICIARIO01, t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01, t2.F_BAJA_01 SOLFBAJA01,"
				+ " t2.F_INICIO_01 SOLFINICIO01, t2.NUM_ABONADO_01 SOLNUMABONADO01, t2.OBSERVACIONES_01 SOLOBSERVACIONES01, t2.NO_REINTENTAR_01 SOLNOREINTENTAR01, t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01,"
				+ " t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01,"
				+ " t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01,t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01,"
				// + " t2.MOTIV_INST_FUERA_PLAZO_01 SOLMOTIVINSTFUERAPLAZO01, "
				+ " t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01, t2.USU_MODIF_01 SOLUSUMODIF01, t2.F_ALTA_01 SOLFALTA01,"
				+ " t2.F_MODIF_01 SOLFMODIF01, t2.ID_CUENTA_01 SOLIDCUENTA01, t2.ID_PERFIL_01 SOLIDPERFIL01, t2.ID_DIRECCION_01 SOLIDDIRECCION01,t2.ID_VALORACION_01  SOLIDVALORACION01,t2.ES_DENEGACION_SERVICIO_01 ESDENEGACIONSERVICIO01 ,"
				+ " t3.ID_PERFIL_07 PERFILESIDPERFIL07, t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07, t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07, t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07,"
				+ " t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07, t3.DIS_FISICA_07 PERFILESDISFISICA07, t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07, t3.ENF_MENTAL_07 PERFILESENFMENTAL07,"
				+ " t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07, t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07, t3.F_ALTA_07 PERFILESFALTA07, t3.USU_ALTA_07 PERFILESUSUALTA07, t3.ID_PISO_07 PERFILESIDPISO07, "
				+ " t6.ID_CUENTA_05 CUENTASIDCUENTA05, t6.NUM_CUENTA_05 CUENTASNUMCUENTA05, t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05, t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,"
				+ " t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05,"
				+ " t6.F_ALTA_05 CUENTASFALTA05, t6.USU_ALTA_05 CUENTASUSUALTA05,t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05,"
				+ " t7.ID_ESTADO_30 ESTADOSIDESTADO30, t7.DESCRIPCION_ES_30 ESTADOSDESCES30, t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30,"
				+ " t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06, t8.CALLE_06 DIRECCIONESCALLE06, t8.CP_06 DIRECCIONESCP06, t8.ID_CALLE_06 DIRECCIONESIDCALLE06, t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06,"
				+ " t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06, t8.ID_PAIS_06 DIRECCIONESIDPAIS06, t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06, t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06,"
				+ " t8.LETRA_06 DIRECCIONESLETRA06, t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06, t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06, t8.PAIS_06 DIRECCIONESPAIS06, t8.PISO_06 DIRECCIONESPISO06,"
				+ " t8.PORTAL_06 DIRECCIONESPORTAL06, t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06, t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06,"
				+ " t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06, t8.F_ALTA_06 DIRECCIONESFALTA06, t8.USU_ALTA_06 DIRECCIONESUSUALTA06,"
				+ " t11.ID_INTEROP_19 INTEROPIDINTEROP19, t11.CODRESUL_CON_DGP_19 INTEROPCODRESULCONDGP19 , t11.RESUL_CON_DGP_19 INTEROPRESULCONDGP19,"
				+ " t11.CODRESUL_CON_PADRON_19 INTEROPCODRESULCONPADRON19, t11.RESUL_CON_PADRON_19 INTEROPRESULCONPADRON19, t11.CODRESUL_CON_IRPF_19 INTEROPCODRESULCONIRPF19, t11.RESUL_CON_IRPF_19 INTEROPRESULCONIRPF19, t11.CODRESUL_CON_IMSERSO_19 INTEROPCODRESULCONIMSERSO19, t11.RESUL_CON_IMSERSO_19 INTEROPRESULCONIMSERSO19, t11.CODRESUL_CON_CONYU_IRPF_19 INTEROPCODRESULCONCONYUIRPF19, t11.RESUL_CON_CONYU_IRPF_19 INTEROPRESULCONCONYUIRPF19, t11.CODRESUL_DISCAPA_19 INTEROPCODRESULDISCAPA19, t11.RESUL_DISCAPA_19 INTEROPRESULDISCAPA19,"
				+ " t11.DATOS_RETORNO_DGP_19 INTEROPDATOSRETORNODGP19,"

				+ " t8_2.ID_DIRECCION_06 DIRECCIONESNOTIDDIRECCION06, t8_2.CALLE_06 DIRECCIONESNOTCALLE06, t8_2.CP_06 DIRECCIONESNOTCP06, t8_2.ID_CALLE_06 DIRECCIONESNOTIDCALLE06, t8_2.ID_LOCALIDAD_06 DIRECCIONESNOTIDLOCALIDAD06,"
				+ " t8_2.ID_MUNICIPIO_06 DIRECCIONESNOTIDMUNICIPIO06, t8_2.ID_PAIS_06 DIRECCIONESNOTIDPAIS06, t8_2.ID_PORTAL_06 DIRECCIONESNOTIDPORTAL06, t8_2.ID_PROVINCIA_06 DIRECCIONESNOTIDPROVINCIA06,"
				+ " t8_2.LETRA_06 DIRECCIONESNOTLETRA06, t8_2.LOCALIDAD_06 DIRECCIONESNOTLOCALIDAD06, t8_2.MUNICIPIO_06 DIRECCIONESNOTMUNICIPIO06, t8_2.PAIS_06 DIRECCIONESNOTPAIS06, t8_2.PISO_06 DIRECCIONESNOTPISO06,"
				+ " t8_2.PORTAL_06 DIRECCIONESNOTPORTAL06, t8_2.ESCALERA_06 DIRECCIONESNOTESCALERA06, t8_2.PROVINCIA_06 DIRECCIONESNOTPROVINCIA06, t8_2.ID_SOLICITANTE_06 DIRECCIONESNOTIDSOLICITANTE06,"
				+ " t8_2.USU_HISTORICO_06 DIRECCIONESNOTUSUHISTORICO06, t8_2.F_HISTORICO_06 DIRECCIONESNOTFHISTORICO06, t8_2.F_ALTA_06 DIRECCIONESNOTFALTA06, t8_2.USU_ALTA_06 DIRECCIONESNOTUSUALTA06, "

				+ " t12.id_dependencia_04 IDDEPENDENCIA04,t12.id_grado_dependencia_04 IDGRADODEPENDENCIA04,t12.f_resolucion_04 FRESOLUCION04, t12.baremo_04 BAREMO_04, t12.desc_otra_dependencia_04 DESCOTRADEPENDENCIA04, t13.id_discapacidad_71 IDDISCAPACIDAD71 ,t13.desc_discapacidad_71 DESCDISCAPACIDAD71, t13.discapacidad_fisica_71 DISCAPACIDADFISICA71, t13.DISCAPACIDAD_INTELECTO_71 DISCAPACIDADINTELECTO71, t13.DISCAPACIDAD_SENSORIAL_71 DISCAPACIDADSENSORIAL71, "

				+ " t14.F_INSTALACION_52 FINSTALACION52, t14.MOTIV_INST_FUERA_PLAZO_52 MOTIVINSTFUERAPLAZO52"

				+ " FROM EXPEDIENTES t1 , SOLICITANTES t2 , PERFILES t3 , CUENTAS t6 , ESTADOS t7 , DIRECCIONES t8 , DATOS_INTEROP t11 , DIRECCIONES t8_2, DEPENDENCIA t12, DISCAPACIDAD t13, INSTALACIONES t14"
				+ " WHERE t1.ID_EXPEDIENTE_00 = ?   AND t1.ID_SOLICITANTE_00= t2.ID_SOLICITANTE_01(+) AND t1.ID_PERFIL_00= t3.ID_PERFIL_07(+) AND t1.ID_CUENTA_00= t6.ID_CUENTA_05(+) AND t1.ID_ESTADO_00= t7.ID_ESTADO_30(+) "
				+ " AND t1.ID_DIRECCION_00= t8.ID_DIRECCION_06(+) AND t1.ID_EXPEDIENTE_00 = t11.ID_EXPEDIENTE_19(+) AND t1.ID_DIRECCION_NOTIF_00= t8_2.ID_DIRECCION_06(+) "
				+ " AND t1.ID_EXPEDIENTE_00 = t12.ID_EXPEDIENTE_04(+) AND t12.F_HISTORICO_04 IS NULL AND t1.ID_EXPEDIENTE_00 = t13.ID_EXPEDIENTE_71(+) AND t13.F_HISTORICO_71 IS NULL"
				+ " AND (t12.f_alta_04 = (select max(ss1.f_alta_04) from dependencia ss1 where ss1.id_expediente_04 = ?)  OR t12.f_alta_04 IS NULL) "
				+ " AND t1.ID_SOLICITANTE_00 = t14.ID_SOLICITANTE_52(+) AND t14.F_HISTORICO_52 IS NULL";

		List<Expedientes> expedientesList = this.jdbcTemplate.query(query, this.rwMapFind,
				expedientes.getIdExpediente00(), expedientes.getIdExpediente00());

		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		return (Expedientes) DataAccessUtils.uniqueResult(expedientesList);
	}

	/**
	 * Removes a single row in the Expedientes table.
	 *
	 * @param expedientes Expedientes
	 * @return
	 */
	public void remove(Expedientes expedientes) {
		String query = "DELETE FROM EXPEDIENTES WHERE ID_EXPEDIENTE_00=?";
		this.jdbcTemplate.update(query, expedientes.getIdExpediente00());
	}

	/**
	 * Exporta Datos al clipBoard
	 *
	 */
	public List<Expedientes> getMultiple(Expedientes filterExpedientes, TableRequestDto tableRequestDto,
			Boolean startsWith) {

		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.FOLDER_ID_00 FOLDERID00,t1.F_REGISTRO_00 FREGISTRO00,t1.NUM_REGISTRO_00 NUMREGISTRO00,t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00,t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00,t1.F_RECEPCION_00 FRECEPCION00,t1.F_APERTURA_EXP_00 FAPERTURAEXP00,t1.F_CIERRE_00 FCIERRE00,t1.F_ARCHIVO_00 FARCHIVO00,t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00,t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00,t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00,t1.ID_TIPO_NOT_00 IDTIPONOT00,t1.CANAL_NOT_00 CANALNOT00,t1.EMAIL_NOT_00 EMAILNOT00,t1.TFNO_NOT_00 TFNONOT00,t1.IDIOMA_NOT_00 IDIOMANOT00,t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00,t1.DE_OFICIO_00 DEOFICIO00,t1.URGENCIA_00 URGENCIA00,t1.RAZON_URGENCIA_00 RAZONURGENCIA00,t1.CODIGO_SGA_00 CODIGOSGA00,t1.PRESENTA_SOL_00 PRESENTASOL00,t1.SE_OPONE_00 SEOPONE00,t1.NOMBRE_CON_00 NOMBRECON00,t1.APELLIDO1_CON_00 APELLIDO1CON00,t1.APELLIDO2_CON_00 APELLIDO2CON00,t1.AUTORIZACION_CON_00 AUTORIZACIONCON00,t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00,t1.TIPO_IDEN_CON_00 TIPOIDENCON00,t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00,t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00,t1.OBSERVACIONES_00 OBSERVACIONES00,t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00,t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00, t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00, t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00, t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00, t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00, t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00,t1.USU_MODIF_00 USUMODIF00,t1.F_ALTA_00 FALTA00,t1.F_MODIF_00 FMODIF00,t1.ES_DENEGACION_SERVICIO_00 ESDENEGACIONSERVICIO00, t1.PDTE_SOLICITAR_PADRON_00 PDTESOLICITARPADRON00 ");
		query.append(
				",t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01,t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01,t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01,t2.NOMBRE_01 SOLNOMBRE01,t2.APELLIDO1_01 SOLAPELLIDO101,t2.APELLIDO2_01 SOLAPELLIDO201,t2.SEXO_01 SOLSEXO01,t2.F_NACIMIENTO_01 SOLFNACIMIENTO01,t2.NUMSS_01 SOLNUMSS01,t2.NUMTIS_01 SOLNUMTIS01,t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01,t2.BENEFICIARIO_01 SOLBENEFICIARIO01,t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01,t2.F_BAJA_01 SOLFBAJA01,t2.F_INICIO_01 SOLFINICIO01,t2.NUM_ABONADO_01 SOLNUMABONADO01,t2.OBSERVACIONES_01 SOLOBSERVACIONES01,t2.NO_REINTENTAR_01 SOLNOREINTENTAR01,t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01, t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01, t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01, t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01,t2.USU_MODIF_01 SOLUSUMODIF01,t2.F_ALTA_01 SOLFALTA01,t2.F_MODIF_01 SOLFMODIF01,t2.ES_DENEGACION_SERVICIO_01 ESDENEGACIONSERVICIO01,t2.ID_CUENTA_01 SOLIDCUENTA01,t2.ID_PERFIL_01 SOLIDPERFIL01,t2.ID_DIRECCION_01 SOLIDDIRECCION01,t2.ID_VALORACION_01 SOLIDVALORACION01 ");
		query.append(
				",t3.ID_PERFIL_07 PERFILESIDPERFIL07,t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07,t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07,t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07,t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07,t3.DIS_FISICA_07 PERFILESDISFISICA07,t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07,t3.ENF_MENTAL_07 PERFILESENFMENTAL07,t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07,t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07,t3.F_ALTA_07 PERFILESFALTA07,t3.USU_ALTA_07 PERFILESUSUALTA07,t3.ID_PISO_07 PERFILESIDPISO07");
		query.append(
				",t6.ID_CUENTA_05 CUENTASIDCUENTA05,t6.NUM_CUENTA_05 CUENTASNUMCUENTA05,t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05,t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05,t6.F_ALTA_05 CUENTASFALTA05,t6.USU_ALTA_05 CUENTASUSUALTA05,t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05");
		query.append(
				",t7.ID_ESTADO_30 ESTADOSIDESTADO30,t7.DESCRIPCION_ES_30 ESTADOSDESCES30,t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30");
		query.append(
				",t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06,t8.CALLE_06 DIRECCIONESCALLE06,t8.CP_06 DIRECCIONESCP06,t8.ID_CALLE_06 DIRECCIONESIDCALLE06,t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06,t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06,t8.ID_PAIS_06 DIRECCIONESIDPAIS06,t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06,t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06,t8.LETRA_06 DIRECCIONESLETRA06,t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06,t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06,t8.PAIS_06 DIRECCIONESPAIS06,t8.PISO_06 DIRECCIONESPISO06,t8.PORTAL_06 DIRECCIONESPORTAL06,t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06,t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06, t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06,t8.F_ALTA_06 DIRECCIONESFALTA06,t8.USU_ALTA_06 DIRECCIONESUSUALTA06");
		query.append(
				",t11.ID_INTEROP_19 INTEROPIDINTEROP19, t11.CODRESUL_CON_DGP_19 INTEROPCODRESULCONDGP19 , t11.RESUL_CON_DGP_19 INTEROPRESULCONDGP19  ");
		query.append(" ,t14.F_INSTALACION_52 FINSTALACION52, t14.MOTIV_INST_FUERA_PLAZO_52 MOTIVINSTFUERAPLAZO52 ");

		query.append(" FROM expedientes t1 ");
		query.append(" LEFT JOIN solicitantes t2 ON ( t1.id_solicitante_00 = t2.id_solicitante_01 ) ");
		query.append(" LEFT JOIN perfiles t3 ON ( t1.id_perfil_00 = t3.id_perfil_07 ) ");
		query.append(" LEFT JOIN cuentas t6 ON ( t1.id_cuenta_00 = t6.id_cuenta_05 )");
		query.append(" LEFT JOIN estados t7 ON ( t1.id_estado_00 = t7.id_estado_30 )");
		query.append(" LEFT JOIN direcciones t8 ON ( t1.id_direccion_00 = t8.id_direccion_06 )");
		query.append(
				" LEFT JOIN t17_municipio t9 ON ( t8.id_provincia_06 = t9.provincia_id AND t8.id_municipio_06 = t9.id )");
		query.append(" LEFT JOIN t17_provincia t10 ON ( t8.id_provincia_06 = t10.id )");
		query.append(" LEFT JOIN datos_interop t11 ON ( t1.id_expediente_00 = t11.id_expediente_19 )");
		query.append(
				" LEFT JOIN dependencia t12 ON (t1.id_expediente_00 = t12.id_expediente_04 AND t12.f_historico_04 IS NULL) ");
		query.append(
				" LEFT JOIN discapacidad t13 ON (t1.id_expediente_00 = t13.id_expediente_71 AND t13.f_historico_71 IS NULL) ");

		query.append(
				" LEFT JOIN INSTALACIONES t14 ON (t1.ID_SOLICITANTE_00 = t14.ID_SOLICITANTE_52 AND t14.F_HISTORICO_52 IS NULL) ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(filterExpedientes, startsWith);
		StringBuilder where = new StringBuilder(" WHERE 1=1 ");

		where.append(mapaWhere.get("query"));

		// Buscar todos los estados menos "Pendiente completar solicitud"
		where.append(" AND t7.ID_ESTADO_30 <> ? ");

		List<Object> params = (List<Object>) mapaWhere.get("params");
		params.add(EstadosExpedienteEnum.PEND_COMPLETAR.getId());

		query.append(where);

		if (tableRequestDto != null) {
			query = TableManager.getPaginationQuery(tableRequestDto, query, ExpedientesDaoImpl.ORDER_BY_WHITE_LIST);
		}

		List<Expedientes> result = (List<Expedientes>) this.jdbcTemplate.query(query.toString(), this.rwMap,
				params.toArray());

		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		return result;
	}

	/**
	 * Finds a list of rows in the Expedientes table.
	 *
	 * @param expedientes     Expedientes
	 * @param tableRequestDto TableRequestDto
	 * @return List<Expedientes>
	 */
	@Transactional(readOnly = true)
	public List<Expedientes> findAll(Expedientes expedientes, TableRequestDto tableRequestDto) {

		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.FOLDER_ID_00 FOLDERID00,t1.F_REGISTRO_00 FREGISTRO00,t1.NUM_REGISTRO_00 NUMREGISTRO00,t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00,t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00,t1.F_RECEPCION_00 FRECEPCION00,t1.F_APERTURA_EXP_00 FAPERTURAEXP00,t1.F_CIERRE_00 FCIERRE00,t1.F_ARCHIVO_00 FARCHIVO00,t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00,t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00,t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00,t1.ID_TIPO_NOT_00 IDTIPONOT00,t1.CANAL_NOT_00 CANALNOT00,t1.EMAIL_NOT_00 EMAILNOT00,t1.TFNO_NOT_00 TFNONOT00,t1.IDIOMA_NOT_00 IDIOMANOT00,t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00,t1.DE_OFICIO_00 DEOFICIO00,t1.URGENCIA_00 URGENCIA00,t1.RAZON_URGENCIA_00 RAZONURGENCIA00,t1.CODIGO_SGA_00 CODIGOSGA00,t1.PRESENTA_SOL_00 PRESENTASOL00,t1.SE_OPONE_00 SEOPONE00,t1.NOMBRE_CON_00 NOMBRECON00,t1.APELLIDO1_CON_00 APELLIDO1CON00,t1.APELLIDO2_CON_00 APELLIDO2CON00,t1.AUTORIZACION_CON_00 AUTORIZACIONCON00,t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00,t1.TIPO_IDEN_CON_00 TIPOIDENCON00,t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00,t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00,t1.OBSERVACIONES_00 OBSERVACIONES00,t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00, t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00,t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00, t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00, t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00, t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00, t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00,t1.USU_MODIF_00 USUMODIF00,t1.F_ALTA_00 FALTA00,t1.F_MODIF_00 FMODIF00,t1.ES_DENEGACION_SERVICIO_00 ESDENEGACIONSERVICIO00, t1.PDTE_SOLICITAR_PADRON_00 PDTESOLICITARPADRON00,t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01,t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01,t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01,t2.NOMBRE_01 SOLNOMBRE01,t2.APELLIDO1_01 SOLAPELLIDO101,t2.APELLIDO2_01 SOLAPELLIDO201,t2.SEXO_01 SOLSEXO01,t2.F_NACIMIENTO_01 SOLFNACIMIENTO01,t2.NUMSS_01 SOLNUMSS01,t2.NUMTIS_01 SOLNUMTIS01,t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01,t2.BENEFICIARIO_01 SOLBENEFICIARIO01,t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01,t2.F_BAJA_01 SOLFBAJA01,t2.F_INICIO_01 SOLFINICIO01,t2.NUM_ABONADO_01 SOLNUMABONADO01,t2.OBSERVACIONES_01 SOLOBSERVACIONES01,t2.NO_REINTENTAR_01 SOLNOREINTENTAR01,t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01, t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01, t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01, t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01,t2.USU_MODIF_01 SOLUSUMODIF01,t2.F_ALTA_01 SOLFALTA01,t2.F_MODIF_01 SOLFMODIF01,t2.ES_DENEGACION_SERVICIO_01 ESDENEGACIONSERVICIO01 ,t3.ID_PERFIL_07 PERFILESIDPERFIL07,t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07,t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07,t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07,t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07,t3.DIS_FISICA_07 PERFILESDISFISICA07,t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07,t3.ENF_MENTAL_07 PERFILESENFMENTAL07,t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07,t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07,t3.F_ALTA_07 PERFILESFALTA07,t3.USU_ALTA_07 PERFILESUSUALTA07,t6.ID_CUENTA_05 CUENTASIDCUENTA05,t6.NUM_CUENTA_05 CUENTASNUMCUENTA05,t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05,t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05,t6.F_ALTA_05 CUENTASFALTA05,t6.USU_ALTA_05 CUENTASUSUALTA05,t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05,t7.ID_ESTADO_30 ESTADOSIDESTADO30,t7.DESCRIPCION_ES_30 ESTADOSDESCES30,t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30,t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06,t8.CALLE_06 DIRECCIONESCALLE06,t8.CP_06 DIRECCIONESCP06,t8.ID_CALLE_06 DIRECCIONESIDCALLE06,t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06,t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06,t8.ID_PAIS_06 DIRECCIONESIDPAIS06,t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06,t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06,t8.LETRA_06 DIRECCIONESLETRA06,t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06,t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06,t8.PAIS_06 DIRECCIONESPAIS06,t8.PISO_06 DIRECCIONESPISO06,t8.PORTAL_06 DIRECCIONESPORTAL06,t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06,t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06, t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06,t8.F_ALTA_06 DIRECCIONESFALTA06,t8.USU_ALTA_06 DIRECCIONESUSUALTA06,t2.ID_CUENTA_01 SOLIDCUENTA01,t2.ID_PERFIL_01 SOLIDPERFIL01,t2.ID_DIRECCION_01 SOLIDDIRECCION01, t2.ID_VALORACION_01 SOLIDVALORACION01, t3.ID_PISO_07 PERFILESIDPISO07 , t9.ID_INTEROP_19 INTEROPIDINTEROP19, t9.CODRESUL_CON_DGP_19 INTEROPCODRESULCONDGP19 , t9.RESUL_CON_DGP_19 INTEROPRESULCONDGP19 ");
		query.append(
				"FROM EXPEDIENTES t1 ,SOLICITANTES t2 ,PERFILES t3 ,CUENTAS t6 ,ESTADOS t7 ,DIRECCIONES t8 , DATOS_INTEROP t9 ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereMap(expedientes);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t1.ID_SOLICITANTE_00= t2.ID_SOLICITANTE_01(+) AND t1.ID_PERFIL_00= t3.ID_PERFIL_07(+) AND t1.ID_CUENTA_00= t6.ID_CUENTA_05(+) AND t1.ID_ESTADO_00= t7.ID_ESTADO_30(+) AND t1.ID_DIRECCION_00= t8.ID_DIRECCION_06(+) AND t1.ID_EXPEDIENTE_00 = t9.ID_EXPEDIENTE_19(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		if (tableRequestDto != null) {
			query = TableManager.getPaginationQuery(tableRequestDto, query, ExpedientesDaoImpl.ORDER_BY_WHITE_LIST);
		}

		List<Expedientes> result = (List<Expedientes>) this.ad74aJdbcTemplate.queryHist(query.toString(), this.rwMap,
				params.toArray(), expedientes.isHistorico());

		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		return result;
	}

	/**
	 * Finds rows in the Expedientes table using like.
	 *
	 * @param expedientes     Expedientes
	 * @param tableRequestDto TableRequestDto
	 * @param startsWith      Boolean
	 * @return List<Expedientes>
	 */
	@Transactional(readOnly = true)
	public List<Expedientes> findAllLike(Expedientes expedientes, TableRequestDto tableRequestDto, Boolean startsWith) {

		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.FOLDER_ID_00 FOLDERID00,t1.F_REGISTRO_00 FREGISTRO00,t1.NUM_REGISTRO_00 NUMREGISTRO00,t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00,t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00,t1.F_RECEPCION_00 FRECEPCION00,t1.F_APERTURA_EXP_00 FAPERTURAEXP00,t1.F_CIERRE_00 FCIERRE00,t1.F_ARCHIVO_00 FARCHIVO00,t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00,t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00,t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00,t1.ID_TIPO_NOT_00 IDTIPONOT00,t1.CANAL_NOT_00 CANALNOT00,t1.EMAIL_NOT_00 EMAILNOT00,t1.TFNO_NOT_00 TFNONOT00,t1.IDIOMA_NOT_00 IDIOMANOT00,t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00,t1.DE_OFICIO_00 DEOFICIO00,t1.URGENCIA_00 URGENCIA00,t1.RAZON_URGENCIA_00 RAZONURGENCIA00,t1.CODIGO_SGA_00 CODIGOSGA00,t1.PRESENTA_SOL_00 PRESENTASOL00,t1.SE_OPONE_00 SEOPONE00,t1.NOMBRE_CON_00 NOMBRECON00,t1.APELLIDO1_CON_00 APELLIDO1CON00,t1.APELLIDO2_CON_00 APELLIDO2CON00,t1.AUTORIZACION_CON_00 AUTORIZACIONCON00,t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00,t1.TIPO_IDEN_CON_00 TIPOIDENCON00,t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00,t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00,t1.OBSERVACIONES_00 OBSERVACIONES00,t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00,t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00, t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00, t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00, t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00, t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00, t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00,t1.USU_MODIF_00 USUMODIF00,t1.F_ALTA_00 FALTA00,t1.F_MODIF_00 FMODIF00,t1.ES_DENEGACION_SERVICIO_00 ESDENEGACIONSERVICIO00, t1.PDTE_SOLICITAR_PADRON_00 PDTESOLICITARPADRON00 ");
		query.append(
				",t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01,t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01,t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01,t2.NOMBRE_01 SOLNOMBRE01,t2.APELLIDO1_01 SOLAPELLIDO101,t2.APELLIDO2_01 SOLAPELLIDO201,t2.SEXO_01 SOLSEXO01,t2.F_NACIMIENTO_01 SOLFNACIMIENTO01,t2.NUMSS_01 SOLNUMSS01,t2.NUMTIS_01 SOLNUMTIS01,t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01,t2.BENEFICIARIO_01 SOLBENEFICIARIO01,t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01,t2.F_BAJA_01 SOLFBAJA01,t2.F_INICIO_01 SOLFINICIO01,t2.NUM_ABONADO_01 SOLNUMABONADO01,t2.OBSERVACIONES_01 SOLOBSERVACIONES01,t2.NO_REINTENTAR_01 SOLNOREINTENTAR01,t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01, t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01, t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01, t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01,t2.USU_MODIF_01 SOLUSUMODIF01,t2.F_ALTA_01 SOLFALTA01,t2.F_MODIF_01 SOLFMODIF01,t2.ES_DENEGACION_SERVICIO_01 ESDENEGACIONSERVICIO01,t2.ID_CUENTA_01 SOLIDCUENTA01,t2.ID_PERFIL_01 SOLIDPERFIL01,t2.ID_DIRECCION_01 SOLIDDIRECCION01,t2.ID_VALORACION_01 SOLIDVALORACION01 ");
		query.append(
				",t3.ID_PERFIL_07 PERFILESIDPERFIL07,t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07,t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07,t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07,t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07,t3.DIS_FISICA_07 PERFILESDISFISICA07,t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07,t3.ENF_MENTAL_07 PERFILESENFMENTAL07,t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07,t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07,t3.F_ALTA_07 PERFILESFALTA07,t3.USU_ALTA_07 PERFILESUSUALTA07,t3.ID_PISO_07 PERFILESIDPISO07");
		query.append(
				",t6.ID_CUENTA_05 CUENTASIDCUENTA05,t6.NUM_CUENTA_05 CUENTASNUMCUENTA05,t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05,t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05,t6.F_ALTA_05 CUENTASFALTA05,t6.USU_ALTA_05 CUENTASUSUALTA05,t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05");
		query.append(
				",t7.ID_ESTADO_30 ESTADOSIDESTADO30,t7.DESCRIPCION_ES_30 ESTADOSDESCES30,t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30");
		query.append(
				",t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06,t8.CALLE_06 DIRECCIONESCALLE06,t8.CP_06 DIRECCIONESCP06,t8.ID_CALLE_06 DIRECCIONESIDCALLE06,t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06,t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06,t8.ID_PAIS_06 DIRECCIONESIDPAIS06,t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06,t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06,t8.LETRA_06 DIRECCIONESLETRA06,t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06,t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06,t8.PAIS_06 DIRECCIONESPAIS06,t8.PISO_06 DIRECCIONESPISO06,t8.PORTAL_06 DIRECCIONESPORTAL06,t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06,t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06, t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06,t8.F_ALTA_06 DIRECCIONESFALTA06,t8.USU_ALTA_06 DIRECCIONESUSUALTA06");
		query.append(
				",t11.ID_INTEROP_19 INTEROPIDINTEROP19, t11.CODRESUL_CON_DGP_19 INTEROPCODRESULCONDGP19 , t11.RESUL_CON_DGP_19 INTEROPRESULCONDGP19  ");
		query.append(" ,t14.F_INSTALACION_52 FINSTALACION52, t14.MOTIV_INST_FUERA_PLAZO_52 MOTIVINSTFUERAPLAZO52 ");

		query.append(" FROM expedientes t1 ");
		query.append(" LEFT JOIN solicitantes t2 ON ( t1.id_solicitante_00 = t2.id_solicitante_01 ) ");
		query.append(" LEFT JOIN perfiles t3 ON ( t1.id_perfil_00 = t3.id_perfil_07 ) ");
		query.append(" LEFT JOIN cuentas t6 ON ( t1.id_cuenta_00 = t6.id_cuenta_05 )");
		query.append(" LEFT JOIN estados t7 ON ( t1.id_estado_00 = t7.id_estado_30 )");
		query.append(" LEFT JOIN direcciones t8 ON ( t1.id_direccion_00 = t8.id_direccion_06 )");
		query.append(
				" LEFT JOIN t17_municipio t9 ON ( t8.id_provincia_06 = t9.provincia_id AND t8.id_municipio_06 = t9.id )");
		query.append(" LEFT JOIN t17_provincia t10 ON ( t8.id_provincia_06 = t10.id )");
		query.append(" LEFT JOIN datos_interop t11 ON ( t1.id_expediente_00 = t11.id_expediente_19 )");
		query.append(
				" LEFT JOIN dependencia t12 ON (t1.id_expediente_00 = t12.id_expediente_04 AND t12.f_historico_04 IS NULL) ");
		query.append(
				" LEFT JOIN discapacidad t13 ON (t1.id_expediente_00 = t13.id_expediente_71 AND t13.f_historico_71 IS NULL) ");

		query.append(
				" LEFT JOIN INSTALACIONES t14 ON (t1.ID_SOLICITANTE_00 = t14.ID_SOLICITANTE_52 AND t14.F_HISTORICO_52 IS NULL) ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(expedientes, startsWith);
		StringBuilder where = new StringBuilder(" WHERE 1=1 ");

		where.append(mapaWhere.get("query"));

		// Buscar todos los estados menos "Pendiente completar solicitud"
		where.append(" AND t7.ID_ESTADO_30 <> ? ");

		List<Object> params = (List<Object>) mapaWhere.get("params");
		params.add(EstadosExpedienteEnum.PEND_COMPLETAR.getId());

		query.append(where);

		if (tableRequestDto != null) {
			query = TableManager.getPaginationQuery(tableRequestDto, query, ExpedientesDaoImpl.ORDER_BY_WHITE_LIST);
		}

		List<Expedientes> result = (List<Expedientes>) this.jdbcTemplate.query(query.toString(), this.rwMap,
				params.toArray());

		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		return result;
	}

	/**
	 * Finds rows in the Expedientes table using like.
	 *
	 * @param expedientes     Expedientes
	 * @param tableRequestDto TableRequestDto
	 * @param startsWith      Boolean
	 * @return List<Expedientes>
	 */

	@Transactional(readOnly = true)
	@Override
	public List<Expedientes> findAllLikeRelacionados(Expedientes filterExpedientes, TableRequestDto tableRequestDto,
			boolean b) {

		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.FOLDER_ID_00 FOLDERID00,t1.F_REGISTRO_00 FREGISTRO00,t1.NUM_REGISTRO_00 NUMREGISTRO00,t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00,t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00,t1.F_RECEPCION_00 FRECEPCION00,t1.F_APERTURA_EXP_00 FAPERTURAEXP00,t1.F_CIERRE_00 FCIERRE00,t1.F_ARCHIVO_00 FARCHIVO00,t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00,t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00,t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00,t1.ID_TIPO_NOT_00 IDTIPONOT00,t1.CANAL_NOT_00 CANALNOT00,t1.EMAIL_NOT_00 EMAILNOT00,t1.TFNO_NOT_00 TFNONOT00,t1.IDIOMA_NOT_00 IDIOMANOT00,t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00,t1.DE_OFICIO_00 DEOFICIO00,t1.URGENCIA_00 URGENCIA00,t1.RAZON_URGENCIA_00 RAZONURGENCIA00,t1.CODIGO_SGA_00 CODIGOSGA00,t1.PRESENTA_SOL_00 PRESENTASOL00,t1.SE_OPONE_00 SEOPONE00,t1.NOMBRE_CON_00 NOMBRECON00,t1.APELLIDO1_CON_00 APELLIDO1CON00,t1.APELLIDO2_CON_00 APELLIDO2CON00,t1.AUTORIZACION_CON_00 AUTORIZACIONCON00,t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00,t1.TIPO_IDEN_CON_00 TIPOIDENCON00,t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00,t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00,t1.OBSERVACIONES_00 OBSERVACIONES00,t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00,t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00, t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00, t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00, t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00, t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00, t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00,t1.USU_MODIF_00 USUMODIF00,t1.F_ALTA_00 FALTA00,t1.F_MODIF_00 FMODIF00,t1.ES_DENEGACION_SERVICIO_00 ESDENEGACIONSERVICIO00, t1.PDTE_SOLICITAR_PADRON_00 PDTESOLICITARPADRON00");
		query.append(
				",t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01,t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01,t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01,t2.NOMBRE_01 SOLNOMBRE01,t2.APELLIDO1_01 SOLAPELLIDO101,t2.APELLIDO2_01 SOLAPELLIDO201,t2.SEXO_01 SOLSEXO01,t2.F_NACIMIENTO_01 SOLFNACIMIENTO01,t2.NUMSS_01 SOLNUMSS01,t2.NUMTIS_01 SOLNUMTIS01,t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01,t2.BENEFICIARIO_01 SOLBENEFICIARIO01,t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01,t2.F_BAJA_01 SOLFBAJA01,t2.F_INICIO_01 SOLFINICIO01,t2.NUM_ABONADO_01 SOLNUMABONADO01,t2.OBSERVACIONES_01 SOLOBSERVACIONES01,t2.NO_REINTENTAR_01 SOLNOREINTENTAR01,t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01, t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01, t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01, t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01,t2.USU_MODIF_01 SOLUSUMODIF01,t2.F_ALTA_01 SOLFALTA01,t2.F_MODIF_01 SOLFMODIF01,t2.ES_DENEGACION_SERVICIO_01 ESDENEGACIONSERVICIO01,t2.ID_CUENTA_01 SOLIDCUENTA01,t2.ID_PERFIL_01 SOLIDPERFIL01,t2.ID_DIRECCION_01 SOLIDDIRECCION01,t2.ID_VALORACION_01 SOLIDVALORACION01 ");
		query.append(
				",t3.ID_PERFIL_07 PERFILESIDPERFIL07,t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07,t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07,t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07,t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07,t3.DIS_FISICA_07 PERFILESDISFISICA07,t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07,t3.ENF_MENTAL_07 PERFILESENFMENTAL07,t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07,t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07,t3.F_ALTA_07 PERFILESFALTA07,t3.USU_ALTA_07 PERFILESUSUALTA07,t3.ID_PISO_07 PERFILESIDPISO07");
		query.append(
				",t6.ID_CUENTA_05 CUENTASIDCUENTA05,t6.NUM_CUENTA_05 CUENTASNUMCUENTA05,t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05,t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05,t6.F_ALTA_05 CUENTASFALTA05,t6.USU_ALTA_05 CUENTASUSUALTA05,t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05");
		query.append(
				",t7.ID_ESTADO_30 ESTADOSIDESTADO30,t7.DESCRIPCION_ES_30 ESTADOSDESCES30,t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30");
		query.append(
				",t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06,t8.CALLE_06 DIRECCIONESCALLE06,t8.CP_06 DIRECCIONESCP06,t8.ID_CALLE_06 DIRECCIONESIDCALLE06,t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06,t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06,t8.ID_PAIS_06 DIRECCIONESIDPAIS06,t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06,t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06,t8.LETRA_06 DIRECCIONESLETRA06,t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06,t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06,t8.PAIS_06 DIRECCIONESPAIS06,t8.PISO_06 DIRECCIONESPISO06,t8.PORTAL_06 DIRECCIONESPORTAL06,t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06,t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06, t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06,t8.F_ALTA_06 DIRECCIONESFALTA06,t8.USU_ALTA_06 DIRECCIONESUSUALTA06");
		query.append(
				",t11.ID_INTEROP_19 INTEROPIDINTEROP19, t11.CODRESUL_CON_DGP_19 INTEROPCODRESULCONDGP19 , t11.RESUL_CON_DGP_19 INTEROPRESULCONDGP19  ");
		query.append(" ,t14.F_INSTALACION_52 FINSTALACION52, t14.MOTIV_INST_FUERA_PLAZO_52 MOTIVINSTFUERAPLAZO52 ");

		query.append(" FROM expedientes t1 ");
		query.append(" LEFT JOIN solicitantes t2 ON ( t1.id_solicitante_00 = t2.id_solicitante_01 ) ");
		query.append(" LEFT JOIN perfiles t3 ON ( t1.id_perfil_00 = t3.id_perfil_07 ) ");
		query.append(" LEFT JOIN cuentas t6 ON ( t1.id_cuenta_00 = t6.id_cuenta_05 )");
		query.append(" LEFT JOIN estados t7 ON ( t1.id_estado_00 = t7.id_estado_30 )");
		query.append(" LEFT JOIN direcciones t8 ON ( t1.id_direccion_00 = t8.id_direccion_06 )");
		query.append(
				" LEFT JOIN t17_municipio t9 ON ( t8.id_provincia_06 = t9.provincia_id AND t8.id_municipio_06 = t9.id )");
		query.append(" LEFT JOIN t17_provincia t10 ON ( t8.id_provincia_06 = t10.id )");
		query.append(" LEFT JOIN datos_interop t11 ON ( t1.id_expediente_00 = t11.id_expediente_19 )");
		query.append(
				" LEFT JOIN dependencia t12 ON (t1.id_expediente_00 = t12.id_expediente_04 AND t12.f_historico_04 IS NULL) ");
		query.append(
				" LEFT JOIN discapacidad t13 ON (t1.id_expediente_00 = t13.id_expediente_71 AND t13.f_historico_71 IS NULL) ");

		query.append(
				" LEFT JOIN INSTALACIONES t14 ON (t1.ID_SOLICITANTE_00 = t14.ID_SOLICITANTE_52 AND t14.F_HISTORICO_52 IS NULL) ");

		// Where clause & Params

		List<Object> params = new ArrayList<Object>();
		StringBuilder where = new StringBuilder(" WHERE 1=1 ");

		// Buscar todos los estados menos "Pendiente completar solicitud"
		where.append(" AND t7.ID_ESTADO_30 <> ? ");
		params.add(EstadosExpedienteEnum.PEND_COMPLETAR.getId());

		where.append(
				" AND t1.ID_SOLICITANTE_00 in (SELECT sc1.ID_SOLICITANTE_01 FROM solicitantes sc1 where sc1.IDENTIFICADOR_01 = (SELECT sc2.IDENTIFICADOR_01 FROM solicitantes sc2 where  sc2.ID_SOLICITANTE_01 = ?))");
		params.add(filterExpedientes.getIdSolicitante00());

		query.append(where);

		if (tableRequestDto != null) {
			query = TableManager.getPaginationQuery(tableRequestDto, query, ExpedientesDaoImpl.ORDER_BY_WHITE_LIST);
		}

		List<Expedientes> result = (List<Expedientes>) this.jdbcTemplate.query(query.toString(), this.rwMap,
				params.toArray());
		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		return result;

	}

	@Transactional(readOnly = true)
	public List<Expedientes> findAllLikeBandejaPapel0(Expedientes expedientes, TableRequestDto tableRequestDto,
			Boolean startsWith) {
		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.FOLDER_ID_00 FOLDERID00,t1.F_REGISTRO_00 FREGISTRO00,t1.NUM_REGISTRO_00 NUMREGISTRO00,t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00,t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00,t1.F_RECEPCION_00 FRECEPCION00,t1.F_APERTURA_EXP_00 FAPERTURAEXP00,t1.F_CIERRE_00 FCIERRE00,t1.F_ARCHIVO_00 FARCHIVO00,t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00,t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00,t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00,t1.ID_TIPO_NOT_00 IDTIPONOT00,t1.CANAL_NOT_00 CANALNOT00,t1.EMAIL_NOT_00 EMAILNOT00,t1.TFNO_NOT_00 TFNONOT00,t1.IDIOMA_NOT_00 IDIOMANOT00,t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00,t1.DE_OFICIO_00 DEOFICIO00,t1.URGENCIA_00 URGENCIA00,t1.RAZON_URGENCIA_00 RAZONURGENCIA00,t1.CODIGO_SGA_00 CODIGOSGA00,t1.PRESENTA_SOL_00 PRESENTASOL00,t1.SE_OPONE_00 SEOPONE00,t1.NOMBRE_CON_00 NOMBRECON00,t1.APELLIDO1_CON_00 APELLIDO1CON00,t1.APELLIDO2_CON_00 APELLIDO2CON00,t1.AUTORIZACION_CON_00 AUTORIZACIONCON00,t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00,t1.TIPO_IDEN_CON_00 TIPOIDENCON00,t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00,t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00,t1.OBSERVACIONES_00 OBSERVACIONES00,t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00,t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00, t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00, t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00, t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00, t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00, t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00,t1.USU_MODIF_00 USUMODIF00,t1.F_ALTA_00 FALTA00,t1.F_MODIF_00 FMODIF00,t1.ES_DENEGACION_SERVICIO_00 ESDENEGACIONSERVICIO00, t1.PDTE_SOLICITAR_PADRON_00 PDTESOLICITARPADRON00,t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01,t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01,t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01,t2.NOMBRE_01 SOLNOMBRE01,t2.APELLIDO1_01 SOLAPELLIDO101,t2.APELLIDO2_01 SOLAPELLIDO201,t2.SEXO_01 SOLSEXO01,t2.F_NACIMIENTO_01 SOLFNACIMIENTO01,t2.NUMSS_01 SOLNUMSS01,t2.NUMTIS_01 SOLNUMTIS01,t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01,t2.BENEFICIARIO_01 SOLBENEFICIARIO01,t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01,t2.F_BAJA_01 SOLFBAJA01,t2.F_INICIO_01 SOLFINICIO01,t2.NUM_ABONADO_01 SOLNUMABONADO01,t2.OBSERVACIONES_01 SOLOBSERVACIONES01,t2.NO_REINTENTAR_01 SOLNOREINTENTAR01,t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01, t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01, t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01, t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01,t2.USU_MODIF_01 SOLUSUMODIF01,t2.F_ALTA_01 SOLFALTA01,t2.F_MODIF_01 SOLFMODIF01,t2.ES_DENEGACION_SERVICIO_01 ESDENEGACIONSERVICIO01 ,t3.ID_PERFIL_07 PERFILESIDPERFIL07,t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07,t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07,t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07,t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07,t3.DIS_FISICA_07 PERFILESDISFISICA07,t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07,t3.ENF_MENTAL_07 PERFILESENFMENTAL07,t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07,t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07,t3.F_ALTA_07 PERFILESFALTA07,t3.USU_ALTA_07 PERFILESUSUALTA07,t6.ID_CUENTA_05 CUENTASIDCUENTA05,t6.NUM_CUENTA_05 CUENTASNUMCUENTA05,t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05,t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05,t6.F_ALTA_05 CUENTASFALTA05,t6.USU_ALTA_05 CUENTASUSUALTA05, t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05,t7.ID_ESTADO_30 ESTADOSIDESTADO30,t7.DESCRIPCION_ES_30 ESTADOSDESCES30,t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06,t8.CALLE_06 DIRECCIONESCALLE06,t8.CP_06 DIRECCIONESCP06,t8.ID_CALLE_06 DIRECCIONESIDCALLE06,t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06,t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06,t8.ID_PAIS_06 DIRECCIONESIDPAIS06,t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06,t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06,t8.LETRA_06 DIRECCIONESLETRA06,t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06,t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06,t8.PAIS_06 DIRECCIONESPAIS06,t8.PISO_06 DIRECCIONESPISO06,t8.PORTAL_06 DIRECCIONESPORTAL06,t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06,t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06, t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06,t8.F_ALTA_06 DIRECCIONESFALTA06,t8.USU_ALTA_06 DIRECCIONESUSUALTA06,t2.ID_CUENTA_01 SOLIDCUENTA01,t2.ID_PERFIL_01 SOLIDPERFIL01,t2.ID_DIRECCION_01 SOLIDDIRECCION01,t2.ID_VALORACION_01 SOLIDVALORACION01, t3.ID_PISO_07 PERFILESIDPISO07, t11.ID_INTEROP_19 INTEROPIDINTEROP19, t11.CODRESUL_CON_DGP_19 INTEROPCODRESULCONDGP19 , t11.RESUL_CON_DGP_19 INTEROPRESULCONDGP19, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30, t12.id_dependencia_04 IDDEPENDENCIA04,t12.id_grado_dependencia_04 IDGRADODEPENDENCIA04, t12.baremo_04 BAREMO_04, t12.desc_otra_dependencia_04 DESCOTRADEPENDENCIA04, t13.desc_discapacidad_71 DESCDISCAPACIDAD71, t13.discapacidad_fisica_71 DISCAPACIDADFISICA71, t13.DISCAPACIDAD_INTELECTO_71 DISCAPACIDADINTELECTO71, t13.DISCAPACIDAD_SENSORIAL_71 DISCAPACIDADSENSORIAL71  ");
		query.append(
				"FROM EXPEDIENTES t1 ,SOLICITANTES t2 ,PERFILES t3 ,CUENTAS t6 ,ESTADOS t7 ,DIRECCIONES t8, T17_MUNICIPIO t9 , T17_PROVINCIA t10 , DATOS_INTEROP t11, dependencia t12, discapacidad t13");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(expedientes, startsWith);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t1.ID_SOLICITANTE_00= t2.ID_SOLICITANTE_01(+) AND t1.ID_PERFIL_00= t3.ID_PERFIL_07(+) AND t1.ID_CUENTA_00= t6.ID_CUENTA_05(+) AND t1.ID_ESTADO_00= t7.ID_ESTADO_30(+) AND t1.ID_DIRECCION_00= t8.ID_DIRECCION_06(+) AND t8.ID_MUNICIPIO_06= t9.ID(+) AND t8.id_provincia_06 = t9.PROVINCIA_ID (+) AND t8.ID_PROVINCIA_06= t10.ID(+) AND t1.ID_EXPEDIENTE_00 = t11.ID_EXPEDIENTE_19(+) AND t1.id_expediente_00 = t12.id_expediente_04(+) AND t12.f_historico_04 is null AND t1.id_expediente_00 = t13.id_expediente_71(+) AND t13.f_historico_71 is null");

		where.append(mapaWhere.get("query"));

		List<Object> params = (List<Object>) mapaWhere.get("params");

		query.append(where);

		if (tableRequestDto != null) {
			query = TableManager.getPaginationQuery(tableRequestDto, query, ExpedientesDaoImpl.ORDER_BY_WHITE_LIST);
		}

		List<Expedientes> result = (List<Expedientes>) this.jdbcTemplate.query(query.toString(), this.rwMap,
				params.toArray());

		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		return result;
	}

	@Transactional(readOnly = true)
	public List<Expedientes> findByNumRegBandejaPapel0(Expedientes expedientes, TableRequestDto tableRequestDto,
			Boolean startsWith) {
		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.FOLDER_ID_00 FOLDERID00,t1.F_REGISTRO_00 FREGISTRO00,t1.NUM_REGISTRO_00 NUMREGISTRO00,t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00,t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00,t1.F_RECEPCION_00 FRECEPCION00,t1.F_APERTURA_EXP_00 FAPERTURAEXP00,t1.F_CIERRE_00 FCIERRE00,t1.F_ARCHIVO_00 FARCHIVO00,t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00,t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00,t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00,t1.ID_TIPO_NOT_00 IDTIPONOT00,t1.CANAL_NOT_00 CANALNOT00,t1.EMAIL_NOT_00 EMAILNOT00,t1.TFNO_NOT_00 TFNONOT00,t1.IDIOMA_NOT_00 IDIOMANOT00,t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00,t1.DE_OFICIO_00 DEOFICIO00,t1.URGENCIA_00 URGENCIA00,t1.RAZON_URGENCIA_00 RAZONURGENCIA00,t1.CODIGO_SGA_00 CODIGOSGA00,t1.PRESENTA_SOL_00 PRESENTASOL00,t1.SE_OPONE_00 SEOPONE00,t1.NOMBRE_CON_00 NOMBRECON00,t1.APELLIDO1_CON_00 APELLIDO1CON00,t1.APELLIDO2_CON_00 APELLIDO2CON00,t1.AUTORIZACION_CON_00 AUTORIZACIONCON00,t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00,t1.TIPO_IDEN_CON_00 TIPOIDENCON00,t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00,t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00,t1.OBSERVACIONES_00 OBSERVACIONES00,t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00,t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00, t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00, t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00, t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00, t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00, t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00,t1.USU_MODIF_00 USUMODIF00,t1.F_ALTA_00 FALTA00,t1.F_MODIF_00 FMODIF00,t1.ES_DENEGACION_SERVICIO_00 ESDENEGACIONSERVICIO00, t1.PDTE_SOLICITAR_PADRON_00 PDTESOLICITARPADRON00,t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01,t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01,t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01,t2.NOMBRE_01 SOLNOMBRE01,t2.APELLIDO1_01 SOLAPELLIDO101,t2.APELLIDO2_01 SOLAPELLIDO201,t2.SEXO_01 SOLSEXO01,t2.F_NACIMIENTO_01 SOLFNACIMIENTO01,t2.NUMSS_01 SOLNUMSS01,t2.NUMTIS_01 SOLNUMTIS01,t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01,t2.BENEFICIARIO_01 SOLBENEFICIARIO01,t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01,t2.F_BAJA_01 SOLFBAJA01,t2.F_INICIO_01 SOLFINICIO01,t2.NUM_ABONADO_01 SOLNUMABONADO01,t2.OBSERVACIONES_01 SOLOBSERVACIONES01,t2.NO_REINTENTAR_01 SOLNOREINTENTAR01,t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01, t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01, t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01, t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01,t2.USU_MODIF_01 SOLUSUMODIF01,t2.F_ALTA_01 SOLFALTA01,t2.F_MODIF_01 SOLFMODIF01,t2.ES_DENEGACION_SERVICIO_01 ESDENEGACIONSERVICIO01 ,t3.ID_PERFIL_07 PERFILESIDPERFIL07,t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07,t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07,t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07,t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07,t3.DIS_FISICA_07 PERFILESDISFISICA07,t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07,t3.ENF_MENTAL_07 PERFILESENFMENTAL07,t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07,t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07,t3.F_ALTA_07 PERFILESFALTA07,t3.USU_ALTA_07 PERFILESUSUALTA07,t6.ID_CUENTA_05 CUENTASIDCUENTA05,t6.NUM_CUENTA_05 CUENTASNUMCUENTA05,t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05,t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05,t6.F_ALTA_05 CUENTASFALTA05,t6.USU_ALTA_05 CUENTASUSUALTA05, t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05,t7.ID_ESTADO_30 ESTADOSIDESTADO30,t7.DESCRIPCION_ES_30 ESTADOSDESCES30,t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06,t8.CALLE_06 DIRECCIONESCALLE06,t8.CP_06 DIRECCIONESCP06,t8.ID_CALLE_06 DIRECCIONESIDCALLE06,t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06,t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06,t8.ID_PAIS_06 DIRECCIONESIDPAIS06,t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06,t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06,t8.LETRA_06 DIRECCIONESLETRA06,t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06,t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06,t8.PAIS_06 DIRECCIONESPAIS06,t8.PISO_06 DIRECCIONESPISO06,t8.PORTAL_06 DIRECCIONESPORTAL06,t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06,t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06, t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06,t8.F_ALTA_06 DIRECCIONESFALTA06,t8.USU_ALTA_06 DIRECCIONESUSUALTA06,t2.ID_CUENTA_01 SOLIDCUENTA01,t2.ID_PERFIL_01 SOLIDPERFIL01,t2.ID_DIRECCION_01 SOLIDDIRECCION01,t2.ID_VALORACION_01 SOLIDVALORACION01, t3.ID_PISO_07 PERFILESIDPISO07, t11.ID_INTEROP_19 INTEROPIDINTEROP19, t11.CODRESUL_CON_DGP_19 INTEROPCODRESULCONDGP19 , t11.RESUL_CON_DGP_19 INTEROPRESULCONDGP19, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30, t12.id_dependencia_04 IDDEPENDENCIA04,t12.id_grado_dependencia_04 IDGRADODEPENDENCIA04, t12.baremo_04 BAREMO_04, t12.desc_otra_dependencia_04 DESCOTRADEPENDENCIA04, t13.desc_discapacidad_71 DESCDISCAPACIDAD71, t13.discapacidad_fisica_71 DISCAPACIDADFISICA71, t13.DISCAPACIDAD_INTELECTO_71 DISCAPACIDADINTELECTO71, t13.DISCAPACIDAD_SENSORIAL_71 DISCAPACIDADSENSORIAL71  ");
		query.append(
				"FROM EXPEDIENTES t1 ,SOLICITANTES t2 ,PERFILES t3 ,CUENTAS t6 ,ESTADOS t7 ,DIRECCIONES t8, T17_MUNICIPIO t9 , T17_PROVINCIA t10 , DATOS_INTEROP t11, dependencia t12, discapacidad t13");

		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t1.ID_SOLICITANTE_00= t2.ID_SOLICITANTE_01(+) AND t1.ID_PERFIL_00= t3.ID_PERFIL_07(+) AND t1.ID_CUENTA_00= t6.ID_CUENTA_05(+) AND t1.ID_ESTADO_00= t7.ID_ESTADO_30(+) AND t1.ID_DIRECCION_00= t8.ID_DIRECCION_06(+) AND t8.ID_MUNICIPIO_06= t9.ID(+) AND t8.id_provincia_06 = t9.PROVINCIA_ID (+) AND t8.ID_PROVINCIA_06= t10.ID(+) AND t1.ID_EXPEDIENTE_00 = t11.ID_EXPEDIENTE_19(+) AND t1.id_expediente_00 = t12.id_expediente_04(+) AND t12.f_historico_04 is null AND t1.id_expediente_00 = t13.id_expediente_71(+) AND t13.f_historico_71 is null  AND t1.NUM_REGISTRO_00 = ?");

		List<Object> params = new ArrayList<Object>();
		params.add(expedientes.getNumRegistro00());

		query.append(where);

		if (tableRequestDto != null) {
			query = TableManager.getPaginationQuery(tableRequestDto, query, ExpedientesDaoImpl.ORDER_BY_WHITE_LIST);
		}

		List<Expedientes> result = (List<Expedientes>) this.jdbcTemplate.query(query.toString(), this.rwMap,
				params.toArray());

		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		return result;
	}
	/*
	 * OPERACIONES RUP_TABLE
	 */

	/**
	 * Counts rows in the Expedientes table.
	 *
	 * @param expedientes Expedientes
	 * @return Long
	 */
	@Transactional(readOnly = true)
	public Long findAllCount(Expedientes expedientes) {
		StringBuilder query = new StringBuilder(
				"SELECT COUNT(1) FROM EXPEDIENTES t1 , SOLICITANTES t2 , PERFILES t3 , CUENTAS t6 , ESTADOS t7 , DIRECCIONES t8 ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereMap(expedientes);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t1.ID_SOLICITANTE_00= t2.ID_SOLICITANTE_01(+) AND t1.ID_PERFIL_00= t3.ID_PERFIL_07(+) AND t1.ID_CUENTA_00= t6.ID_CUENTA_05(+) AND t1.ID_ESTADO_00= t7.ID_ESTADO_30(+) AND t8.id_provincia_06 = t9.PROVINCIA_ID (+) AND t1.ID_DIRECCION_00= t8.ID_DIRECCION_06(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		return this.jdbcTemplate.queryForObject(query.toString(), params.toArray(), Long.class);
	}

	/**
	 * Counts rows in the Expedientes table using like.
	 *
	 * @param expedientes Expedientes
	 * @param startsWith  Boolean
	 * @return Long
	 */
	@Transactional(readOnly = true)
	public Long findAllLikeCount(Expedientes expedientes, Boolean startsWith) {
		StringBuilder query = new StringBuilder("SELECT COUNT(1) ");
		query.append(" FROM expedientes t1 ");
		query.append(" LEFT JOIN solicitantes t2 ON ( t1.id_solicitante_00 = t2.id_solicitante_01 ) ");
		query.append(" LEFT JOIN perfiles t3 ON ( t1.id_perfil_00 = t3.id_perfil_07 ) ");
		query.append(" LEFT JOIN cuentas t6 ON ( t1.id_cuenta_00 = t6.id_cuenta_05 )");
		query.append(" LEFT JOIN estados t7 ON ( t1.id_estado_00 = t7.id_estado_30 )");
		query.append(" LEFT JOIN direcciones t8 ON ( t1.id_direccion_00 = t8.id_direccion_06 )");
		query.append(
				" LEFT JOIN t17_municipio t9 ON ( t8.id_provincia_06 = t9.provincia_id AND t8.id_municipio_06 = t9.id )");
		query.append(" LEFT JOIN t17_provincia t10 ON ( t8.id_provincia_06 = t10.id )");
		query.append(" LEFT JOIN datos_interop t11 ON ( t1.id_expediente_00 = t11.id_expediente_19 )");
		query.append(
				" LEFT JOIN dependencia t12 ON (t1.id_expediente_00 = t12.id_expediente_04 AND t12.f_historico_04 IS NULL) ");
		query.append(
				" LEFT JOIN discapacidad t13 ON (t1.id_expediente_00 = t13.id_expediente_71 AND t13.f_historico_71 IS NULL) ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(expedientes, startsWith);
		StringBuilder where = new StringBuilder(" WHERE 1=1 ");
		where.append(mapaWhere.get("query"));

		// Buscar todos los estados menos "Pendiente completar solicitud"
		where.append(" AND t7.ID_ESTADO_30 <> ? ");

		query.append(where);

		List<Object> params = (List<Object>) mapaWhere.get("params");
		params.add(EstadosExpedienteEnum.PEND_COMPLETAR.getId());

		return this.jdbcTemplate.queryForObject(query.toString(), params.toArray(), Long.class);
	}

	/**
	 * Counts rows in the Expedientes table using like.
	 *
	 * @param expedientes Expedientes
	 * @param startsWith  Boolean
	 * @return Long
	 */
	@Transactional(readOnly = true)
	@Override
	public Long findAllLikeCountRelacionados(Expedientes expedientes, Boolean startsWith) {
		StringBuilder query = new StringBuilder("SELECT COUNT(1) ");
		query.append(" FROM expedientes t1 ");
		query.append(" LEFT JOIN solicitantes t2 ON ( t1.id_solicitante_00 = t2.id_solicitante_01 ) ");
		query.append(" LEFT JOIN perfiles t3 ON ( t1.id_perfil_00 = t3.id_perfil_07 ) ");
		query.append(" LEFT JOIN cuentas t6 ON ( t1.id_cuenta_00 = t6.id_cuenta_05 )");
		query.append(" LEFT JOIN estados t7 ON ( t1.id_estado_00 = t7.id_estado_30 )");
		query.append(" LEFT JOIN direcciones t8 ON ( t1.id_direccion_00 = t8.id_direccion_06 )");
		query.append(
				" LEFT JOIN t17_municipio t9 ON ( t8.id_provincia_06 = t9.provincia_id AND t8.id_municipio_06 = t9.id )");
		query.append(" LEFT JOIN t17_provincia t10 ON ( t8.id_provincia_06 = t10.id )");
		query.append(" LEFT JOIN datos_interop t11 ON ( t1.id_expediente_00 = t11.id_expediente_19 )");
		query.append(
				" LEFT JOIN dependencia t12 ON (t1.id_expediente_00 = t12.id_expediente_04 AND t12.f_historico_04 IS NULL) ");
		query.append(
				" LEFT JOIN discapacidad t13 ON (t1.id_expediente_00 = t13.id_expediente_71 AND t13.f_historico_71 IS NULL) ");

		// Where clause & Params

		// Where clause & Params

		List<Object> params = new ArrayList<Object>();
		StringBuilder where = new StringBuilder(" WHERE 1=1 ");

		// Buscar todos los estados menos "Pendiente completar solicitud"
		where.append(" AND t7.ID_ESTADO_30 <> ? ");
		params.add(EstadosExpedienteEnum.PEND_COMPLETAR.getId());

		where.append(
				" AND t1.ID_SOLICITANTE_00 in (SELECT sc1.ID_SOLICITANTE_01 FROM solicitantes sc1 where sc1.IDENTIFICADOR_01 = (SELECT sc2.IDENTIFICADOR_01 FROM solicitantes sc2 where  sc2.ID_SOLICITANTE_01 = ?))");
		params.add(expedientes.getSolicitantes().getIdentificador01());

		query.append(where);

		return this.jdbcTemplate.queryForObject(query.toString(), params.toArray(), Long.class);
	}

	/**
	 * Reorder the data list of Expedientes selected for rup_table
	 *
	 * @param expedientes     Expedientes
	 * @param tableRequestDto TableRequestDto
	 * @param startsWith      Boolean
	 * @return List<TableRowDto<Expedientes>>
	 */
	@Override
	public List<TableRowDto<Expedientes>> reorderSelection(Expedientes expedientes, TableRequestDto tableRequestDto,
			Boolean startsWith) {

		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.FOLDER_ID_00 FOLDERID00,t1.F_REGISTRO_00 FREGISTRO00,t1.NUM_REGISTRO_00 NUMREGISTRO00,t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00,t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00,t1.F_RECEPCION_00 FRECEPCION00,t1.F_APERTURA_EXP_00 FAPERTURAEXP00,t1.F_CIERRE_00 FCIERRE00,t1.F_ARCHIVO_00 FARCHIVO00,t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00,t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00,t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00,t1.ID_TIPO_NOT_00 IDTIPONOT00,t1.CANAL_NOT_00 CANALNOT00,t1.EMAIL_NOT_00 EMAILNOT00,t1.TFNO_NOT_00 TFNONOT00,t1.IDIOMA_NOT_00 IDIOMANOT00,t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00,t1.DE_OFICIO_00 DEOFICIO00,t1.URGENCIA_00 URGENCIA00,t1.RAZON_URGENCIA_00 RAZONURGENCIA00,t1.CODIGO_SGA_00 CODIGOSGA00,t1.PRESENTA_SOL_00 PRESENTASOL00,t1.SE_OPONE_00 SEOPONE00,t1.NOMBRE_CON_00 NOMBRECON00,t1.APELLIDO1_CON_00 APELLIDO1CON00,t1.APELLIDO2_CON_00 APELLIDO2CON00,t1.AUTORIZACION_CON_00 AUTORIZACIONCON00,t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00,t1.TIPO_IDEN_CON_00 TIPOIDENCON00,t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00,t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00,t1.OBSERVACIONES_00 OBSERVACIONES00,t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00, t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00,t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00, t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00, t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00, t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00, t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00,t1.USU_MODIF_00 USUMODIF00,t1.F_ALTA_00 FALTA00,t1.F_MODIF_00 FMODIF00,t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01,t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01,t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01,t2.NOMBRE_01 SOLNOMBRE01,t2.APELLIDO1_01 SOLAPELLIDO101,t2.APELLIDO2_01 SOLAPELLIDO201,t2.SEXO_01 SOLSEXO01,t2.F_NACIMIENTO_01 SOLFNACIMIENTO01,t2.NUMSS_01 SOLNUMSS01,t2.NUMTIS_01 SOLNUMTIS01,t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01,t2.BENEFICIARIO_01 SOLBENEFICIARIO01,t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01,t2.F_BAJA_01 SOLFBAJA01,t2.F_INICIO_01 SOLFINICIO01,t2.NUM_ABONADO_01 SOLNUMABONADO01,t2.OBSERVACIONES_01 SOLOBSERVACIONES01,t2.NO_REINTENTAR_01 SOLNOREINTENTAR01,t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01, t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01, t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01, t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01,t2.USU_MODIF_01 SOLUSUMODIF01,t2.F_ALTA_01 SOLFALTA01,t2.F_MODIF_01 SOLFMODIF01,t3.ID_PERFIL_07 PERFILESIDPERFIL07,t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07,t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07,t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07,t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07,t3.DIS_FISICA_07 PERFILESDISFISICA07,t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07,t3.ENF_MENTAL_07 PERFILESENFMENTAL07,t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07,t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07,t3.F_ALTA_07 PERFILESFALTA07,t3.USU_ALTA_07 PERFILESUSUALTA07,t6.ID_CUENTA_05 CUENTASIDCUENTA05,t6.NUM_CUENTA_05 CUENTASNUMCUENTA05,t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05,t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05,t6.F_ALTA_05 CUENTASFALTA05,t6.USU_ALTA_05 CUENTASUSUALTA05, t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05,t7.ID_ESTADO_30 ESTADOSIDESTADO30,t7.DESCRIPCION_ES_30 ESTADOSDESCES30,t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30,t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06,t8.CALLE_06 DIRECCIONESCALLE06,t8.CP_06 DIRECCIONESCP06,t8.ID_CALLE_06 DIRECCIONESIDCALLE06,t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06,t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06,t8.ID_PAIS_06 DIRECCIONESIDPAIS06,t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06,t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06,t8.LETRA_06 DIRECCIONESLETRA06,t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06,t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06,t8.PAIS_06 DIRECCIONESPAIS06,t8.PISO_06 DIRECCIONESPISO06,t8.PORTAL_06 DIRECCIONESPORTAL06,t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06,t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06, t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06,t8.F_ALTA_06 DIRECCIONESFALTA06,t8.USU_ALTA_06 DIRECCIONESUSUALTA06,t2.ID_CUENTA_01 SOLIDCUENTA01,t2.ID_PERFIL_01 SOLIDPERFIL01,t2.ID_DIRECCION_01 SOLIDDIRECCION01,t2.ID_VALORACION_01 SOLIDVALORACION01, t3.ID_PISO_07 PERFILESIDPISO07 ");
		// FROM
		query.append("FROM EXPEDIENTES t1 ,SOLICITANTES t2 ,PERFILES t3 ,CUENTAS t6 ,ESTADOS t7 ,DIRECCIONES t8 ");
		// FILTRADO
		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(expedientes, startsWith);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t1.ID_SOLICITANTE_00= t2.ID_SOLICITANTE_01(+) AND t1.ID_PERFIL_00= t3.ID_PERFIL_07(+) AND t1.ID_CUENTA_00= t6.ID_CUENTA_05(+) AND t1.ID_ESTADO_00= t7.ID_ESTADO_30(+) AND t1.ID_DIRECCION_00= t8.ID_DIRECCION_06(+) ");
		where.append(mapaWhere.get("query"));
		query.append(where);

		// Parámetros de filtrado
		@SuppressWarnings("unchecked")
		List<Object> filterParamList = (List<Object>) mapaWhere.get("params");

		// SQL para la reordenación
		StringBuilder sbReorderSelectionSQL = TableManager.getReorderQuery(query, tableRequestDto, Expedientes.class,
				filterParamList, "IDEXPEDIENTE00");

		List<TableRowDto<Expedientes>> result = this.jdbcTemplate.query(sbReorderSelectionSQL.toString(),
				new RowNumResultSetExtractor<Expedientes>(this.rwMapPK, tableRequestDto), filterParamList.toArray());

		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		return result;
	}

	/**
	 * Search method for rup_table
	 *
	 * @param filterParams    Expedientes
	 * @param searchParams    Expedientes
	 * @param tableRequestDto TableRequestDto
	 * @param startsWith      Boolean
	 * @return List<TableRowDto<Expedientes>>
	 */
	@Override
	public List<TableRowDto<Expedientes>> search(Expedientes filterParams, Expedientes searchParams,
			TableRequestDto tableRequestDto, Boolean startsWith) {

		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.FOLDER_ID_00 FOLDERID00,t1.F_REGISTRO_00 FREGISTRO00,t1.NUM_REGISTRO_00 NUMREGISTRO00,t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00,t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00,t1.F_RECEPCION_00 FRECEPCION00,t1.F_APERTURA_EXP_00 FAPERTURAEXP00,t1.F_CIERRE_00 FCIERRE00,t1.F_ARCHIVO_00 FARCHIVO00,t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00,t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00,t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00,t1.ID_TIPO_NOT_00 IDTIPONOT00,t1.CANAL_NOT_00 CANALNOT00,t1.EMAIL_NOT_00 EMAILNOT00,t1.TFNO_NOT_00 TFNONOT00,t1.IDIOMA_NOT_00 IDIOMANOT00,t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00,t1.DE_OFICIO_00 DEOFICIO00,t1.URGENCIA_00 URGENCIA00,t1.RAZON_URGENCIA_00 RAZONURGENCIA00,t1.CODIGO_SGA_00 CODIGOSGA00,t1.PRESENTA_SOL_00 PRESENTASOL00,t1.SE_OPONE_00 SEOPONE00,t1.NOMBRE_CON_00 NOMBRECON00,t1.APELLIDO1_CON_00 APELLIDO1CON00,t1.APELLIDO2_CON_00 APELLIDO2CON00,t1.AUTORIZACION_CON_00 AUTORIZACIONCON00,t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00,t1.TIPO_IDEN_CON_00 TIPOIDENCON00,t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00,t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00,t1.OBSERVACIONES_00 OBSERVACIONES00,t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00, t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00,t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00, t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00, t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00, t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00, t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00,t1.USU_MODIF_00 USUMODIF00,t1.F_ALTA_00 FALTA00,t1.F_MODIF_00 FMODIF00,t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01,t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01,t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01,t2.NOMBRE_01 SOLNOMBRE01,t2.APELLIDO1_01 SOLAPELLIDO101,t2.APELLIDO2_01 SOLAPELLIDO201,t2.SEXO_01 SOLSEXO01,t2.F_NACIMIENTO_01 SOLFNACIMIENTO01,t2.NUMSS_01 SOLNUMSS01,t2.NUMTIS_01 SOLNUMTIS01,t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01,t2.BENEFICIARIO_01 SOLBENEFICIARIO01,t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01,t2.F_BAJA_01 SOLFBAJA01,t2.F_INICIO_01 SOLFINICIO01,t2.NUM_ABONADO_01 SOLNUMABONADO01,t2.OBSERVACIONES_01 SOLOBSERVACIONES01,t2.NO_REINTENTAR_01 SOLNOREINTENTAR01,t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01, t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01, t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01, t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01,t2.USU_MODIF_01 SOLUSUMODIF01,t2.F_ALTA_01 SOLFALTA01,t2.F_MODIF_01 SOLFMODIF01,t3.ID_PERFIL_07 PERFILESIDPERFIL07,t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07,t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07,t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07,t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07,t3.DIS_FISICA_07 PERFILESDISFISICA07,t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07,t3.ENF_MENTAL_07 PERFILESENFMENTAL07,t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07,t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07,t3.F_ALTA_07 PERFILESFALTA07,t3.USU_ALTA_07 PERFILESUSUALTA07,t6.ID_CUENTA_05 CUENTASIDCUENTA05,t6.NUM_CUENTA_05 CUENTASNUMCUENTA05,t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05,t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05,t6.F_ALTA_05 CUENTASFALTA05,t6.USU_ALTA_05 CUENTASUSUALTA05,t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05,t7.ID_ESTADO_30 ESTADOSIDESTADO30,t7.DESCRIPCION_ES_30 ESTADOSDESCES30,t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30,t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06,t8.CALLE_06 DIRECCIONESCALLE06,t8.CP_06 DIRECCIONESCP06,t8.ID_CALLE_06 DIRECCIONESIDCALLE06,t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06,t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06,t8.ID_PAIS_06 DIRECCIONESIDPAIS06,t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06,t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06,t8.LETRA_06 DIRECCIONESLETRA06,t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06,t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06,t8.PAIS_06 DIRECCIONESPAIS06,t8.PISO_06 DIRECCIONESPISO06,t8.PORTAL_06 DIRECCIONESPORTAL06,t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06,t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06, t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06,t8.F_ALTA_06 DIRECCIONESFALTA06,t8.USU_ALTA_06 DIRECCIONESUSUALTA06,t2.ID_CUENTA_01 SOLIDCUENTA01,t2.ID_PERFIL_01 SOLIDPERFIL01,t2.ID_DIRECCION_01 SOLIDDIRECCION01,t2.ID_VALORACION_01 SOLIDVALORACION01, t3.ID_PISO_07 PERFILESIDPISO07 ");
		// FROM
		query.append("FROM EXPEDIENTES t1 ,SOLICITANTES t2 ,PERFILES t3 ,CUENTAS t6 ,ESTADOS t7 ,DIRECCIONES t8 ");
		// TABLAS_ALIAS
		List<String> from_alias = new ArrayList<String>();
		from_alias.add(" t1 ");
		from_alias.add(" t2 ");
		from_alias.add(" t3 ");
		from_alias.add(" t4 ");
		from_alias.add(" t6 ");
		from_alias.add(" t7 ");
		from_alias.add(" t8 ");

		// FILTRADO
		Map<String, ?> mapaWhereFilter = this.getWhereLikeMap(filterParams, startsWith);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t1.ID_SOLICITANTE_00= t2.ID_SOLICITANTE_01(+) AND t1.ID_PERFIL_00= t3.ID_PERFIL_07(+) AND t1.ID_CUENTA_00= t6.ID_CUENTA_05(+) AND t1.ID_ESTADO_00= t7.ID_ESTADO_30(+) AND t1.ID_DIRECCION_00= t8.ID_DIRECCION_06(+) ");
		where.append(mapaWhereFilter.get("query"));
		query.append(where);
		// Filter params
		@SuppressWarnings("unchecked")
		List<Object> filterParamList = (List<Object>) mapaWhereFilter.get("params");

		// BUSQUEDA
		Map<String, Object> mapaWhereSearch = this.getWhereLikeMap(searchParams, startsWith);
		String searchSQL = ((StringBuilder) mapaWhereSearch.get("query")).toString();
		// Search params
		@SuppressWarnings("unchecked")
		List<Object> searchParamList = (List<Object>) mapaWhereSearch.get("params");

		// SQL
		StringBuilder sbReorderSelectionSQL = TableManager.getSearchQuery(query, tableRequestDto, Expedientes.class,
				filterParamList, searchSQL, searchParamList, from_alias, "IDEXPEDIENTE00");

		List<TableRowDto<Expedientes>> result = this.jdbcTemplate.query(sbReorderSelectionSQL.toString(),
				new RowNumResultSetExtractor<Expedientes>(this.rwMapPK, tableRequestDto), filterParamList.toArray());
		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		return result;
	}

	/**
	 * Remove multiple method for rup_table
	 *
	 * @param tableRequestDto TableRequestDto
	 */
	@Override
	public void removeMultiple(TableRequestDto tableRequestDto) {

		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		StringBuilder sbRemoveMultipleSQL = TableManager.getRemoveMultipleQuery(tableRequestDto, Expedientes.class,
				"EXPEDIENTES", new String[] { "IDEXPEDIENTE00" });

		List<String> params = tableRequestDto.getMultiselection().getSelectedIds();

		this.jdbcTemplate.update(sbRemoveMultipleSQL.toString(), params.toArray());

		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
	}

	/**
	 * Filter in the hierarchical Expedientes table.
	 *
	 * @param filterExpedientes Expedientes
	 * @param tableRequestDto   TableRequestDto
	 * @return List<JerarquiaDto<Expedientes>>
	 */
	@Override
	public List<JerarquiaDto<Expedientes>> findAllLikeJerarquia(Expedientes filterExpedientes,
			TableRequestDto tableRequestDto) {

		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		// SELECT
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.FOLDER_ID_00 FOLDERID00,t1.F_REGISTRO_00 FREGISTRO00,t1.NUM_REGISTRO_00 NUMREGISTRO00,t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00,t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00,t1.F_RECEPCION_00 FRECEPCION00,t1.F_APERTURA_EXP_00 FAPERTURAEXP00,t1.F_CIERRE_00 FCIERRE00,t1.F_ARCHIVO_00 FARCHIVO00,t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00,t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00,t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00,t1.ID_TIPO_NOT_00 IDTIPONOT00,t1.CANAL_NOT_00 CANALNOT00,t1.EMAIL_NOT_00 EMAILNOT00,t1.TFNO_NOT_00 TFNONOT00,t1.IDIOMA_NOT_00 IDIOMANOT00,t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00,t1.DE_OFICIO_00 DEOFICIO00,t1.URGENCIA_00 URGENCIA00,t1.RAZON_URGENCIA_00 RAZONURGENCIA00,t1.CODIGO_SGA_00 CODIGOSGA00,t1.PRESENTA_SOL_00 PRESENTASOL00,t1.SE_OPONE_00 SEOPONE00,t1.NOMBRE_CON_00 NOMBRECON00,t1.APELLIDO1_CON_00 APELLIDO1CON00,t1.APELLIDO2_CON_00 APELLIDO2CON00,t1.AUTORIZACION_CON_00 AUTORIZACIONCON00,t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00,t1.TIPO_IDEN_CON_00 TIPOIDENCON00,t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00,t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00,t1.OBSERVACIONES_00 OBSERVACIONES00,t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00,t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00,t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00, t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00, t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00, t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00, t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00,t1.USU_MODIF_00 USUMODIF00,t1.F_ALTA_00 FALTA00,t1.F_MODIF_00 FMODIF00,t1.ES_DENEGACION_SERVICIO_00 ESDENEGACIONSERVICIO00, t1.PDTE_SOLICITAR_PADRON_00 PDTESOLICITARPADRON00,t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01,t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01,t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01,t2.NOMBRE_01 SOLNOMBRE01,t2.APELLIDO1_01 SOLAPELLIDO101,t2.APELLIDO2_01 SOLAPELLIDO201,t2.SEXO_01 SOLSEXO01,t2.F_NACIMIENTO_01 SOLFNACIMIENTO01,t2.NUMSS_01 SOLNUMSS01,t2.NUMTIS_01 SOLNUMTIS01,t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01,t2.BENEFICIARIO_01 SOLBENEFICIARIO01,t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01,t2.F_BAJA_01 SOLFBAJA01,t2.F_INICIO_01 SOLFINICIO01,t2.NUM_ABONADO_01 SOLNUMABONADO01,t2.OBSERVACIONES_01 SOLOBSERVACIONES01,t2.NO_REINTENTAR_01 SOLNOREINTENTAR01,t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01, t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01, t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01, t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01,t2.USU_MODIF_01 SOLUSUMODIF01,t2.F_ALTA_01 SOLFALTA01,t2.F_MODIF_01 SOLFMODIF01,t3.ID_PERFIL_07 PERFILESIDPERFIL07,t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07,t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07,t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07,t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07,t3.DIS_FISICA_07 PERFILESDISFISICA07,t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07,t3.ENF_MENTAL_07 PERFILESENFMENTAL07,t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07,t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07,t3.F_ALTA_07 PERFILESFALTA07,t3.USU_ALTA_07 PERFILESUSUALTA07,t6.ID_CUENTA_05 CUENTASIDCUENTA05,t6.NUM_CUENTA_05 CUENTASNUMCUENTA05,t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05,t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05,t6.F_ALTA_05 CUENTASFALTA05,t6.USU_ALTA_05 CUENTASUSUALTA05,t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05,t7.ID_ESTADO_30 ESTADOSIDESTADO30,t7.DESCRIPCION_ES_30 ESTADOSDESCES30,t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30,t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06,t8.CALLE_06 DIRECCIONESCALLE06,t8.CP_06 DIRECCIONESCP06,t8.ID_CALLE_06 DIRECCIONESIDCALLE06,t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06,t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06,t8.ID_PAIS_06 DIRECCIONESIDPAIS06,t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06,t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06,t8.LETRA_06 DIRECCIONESLETRA06,t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06,t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06,t8.PAIS_06 DIRECCIONESPAIS06,t8.PISO_06 DIRECCIONESPISO06,t8.PORTAL_06 DIRECCIONESPORTAL06,t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06,t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06, t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06,t8.F_ALTA_06 DIRECCIONESFALTA06,t8.USU_ALTA_06 DIRECCIONESUSUALTA06,t2.ID_CUENTA_01 SOLIDCUENTA01,t2.ID_PERFIL_01 SOLIDPERFIL01,t2.ID_DIRECCION_01 SOLIDDIRECCION01,t2.ID_VALORACION_01 SOLIDVALORACION01, t3.ID_PISO_07 PERFILESIDPISO07 ");
		// FROM
		// StringBuilder from = new StringBuilder("FROM EXPEDIENTES t1 ,SOLICITANTES t2
		// ,PERFILES t3 ,INFORME_SOCIAL t4 ,CONTACTOS t5 ,CUENTAS t6 ,ESTADOS t7
		// ,DIRECCIONES t8 ");
		List<String> from = new ArrayList<String>();
		from.add("EXPEDIENTES");
		from.add("SOLICITANTES");
		from.add("PERFILES");
		from.add("CUENTAS");
		from.add("ESTADOS");
		from.add("DIRECCIONES");
		// TABLAS_ALIAS
		List<String> from_alias = new ArrayList<String>();
		from_alias.add(" t1 ");
		from_alias.add(" t2 ");
		from_alias.add(" t3 ");
		from_alias.add(" t4 ");
		from_alias.add(" t5 ");
		from_alias.add(" t6 ");
		from_alias.add(" t7 ");
		from_alias.add(" t8 ");

		// JOINS TABLAS
		/*
		 * Ejemplo de como indicar joins entre las tablas de la query
		 */
		/*
		 * StringBuilder joins = new StringBuilder("");
		 * joins.append("AND T1.ID=T2.ID_T1");
		 */

		// CONDICIONES (negocio)
		/*
		 * Ejemplo de como incluir condiciones de negocio en la consulta de la jerarquía
		 */
		/*
		 * StringBuilder businessFilters = new StringBuilder(); List<Object>
		 * businessParams = new ArrayList<Object>();
		 * businessFilters.append("   AND t1.EJIE = ?  "); businessParams.add("1");
		 */

		// FILTRO
		Map<String, ?> mapaWhere = this.getWhereLikeMap(filterExpedientes, false);

		// JERARQUIA
		// Especificar la columna padre correspondiente en lugar de la generada por
		// defecto (ID_PADRE)
		query = TableManagerJerarquia.getQuery(tableRequestDto, query, mapaWhere, "IDEXPEDIENTE00", "ID_PADRE",
				"NOMBRE", from, from_alias);

		/*
		 * Ejemplo de llamada en caso de indicar joins entre tablas y condiciones de
		 * negocio
		 */
//		query = TableManagerJerarquia.getQuery(tableRequestDto, query, mapaWhere, "ID", "ID_PADRE", "NOMBRE", from, from_alias, joins, businessFilters, businessParams);

		// PAGINACION
		if (tableRequestDto != null) {
			query = TableManagerJerarquia.getPaginationQuery(tableRequestDto, query,
					ExpedientesDaoImpl.ORDER_BY_WHITE_LIST);
		}

		List<?> params = (List<?>) mapaWhere.get("params");
		List<JerarquiaDto<Expedientes>> result = this.jdbcTemplate.query(query.toString(), this.rwMapJerarquia,
				params.toArray());

		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		return result;
	}

	/**
	 * Count rows in hierarchy
	 *
	 * @param filterExpedientes Expedientes
	 * @param tableRequestDto   TableRequestDto
	 * @return Long
	 */
	@Override
	public Long findAllLikeCountJerarquia(Expedientes filterExpedientes, TableRequestDto tableRequestDto) {
		// FROM
		// StringBuilder from = new StringBuilder("FROM EXPEDIENTES t1 ,SOLICITANTES t2
		// ,PERFILES t3 ,INFORME_SOCIAL t4 ,CONTACTOS t5 ,CUENTAS t6 ,ESTADOS t7
		// ,DIRECCIONES t8 ");
		List<String> from = new ArrayList<String>();
		from.add("EXPEDIENTES");
		from.add("SOLICITANTES");
		from.add("PERFILES");
		from.add("CUENTAS");
		from.add("ESTADOS");
		from.add("DIRECCIONES");

		// TABLAS_ALIAS
		List<String> from_alias = new ArrayList<String>();
		from_alias.add(" t1 ");
		from_alias.add(" t2 ");
		from_alias.add(" t3 ");
		from_alias.add(" t4 ");
		from_alias.add(" t5 ");
		from_alias.add(" t6 ");
		from_alias.add(" t7 ");
		from_alias.add(" t8 ");

		// JOINS TABLAS
		/*
		 * Ejemplo de como indicar joins entre las tablas de la query
		 */
		/*
		 * StringBuilder joins = new StringBuilder("");
		 * joins.append("AND T1.ID=T2.ID_T1");
		 */

		// CONDICIONES (negocio)
		/*
		 * Ejemplo de como incluir condiciones de negocio en la consulta de la jerarquía
		 */
		/*
		 * StringBuilder businessFilters = new StringBuilder(); List<Object>
		 * businessParams = new ArrayList<Object>();
		 * businessFilters.append("   AND t1.EJIE = ?  "); businessParams.add("1");
		 */

		// FILTRO
		Map<String, ?> mapaWhere = this.getWhereLikeMap(filterExpedientes, false);

		// JERARQUIA
		// Especificar la columna padre correspondiente en lugar de la generada por
		// defecto (ID_PADRE)
		StringBuilder query = TableManagerJerarquia.getQueryCount(tableRequestDto, mapaWhere, "IDEXPEDIENTE00",
				"ID_PADRE", from, from_alias);

		/*
		 * Ejemplo de llamada en caso de indicar joins entre tablas y condiciones de
		 * negocio
		 */
//		StringBuilder query = TableManagerJerarquia.getQueryCount(tableRequestDto, mapaWhere, "ID", "ID_PADRE", from, from_alias, joins, businessFilters, businessParams);

		List<?> params = (List<?>) mapaWhere.get("params");
		return this.jdbcTemplate.queryForObject(query.toString(), params.toArray(), Long.class);
	}

	/**
	 * Find dependent hierarchical rows
	 *
	 * @param filterExpedientes Expedientes
	 * @param tableRequestDto   TableRequestDto
	 * @return List<TableRowDto<Expedientes>>
	 */
	@Override
	public List<TableRowDto<Expedientes>> findAllChild(Expedientes filterExpedientes, TableRequestDto tableRequestDto) {

		// FROM
		// StringBuilder from = new StringBuilder("FROM EXPEDIENTES t1 ,SOLICITANTES t2
		// ,PERFILES t3 ,INFORME_SOCIAL t4 ,CONTACTOS t5 ,CUENTAS t6 ,ESTADOS t7
		// ,DIRECCIONES t8 ");
		List<String> from = new ArrayList<String>();
		from.add("EXPEDIENTES");
		from.add("SOLICITANTES");
		from.add("PERFILES");
		from.add("CUENTAS");
		from.add("ESTADOS");
		from.add("DIRECCIONES");

		// TABLAS_ALIAS
		List<String> from_alias = new ArrayList<String>();
		from_alias.add(" t1 ");
		from_alias.add(" t2 ");
		from_alias.add(" t3 ");
		from_alias.add(" t4 ");
		from_alias.add(" t5 ");
		from_alias.add(" t6 ");
		from_alias.add(" t7 ");
		from_alias.add(" t8 ");

		// JOINS TABLAS
		/*
		 * Ejemplo de como indicar joins entre las tablas de la query
		 */
		/*
		 * StringBuilder joins = new StringBuilder("");
		 * joins.append("AND T1.ID=T2.ID_T1");
		 */

		// CONDICIONES (negocio)
		/*
		 * Ejemplo de como incluir condiciones de negocio en la consulta de la jerarquía
		 */
		/*
		 * StringBuilder businessFilters = new StringBuilder(); List<Object>
		 * businessParams = new ArrayList<Object>();
		 * businessFilters.append("   AND t1.EJIE = ?  "); businessParams.add("1");
		 */

		// FILTRO
		Map<String, ?> mapaWhere = this.getWhereLikeMap(filterExpedientes, false);

		// MULTISELECCION
		// Especificar la columna padre correspondiente en lugar de la generada por
		// defecto (ID_PADRE)
		StringBuilder query = TableManagerJerarquia.getQueryChildren(tableRequestDto, mapaWhere, "IDEXPEDIENTE00",
				"ID_PADRE", from, from_alias);

		/*
		 * Ejemplo de llamada en caso de indicar joins entre tablas y condiciones de
		 * negocio
		 */
//		StringBuilder query = TableManagerJerarquia.getQueryChildren(tableRequestDto, mapaWhere, "ID", "ID_PADRE", from, from_alias, joins, businessFilters, businessParams);

		List<?> params = (List<?>) mapaWhere.get("params");

		return this.jdbcTemplate.query(query.toString(),
				new RowNumResultSetExtractor<Expedientes>(this.rwMapPK, "IDEXPEDIENTE00"), params.toArray());
	}

	/*
	 * MÉTODOS PRIVADOS
	 */

	/**
	 * Returns a map with the needed value to create the conditions to filter by the
	 * Expedientes entity
	 *
	 * @param expedientes Expedientes Bean with the criteria values to filter by.
	 * @return Map created with two keys key query stores the sql query syntax key
	 *         params stores the parameter values to be used in the condition
	 *         sentence.
	 */
	// CHECKSTYLE:OFF CyclomaticComplexity - Generación de código de UDA
	private Map<String, ?> getWhereMap(Expedientes expedientes) {

		StringBuilder where = new StringBuilder(ExpedientesDaoImpl.STRING_BUILDER_INIT);
		List<Object> params = new ArrayList<Object>();

		if (expedientes != null && expedientes.getIdExpediente00() != null) {
			where.append(" AND t1.ID_EXPEDIENTE_00 = ?");
			params.add(expedientes.getIdExpediente00());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getIdSolicitante01() != null) {
			where.append(" AND t2.ID_SOLICITANTE_01 = ?");
			params.add(expedientes.getSolicitantes().getIdSolicitante01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getCuentas() != null
				&& expedientes.getSolicitantes().getCuentas().getIdCuenta05() != null) {
			where.append(" AND t2.ID_CUENTA_01 = ?");
			params.add(expedientes.getSolicitantes().getCuentas().getIdCuenta05());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getPerfiles() != null
				&& expedientes.getSolicitantes().getPerfiles().getIdPerfil07() != null) {
			where.append(" AND t2.ID_PERFIL_01 = ?");
			params.add(expedientes.getSolicitantes().getPerfiles().getIdPerfil07());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getDirecciones() != null
				&& expedientes.getSolicitantes().getDirecciones().getIdDireccion06() != null) {
			where.append(" AND t2.ID_DIRECCION_01 = ?");
			params.add(expedientes.getSolicitantes().getDirecciones().getIdDireccion06());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getTipoIdentificador01() != null) {
			where.append(" AND t2.TIPO_IDENTIFICADOR_01 = ?");
			params.add(expedientes.getSolicitantes().getTipoIdentificador01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getIdentificador01() != null) {
			where.append(" AND UPPER(t2.IDENTIFICADOR_01) = UPPER(?)");
			params.add(expedientes.getSolicitantes().getIdentificador01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getNombre01() != null) {
			where.append(" AND t2.NOMBRE_01 = ?");
			params.add(expedientes.getSolicitantes().getNombre01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getApellido101() != null) {
			where.append(" AND t2.APELLIDO1_01 = ?");
			params.add(expedientes.getSolicitantes().getApellido101());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getApellido201() != null) {
			where.append(" AND t2.APELLIDO2_01 = ?");
			params.add(expedientes.getSolicitantes().getApellido201());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getSexo01() != null) {
			where.append(" AND t2.SEXO_01 = ?");
			params.add(expedientes.getSolicitantes().getSexo01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfNacimiento01() != null) {
			where.append(" AND t2.F_NACIMIENTO_01 = ?");
			params.add(expedientes.getSolicitantes().getfNacimiento01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getNumss01() != null) {
			where.append(" AND t2.NUMSS_01 = ?");
			params.add(expedientes.getSolicitantes().getNumss01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getNumtis01() != null) {
			where.append(" AND t2.NUMTIS_01 = ?");
			params.add(expedientes.getSolicitantes().getNumtis01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfAltaTeleasistencia01() != null) {
			where.append(" AND t2.F_ALTA_TELEASISTENCIA_01 = ?");
			params.add(expedientes.getSolicitantes().getfAltaTeleasistencia01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getBeneficiario01() != null) {
			where.append(" AND t2.BENEFICIARIO_01 = ?");
			params.add(expedientes.getSolicitantes().getBeneficiario01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfBeneficiario01() != null) {
			where.append(" AND t2.F_BENEFICIARIO_01 = ?");
			params.add(expedientes.getSolicitantes().getfBeneficiario01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfBaja01() != null) {
			where.append(" AND t2.F_BAJA_01 = ?");
			params.add(expedientes.getSolicitantes().getfBaja01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfInicio01() != null) {
			where.append(" AND t2.F_INICIO_01 = ?");
			params.add(expedientes.getSolicitantes().getfInicio01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getNumAbonado01() != null) {
			where.append(" AND t2.NUM_ABONADO_01 = ?");
			params.add(expedientes.getSolicitantes().getNumAbonado01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getObservaciones01() != null) {
			where.append(" AND t2.OBSERVACIONES_01 = ?");
			params.add(expedientes.getSolicitantes().getObservaciones01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getNoReintentar01() != null) {
			where.append(" AND t2.NO_REINTENTAR_01 = ?");
			params.add(expedientes.getSolicitantes().getNoReintentar01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getIdiomaServicio01() != null) {
			where.append(" AND t2.IDIOMA_SERVICIO_01 = ?");
			params.add(expedientes.getSolicitantes().getIdiomaServicio01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getIdiomaSolicitante01() != null) {
			where.append(" AND t2.IDIOMA_SOLICITANTE_01 = ?");
			params.add(expedientes.getSolicitantes().getIdiomaSolicitante01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getOtroIdioma01() != null) {
			where.append(" AND t2.OTRO_IDIOMA_01 = ?");
			params.add(expedientes.getSolicitantes().getOtroIdioma01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getTlfnoServicio01() != null) {
			where.append(" AND t2.TLFNO_SERVICIO_01 = ?");
			params.add(expedientes.getSolicitantes().getTlfnoServicio01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getTlfnoMovil01() != null) {
			where.append(" AND t2.TLFNO_MOVIL_01 = ?");
			params.add(expedientes.getSolicitantes().getTlfnoMovil01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getEmail01() != null) {
			where.append(" AND t2.EMAIL_01 = ?");
			params.add(expedientes.getSolicitantes().getEmail01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getTipoBeneficiario01() != null) {
			where.append(" AND t2.TIPO_BENEFICIARIO_01 = ?");
			params.add(expedientes.getSolicitantes().getTipoBeneficiario01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfRetirada01() != null) {
			where.append(" AND t2.F_RETIRADA_01 = ?");
			params.add(expedientes.getSolicitantes().getfRetirada01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getMantenerInst01() != null) {
			where.append(" AND t2.MANTENER_INST_01 = ?");
			params.add(expedientes.getSolicitantes().getMantenerInst01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getInstalado01() != null) {
			where.append(" AND t2.INSTALADO_01 = ?");
			params.add(expedientes.getSolicitantes().getInstalado01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getIdMotivoBaja01() != null) {
			where.append(" AND t2.ID_MOTIVO_BAJA_01 = ?");
			params.add(expedientes.getSolicitantes().getIdMotivoBaja01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getUsuAlta01() != null) {
			where.append(" AND t2.USU_ALTA_01 = ?");
			params.add(expedientes.getSolicitantes().getUsuAlta01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getUsuModif01() != null) {
			where.append(" AND t2.USU_MODIF_01 = ?");
			params.add(expedientes.getSolicitantes().getUsuModif01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfAlta01() != null) {
			where.append(" AND t2.F_ALTA_01 = ?");
			params.add(expedientes.getSolicitantes().getfAlta01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfModif01() != null) {
			where.append(" AND t2.F_MODIF_01 = ?");
			params.add(expedientes.getSolicitantes().getfModif01());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getIdPerfil07() != null) {
			where.append(" AND t3.ID_PERFIL_07 = ?");
			params.add(expedientes.getPerfiles().getIdPerfil07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getPisosTutelados() != null
				&& expedientes.getPerfiles().getPisosTutelados().getIdPiso32() != null) {
			where.append(" AND t3.ID_PISO_07 = ?");
			params.add(expedientes.getPerfiles().getPisosTutelados().getIdPiso32());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getMayor65Dep07() != null) {
			where.append(" AND t3.MAYOR_65_DEP_07 = ?");
			params.add(expedientes.getPerfiles().getMayor65Dep07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getMayor65RiesgoDep07() != null) {
			where.append(" AND t3.MAYOR_65_RIESGO_DEP_07 = ?");
			params.add(expedientes.getPerfiles().getMayor65RiesgoDep07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getMayor75Sola07() != null) {
			where.append(" AND t3.MAYOR_75_SOLA_07 = ?");
			params.add(expedientes.getPerfiles().getMayor75Sola07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getDisIntelectual07() != null) {
			where.append(" AND t3.DIS_INTELECTUAL_07 = ?");
			params.add(expedientes.getPerfiles().getDisIntelectual07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getDisFisica07() != null) {
			where.append(" AND t3.DIS_FISICA_07 = ?");
			params.add(expedientes.getPerfiles().getDisFisica07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getDisSensorial07() != null) {
			where.append(" AND t3.DIS_SENSORIAL_07 = ?");
			params.add(expedientes.getPerfiles().getDisSensorial07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getEnfMental07() != null) {
			where.append(" AND t3.ENF_MENTAL_07 = ?");
			params.add(expedientes.getPerfiles().getEnfMental07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getRiesgoAislamiento07() != null) {
			where.append(" AND t3.RIESGO_AISLAMIENTO_07 = ?");
			params.add(expedientes.getPerfiles().getRiesgoAislamiento07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getPisoTutelado07() != null) {
			where.append(" AND t3.PISO_TUTELADO_07 = ?");
			params.add(expedientes.getPerfiles().getPisoTutelado07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getfAlta07() != null) {
			where.append(" AND t3.F_ALTA_07 = ?");
			params.add(expedientes.getPerfiles().getfAlta07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getUsuAlta07() != null) {
			where.append(" AND t3.USU_ALTA_07 = ?");
			params.add(expedientes.getPerfiles().getUsuAlta07());
		}

		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getIdCuenta05() != null) {
			where.append(" AND t6.ID_CUENTA_05 = ?");
			params.add(expedientes.getCuentas().getIdCuenta05());
		}
		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getNumCuenta05() != null) {
			where.append(" AND t6.NUM_CUENTA_05 = ?");
			params.add(expedientes.getCuentas().getNumCuenta05());
		}
		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getCodTipoIdenTitular05() != null) {
			where.append(" AND t6.COD_TIPO_IDEN_TITULAR_05 = ?");
			params.add(expedientes.getCuentas().getCodTipoIdenTitular05());
		}
		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getIdenTitular05() != null) {
			where.append(" AND t6.IDEN_TITULAR_05 = ?");
			params.add(expedientes.getCuentas().getIdenTitular05());
		}

		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getIdSolicitante05() != null) {
			where.append(" AND t6.ID_SOLICITANTE_05 = ?");
			params.add(expedientes.getCuentas().getIdSolicitante05());
		}
		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getUsuHistorico05() != null) {
			where.append(" AND t6.USU_HISTORICO_05 = ?");
			params.add(expedientes.getCuentas().getUsuHistorico05());
		}
		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getfHistorico05() != null) {
			where.append(" AND t6.F_HISTORICO_05 = ?");
			params.add(expedientes.getCuentas().getfHistorico05());
		}

		if (expedientes != null && expedientes.getCuentas() != null && expedientes.getCuentas().getfAlta05() != null) {
			where.append(" AND t6.F_ALTA_05 = ?");
			params.add(expedientes.getCuentas().getfAlta05());
		}
		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getUsuAlta05() != null) {
			where.append(" AND t6.USU_ALTA_05 = ?");
			params.add(expedientes.getCuentas().getUsuAlta05());
		}
		if (expedientes != null && expedientes.getEstados() != null
				&& expedientes.getEstados().getIdEstado30() != null) {
			where.append(" AND t7.ID_ESTADO_30 = ?");
			params.add(expedientes.getEstados().getIdEstado30());
		}
		if (expedientes != null && expedientes.getEstados() != null
				&& expedientes.getEstados().getDescripcionEs30() != null) {
			where.append(" AND t7.DESCRIPCION_ES_30 = ?");
			params.add(expedientes.getEstados().getDescripcionEs30());
		}
		if (expedientes != null && expedientes.getEstados() != null
				&& expedientes.getEstados().getDescripcionEu30() != null) {
			where.append(" AND t7.DESCRIPCION_EU_30 = ?");
			params.add(expedientes.getEstados().getDescripcionEu30());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdDireccion06() != null) {
			where.append(" AND t8.ID_DIRECCION_06 = ?");
			params.add(expedientes.getDirecciones().getIdDireccion06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getCalle06() != null) {
			where.append(" AND t8.CALLE_06 = ?");
			params.add(expedientes.getDirecciones().getCalle06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getCp06() != null) {
			where.append(" AND t8.CP_06 = ?");
			params.add(expedientes.getDirecciones().getCp06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdCalle06() != null) {
			where.append(" AND t8.ID_CALLE_06 = ?");
			params.add(expedientes.getDirecciones().getIdCalle06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdLocalidad06() != null) {
			where.append(" AND t8.ID_LOCALIDAD_06 = ?");
			params.add(expedientes.getDirecciones().getIdLocalidad06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdMunicipio06() != null) {
			where.append(" AND t8.ID_MUNICIPIO_06 = ?");
			params.add(expedientes.getDirecciones().getIdMunicipio06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdPais06() != null) {
			where.append(" AND t8.ID_PAIS_06 = ?");
			params.add(expedientes.getDirecciones().getIdPais06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdPortal06() != null) {
			where.append(" AND t8.ID_PORTAL_06 = ?");
			params.add(expedientes.getDirecciones().getIdPortal06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdProvincia06() != null) {
			where.append(" AND t8.ID_PROVINCIA_06 = ?");
			params.add(expedientes.getDirecciones().getIdProvincia06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getLetra06() != null) {
			where.append(" AND t8.LETRA_06 = ?");
			params.add(expedientes.getDirecciones().getLetra06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getLocalidad06() != null) {
			where.append(" AND t8.LOCALIDAD_06 = ?");
			params.add(expedientes.getDirecciones().getLocalidad06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getMunicipio06() != null) {
			where.append(" AND t8.MUNICIPIO_06 = ?");
			params.add(expedientes.getDirecciones().getMunicipio06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getPais06() != null) {
			where.append(" AND t8.PAIS_06 = ?");
			params.add(expedientes.getDirecciones().getPais06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getPiso06() != null) {
			where.append(" AND t8.PISO_06 = ?");
			params.add(expedientes.getDirecciones().getPiso06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getPortal06() != null) {
			where.append(" AND t8.PORTAL_06 = ?");
			params.add(expedientes.getDirecciones().getPortal06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getEscalera06() != null) {
			where.append(" AND t8.ESCALERA_06 = ?");
			params.add(expedientes.getDirecciones().getEscalera06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getProvincia06() != null) {
			where.append(" AND t8.PROVINCIA_06 = ?");
			params.add(expedientes.getDirecciones().getProvincia06());
		}

		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdSolicitante06() != null) {
			where.append(" AND t8.ID_SOLICITANTE_06 = ?");
			params.add(expedientes.getDirecciones().getIdSolicitante06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getUsuHistorico06() != null) {
			where.append(" AND t8.USU_HISTORICO_06 = ?");
			params.add(expedientes.getDirecciones().getUsuHistorico06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getfHistorico06() != null) {
			where.append(" AND t8.F_HISTORICO_06 = ?");
			params.add(expedientes.getDirecciones().getfHistorico06());
		}

		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getfAlta06() != null) {
			where.append(" AND t8.F_ALTA_06 = ?");
			params.add(expedientes.getDirecciones().getfAlta06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getUsuAlta06() != null) {
			where.append(" AND t8.USU_ALTA_06 = ?");
			params.add(expedientes.getDirecciones().getUsuAlta06());
		}
		if (expedientes != null && expedientes.getFolderId00() != null) {
			where.append(" AND t1.FOLDER_ID_00 = ?");
			params.add(expedientes.getFolderId00());
		}
		if (expedientes != null && expedientes.getfRegistro00() != null) {
			where.append(" AND t1.F_REGISTRO_00 = ?");
			params.add(expedientes.getfRegistro00());
		}
		if (expedientes != null && expedientes.getNumRegistro00() != null) {
			where.append(" AND t1.NUM_REGISTRO_00 = ?");
			params.add(expedientes.getNumRegistro00());
		}
		if (expedientes != null && expedientes.getfRegistroOtro00() != null) {
			where.append(" AND t1.F_REGISTRO_OTRO_00 = ?");
			params.add(expedientes.getfRegistroOtro00());
		}
		if (expedientes != null && expedientes.getNumRegistroOtro00() != null) {
			where.append(" AND t1.NUM_REGISTRO_OTRO_00 = ?");
			params.add(expedientes.getNumRegistroOtro00());
		}
		if (expedientes != null && expedientes.getfRecepcion00() != null) {
			where.append(" AND t1.F_RECEPCION_00 = ?");
			params.add(expedientes.getfRecepcion00());
		}
		if (expedientes != null && expedientes.getfAperturaExp00() != null) {
			where.append(" AND t1.F_APERTURA_EXP_00 = ?");
			params.add(expedientes.getfAperturaExp00());
		}
		if (expedientes != null && expedientes.getfCierre00() != null) {
			where.append(" AND t1.F_CIERRE_00 = ?");
			params.add(expedientes.getfCierre00());
		}
		if (expedientes != null && expedientes.getfArchivo00() != null) {
			where.append(" AND t1.F_ARCHIVO_00 = ?");
			params.add(expedientes.getfArchivo00());
		}
		if (expedientes != null && expedientes.getfDesistimiento00() != null) {
			where.append(" AND t1.F_DESISTIMIENTO_00 = ?");
			params.add(expedientes.getfDesistimiento00());
		}
		if (expedientes != null && expedientes.getfResolDesis00() != null) {
			where.append(" AND t1.F_RESOL_DESIS_00 = ?");
			params.add(expedientes.getfResolDesis00());
		}
		if (expedientes != null && expedientes.getIdTipoEntrada00() != null) {
			where.append(" AND t1.ID_TIPO_ENTRADA_00 = ?");
			params.add(expedientes.getIdTipoEntrada00());
		}
		if (expedientes != null && expedientes.getNumExpediente00() != null) {
			where.append(" AND t1.NUM_EXPEDIENTE_00 = ?");
			params.add(expedientes.getNumExpediente00());
		}
		if (expedientes != null && expedientes.getIdTipoNot00() != null) {
			where.append(" AND t1.ID_TIPO_NOT_00 = ?");
			params.add(expedientes.getIdTipoNot00());
		}
		if (expedientes != null && expedientes.getCanalNot00() != null) {
			where.append(" AND t1.CANAL_NOT_00 = ?");
			params.add(expedientes.getCanalNot00());
		}
		if (expedientes != null && expedientes.getEmailNot00() != null) {
			where.append(" AND t1.EMAIL_NOT_00 = ?");
			params.add(expedientes.getEmailNot00());
		}
		if (expedientes != null && expedientes.getTfnoNot00() != null) {
			where.append(" AND t1.TFNO_NOT_00 = ?");
			params.add(expedientes.getTfnoNot00());
		}
		if (expedientes != null && expedientes.getIdiomaNot00() != null) {
			where.append(" AND t1.IDIOMA_NOT_00 = ?");
			params.add(expedientes.getIdiomaNot00());
		}
		if (expedientes != null && expedientes.getIdProcedimiento00() != null) {
			where.append(" AND t1.ID_PROCEDIMIENTO_00 LIKE ? ESCAPE '\\'");
			params.add("%" + expedientes.getIdProcedimiento00());
		}
		if (expedientes != null && expedientes.getDeOficio00() != null) {
			where.append(" AND t1.DE_OFICIO_00 = ?");
			params.add(expedientes.getDeOficio00());
		}
		if (expedientes != null && expedientes.getUrgencia00() != null) {
			where.append(" AND t1.URGENCIA_00 = ?");
			params.add(expedientes.getUrgencia00());
		}
		if (expedientes != null && expedientes.getRazonUrgencia00() != null) {
			where.append(" AND t1.RAZON_URGENCIA_00 = ?");
			params.add(expedientes.getRazonUrgencia00());
		}
		if (expedientes != null && expedientes.getCodigoSga00() != null) {
			where.append(" AND t1.CODIGO_SGA_00 = ?");
			params.add(expedientes.getCodigoSga00());
		}
		if (expedientes != null && expedientes.getPresentaSol00() != null) {
			where.append(" AND t1.PRESENTA_SOL_00 = ?");
			params.add(expedientes.getPresentaSol00());
		}
		if (expedientes != null && expedientes.getSeOpone00() != null) {
			where.append(" AND t1.SE_OPONE_00 = ?");
			params.add(expedientes.getSeOpone00());
		}
		if (expedientes != null && expedientes.getNombreCon00() != null) {
			where.append(" AND t1.NOMBRE_CON_00 = ?");
			params.add(expedientes.getNombreCon00());
		}
		if (expedientes != null && expedientes.getApellido1Con00() != null) {
			where.append(" AND t1.APELLIDO1_CON_00 = ?");
			params.add(expedientes.getApellido1Con00());
		}
		if (expedientes != null && expedientes.getApellido2Con00() != null) {
			where.append(" AND t1.APELLIDO2_CON_00 = ?");
			params.add(expedientes.getApellido2Con00());
		}
		if (expedientes != null && expedientes.getAutorizacionCon00() != null) {
			where.append(" AND t1.AUTORIZACION_CON_00 = ?");
			params.add(expedientes.getAutorizacionCon00());
		}
		if (expedientes != null && expedientes.getIdentificadorCon00() != null) {
			where.append(" AND UPPER(t1.IDENTIFICADOR_CON_00) = UPPER(?)");
			params.add(expedientes.getIdentificadorCon00());
		}
		if (expedientes != null && expedientes.getTipoIdenCon00() != null) {
			where.append(" AND t1.TIPO_IDEN_CON_00 = ?");
			params.add(expedientes.getTipoIdenCon00());
		}
		if (expedientes != null && expedientes.getExencionSol00() != null) {
			where.append(" AND t1.EXENCION_SOL_00 = ?");
			params.add(expedientes.getExencionSol00());
		}
		if (expedientes != null && expedientes.getExencionRes00() != null) {
			where.append(" AND t1.EXENCION_RES_00 = ?");
			params.add(expedientes.getExencionRes00());
		}
		if (expedientes != null && expedientes.getfBaja00() != null) {
			where.append(" AND t1.F_BAJA_00 = ?");
			params.add(expedientes.getfBaja00());
		}
		if (expedientes != null && expedientes.getIdMotivoBaja00() != null) {
			where.append(" AND t1.ID_MOTIVO_BAJA_00 = ?");
			params.add(expedientes.getIdMotivoBaja00());
		}
		if (expedientes != null && expedientes.getObservaciones00() != null) {
			where.append(" AND t1.OBSERVACIONES_00 = ?");
			params.add(expedientes.getObservaciones00());
		}
		if (expedientes != null && expedientes.getExisteInstalacion00() != null) {
			where.append(" AND t1.EXISTE_INSTALACION_00 = ?");
			params.add(expedientes.getExisteInstalacion00());
		}
		if (expedientes != null && expedientes.getErrorExpediente00() != null) {
			where.append(" AND t1.ERROR_EXPEDIENTE_00 = ?");
			params.add(expedientes.getErrorExpediente00());
		}
		if (expedientes != null && expedientes.getIdiomaServicio00() != null) {
			where.append(" AND t1.IDIOMA_SERVICIO_00 = ?");
			params.add(expedientes.getIdiomaServicio00());
		}
		if (expedientes != null && expedientes.getTecnicoExpediente00() != null) {
			where.append(" AND t1.TECNICO_EXPEDIENTE_00 = ?");
			params.add(expedientes.getTecnicoExpediente00());
		}

		if (expedientes != null && expedientes.getTipoRep00() != null) {
			where.append(" AND t1.TIPO_REP_00 = ?");
			params.add(expedientes.getTipoRep00());
		}
		if (expedientes != null && expedientes.getTipoIdentificadorRep00() != null) {
			where.append(" AND t1.TIPO_IDENTIFICADOR_REP_00 = ?");
			params.add(expedientes.getTipoIdentificadorRep00());
		}
		if (expedientes != null && expedientes.getIdentificadorRep00() != null) {
			where.append(" AND UPPER(t1.IDENTIFICADOR_REP_00) = UPPER(?)");
			params.add(expedientes.getIdentificadorRep00());
		}
		if (expedientes != null && expedientes.getNombreRep00() != null) {
			where.append(" AND t1.NOMBRE_REP_00 = ?");
			params.add(expedientes.getNombreRep00());
		}
		if (expedientes != null && expedientes.getApellido1Rep00() != null) {
			where.append(" AND t1.APELLIDO1_REP_00 = ?");
			params.add(expedientes.getApellido1Rep00());
		}
		if (expedientes != null && expedientes.getApellido2Rep00() != null) {
			where.append(" AND t1.APELLIDO2_REP_00 = ?");
			params.add(expedientes.getApellido2Rep00());
		}
		if (expedientes != null && expedientes.getSexoRep00() != null) {
			where.append(" AND t1.SEXO_REP_00 = ?");
			params.add(expedientes.getSexoRep00());
		}
		if (expedientes != null && expedientes.getRazonSocialRep00() != null) {
			where.append(" AND t1.RAZON_SOCIAL_REP_00 = ?");
			params.add(expedientes.getRazonSocialRep00());
		}
		if (expedientes != null && expedientes.getContactoInstRep00() != null) {
			where.append(" AND t1.CONTACTO_INST_REP_00 = ?");
			params.add(expedientes.getContactoInstRep00());
		}
		if (expedientes != null && expedientes.getIdDireccionNotif00() != null) {
			where.append(" AND t1.ID_DIRECCION_NOTIF_00 = ?");
			params.add(expedientes.getIdDireccionNotif00());
		}

		if (expedientes != null && expedientes.getAutorizaConsulta00() != null) {
			where.append(" AND t1.AUTORIZA_CONSULTA_00 = ?");
			params.add(expedientes.getAutorizaConsulta00());
		}
		if (expedientes != null && expedientes.getAutorizaDarInfo00() != null) {
			where.append(" AND t1.AUTORIZA_DAR_INFO_00 = ?");
			params.add(expedientes.getAutorizaDarInfo00());
		}
		if (expedientes != null && expedientes.getExoneracionRes00() != null) {
			where.append(" AND t1.EXONERACION_RES_00 = ?");
			params.add(expedientes.getExoneracionRes00());
		}
		if (expedientes != null && expedientes.getTipoDesis00() != null) {
			where.append(" AND t1.TIPO_DESIS_00 = ?");
			params.add(expedientes.getTipoDesis00());
		}
		if (expedientes != null && expedientes.getEstadoNotificacion00() != null) {
			where.append(" AND t1.ESTADO_NOTIFICACION_00 = ?");
			params.add(expedientes.getEstadoNotificacion00());
		}
		if (expedientes != null && expedientes.getResultadoEstudio00() != null) {
			where.append(" AND t1.RESULTADO_ESTUDIO_00 = ?");
			params.add(expedientes.getResultadoEstudio00());
		}
		if (expedientes != null && expedientes.getfResolucion00() != null) {
			where.append(" AND t1.F_RESOLUCION_00 = ?");
			params.add(expedientes.getfResolucion00());
		}
		if (expedientes != null && expedientes.getPrecioFinal00() != null) {
			where.append(" AND t1.PRECIO_FINAL_00 = ?");
			params.add(expedientes.getPrecioFinal00());
		}
		if (expedientes != null && expedientes.getDocumentacion00() != null) {
			where.append(" AND t1.DOCUMENTACION_00 = ?");
			params.add(expedientes.getDocumentacion00());
		}
		if (expedientes != null && expedientes.getOrigenOficio00() != null) {
			where.append(" AND t1.ORIGEN_OFICIO_00 = ?");
			params.add(expedientes.getOrigenOficio00());
		}
		if (expedientes != null && expedientes.getUsuAlta00() != null) {
			where.append(" AND t1.USU_ALTA_00 = ?");
			params.add(expedientes.getUsuAlta00());
		}
		if (expedientes != null && expedientes.getUsuModif00() != null) {
			where.append(" AND t1.USU_MODIF_00 = ?");
			params.add(expedientes.getUsuModif00());
		}
		if (expedientes != null && expedientes.getfAlta00() != null) {
			where.append(" AND t1.F_ALTA_00 = ?");
			params.add(expedientes.getfAlta00());
		}
		if (expedientes != null && expedientes.getfModif00() != null) {
			where.append(" AND t1.F_MODIF_00 = ?");
			params.add(expedientes.getfModif00());
		}

		if (expedientes != null && expedientes.getNoCerrado() != null && expedientes.getNoCerrado()) {
			where.append(" AND t1.ID_ESTADO_00 NOT IN (");
			where.append(EstadosExpedienteEnum.PEND_COMPLETAR.getId()).append(", ");
			where.append(EstadosExpedienteEnum.PEND_APERTURA.getId()).append(", ");
			where.append(EstadosExpedienteEnum.CERRADO.getId()).append(", ");
			where.append(EstadosExpedienteEnum.ARCHIVADO.getId()).append(", ");
			where.append(EstadosExpedienteEnum.PEND_ARCHIVAR.getId()).append(", ");
			where.append(EstadosExpedienteEnum.TRAMITACION.getId());
			where.append(")");
		}

		Map<String, Object> mapWhere = new HashMap<String, Object>();
		mapWhere.put("query", where);
		mapWhere.put("params", params);

		return mapWhere;
	}
	// CHECKSTYLE:ON CyclomaticComplexity - Generación de código de UDA

	/**
	 * Returns a map with the needed value to create the conditions to filter by the
	 * Expedientes entity
	 *
	 * @param expedientes Expedientes Bean with the criteria values to filter by.
	 * @param startsWith  Boolean
	 * @return Map created with two keys key query stores the sql query syntax key
	 *         params stores the parameter values to be used in the condition
	 *         sentence.
	 */
	// CHECKSTYLE:OFF CyclomaticComplexity - Generación de código de UDA
	private Map<String, Object> getWhereLikeMap(Expedientes expedientes, Boolean startsWith) {

		StringBuilder where = new StringBuilder(ExpedientesDaoImpl.STRING_BUILDER_INIT);
		List<Object> params = new ArrayList<Object>();

		if (expedientes != null && expedientes.getIdExpediente00() != null) {
			where.append(" AND t1.ID_EXPEDIENTE_00 = ?");
			params.add(expedientes.getIdExpediente00());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getIdSolicitante01() != null) {
			where.append(" AND t2.ID_SOLICITANTE_01 = ?");
			params.add(expedientes.getSolicitantes().getIdSolicitante01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getCuentas() != null
				&& expedientes.getSolicitantes().getCuentas().getIdCuenta05() != null) {
			where.append(" AND t2.ID_CUENTA_01 = ?");
			params.add(expedientes.getSolicitantes().getCuentas().getIdCuenta05());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getPerfiles() != null
				&& expedientes.getSolicitantes().getPerfiles().getIdPerfil07() != null) {
			where.append(" AND t2.ID_PERFIL_01 = ?");
			params.add(expedientes.getSolicitantes().getPerfiles().getIdPerfil07());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getDirecciones() != null
				&& expedientes.getSolicitantes().getDirecciones().getIdDireccion06() != null) {
			where.append(" AND t2.ID_DIRECCION_01 = ?");
			params.add(expedientes.getSolicitantes().getDirecciones().getIdDireccion06());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getTipoIdentificador01() != null) {
			where.append(" AND UPPER(t2.TIPO_IDENTIFICADOR_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getTipoIdentificador01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getTipoIdentificador01().toUpperCase() + "%");
			}
			where.append(" AND t2.TIPO_IDENTIFICADOR_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getIdentificador01() != null) {
			where.append(" AND UPPER(t2.IDENTIFICADOR_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getIdentificador01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getIdentificador01().toUpperCase() + "%");
			}
			where.append(" AND t2.IDENTIFICADOR_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getNombre01() != null) {
			where.append(" AND UPPER(t2.NOMBRE_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getNombre01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getNombre01().toUpperCase() + "%");
			}
			where.append(" AND t2.NOMBRE_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getApellido101() != null) {
			where.append(" AND UPPER(t2.APELLIDO1_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getApellido101().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getApellido101().toUpperCase() + "%");
			}
			where.append(" AND t2.APELLIDO1_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getApellido201() != null) {
			where.append(" AND UPPER(t2.APELLIDO2_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getApellido201().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getApellido201().toUpperCase() + "%");
			}
			where.append(" AND t2.APELLIDO2_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getSexo01() != null) {
			where.append(" AND UPPER(t2.SEXO_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getSexo01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getSexo01().toUpperCase() + "%");
			}
			where.append(" AND t2.SEXO_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfNacimiento01() != null) {
			where.append(" AND t2.F_NACIMIENTO_01 = ?");
			params.add(expedientes.getSolicitantes().getfNacimiento01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getNumss01() != null) {
			where.append(" AND UPPER(t2.NUMSS_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getNumss01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getNumss01().toUpperCase() + "%");
			}
			where.append(" AND t2.NUMSS_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getNumtis01() != null) {
			where.append(" AND UPPER(t2.NUMTIS_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getNumtis01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getNumtis01().toUpperCase() + "%");
			}
			where.append(" AND t2.NUMTIS_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfAltaTeleasistencia01() != null) {
			where.append(" AND t2.F_ALTA_TELEASISTENCIA_01 = ?");
			params.add(expedientes.getSolicitantes().getfAltaTeleasistencia01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getBeneficiario01() != null) {
			where.append(" AND t2.BENEFICIARIO_01 = ?");
			params.add(expedientes.getSolicitantes().getBeneficiario01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfBeneficiario01() != null) {
			where.append(" AND t2.F_BENEFICIARIO_01 = ?");
			params.add(expedientes.getSolicitantes().getfBeneficiario01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfBaja01() != null) {
			where.append(" AND t2.F_BAJA_01 = ?");
			params.add(expedientes.getSolicitantes().getfBaja01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfInicio01() != null) {
			where.append(" AND t2.F_INICIO_01 = ?");
			params.add(expedientes.getSolicitantes().getfInicio01());
		}

		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getNumAbonado01() != null) {
			where.append(" AND UPPER(t2.NUM_ABONADO_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getNumAbonado01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getNumAbonado01().toUpperCase() + "%");
			}
			where.append(" AND t2.NUM_ABONADO_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getObservaciones01() != null) {
			where.append(" AND UPPER(t2.OBSERVACIONES_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getObservaciones01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getObservaciones01().toUpperCase() + "%");
			}
			where.append(" AND t2.OBSERVACIONES_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getNoReintentar01() != null) {
			where.append(" AND t2.NO_REINTENTAR_01 = ?");
			params.add(expedientes.getSolicitantes().getNoReintentar01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getIdiomaServicio01() != null) {
			where.append(" AND t2.IDIOMA_SERVICIO_01 = ?");
			params.add(expedientes.getSolicitantes().getIdiomaServicio01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getIdiomaSolicitante01() != null) {
			where.append(" AND t2.IDIOMA_SOLICITANTE_01 = ?");
			params.add(expedientes.getSolicitantes().getIdiomaSolicitante01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getOtroIdioma01() != null) {
			where.append(" AND UPPER(t2.OTRO_IDIOMA_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getOtroIdioma01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getOtroIdioma01().toUpperCase() + "%");
			}
			where.append(" AND t2.OTRO_IDIOMA_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getTlfnoServicio01() != null) {
			where.append(" AND UPPER(t2.TLFNO_SERVICIO_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getTlfnoServicio01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getTlfnoServicio01().toUpperCase() + "%");
			}
			where.append(" AND t2.TLFNO_SERVICIO_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getTlfnoMovil01() != null) {
			where.append(" AND UPPER(t2.TLFNO_MOVIL_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getTlfnoMovil01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getTlfnoMovil01().toUpperCase() + "%");
			}
			where.append(" AND t2.TLFNO_MOVIL_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getEmail01() != null) {
			where.append(" AND UPPER(t2.EMAIL_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getEmail01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getEmail01().toUpperCase() + "%");
			}
			where.append(" AND t2.EMAIL_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getTipoBeneficiario01() != null) {
			where.append(" AND t2.TIPO_BENEFICIARIO_01 = ?");
			params.add(expedientes.getSolicitantes().getTipoBeneficiario01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfRetirada01() != null) {
			where.append(" AND t2.F_RETIRADA_01 = ?");
			params.add(expedientes.getSolicitantes().getfRetirada01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getMantenerInst01() != null) {
			where.append(" AND t2.MANTENER_INST_01 = ?");
			params.add(expedientes.getSolicitantes().getMantenerInst01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getInstalado01() != null) {
			where.append(" AND t2.INSTALADO_01 = ?");
			params.add(expedientes.getSolicitantes().getInstalado01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getIdMotivoBaja01() != null) {
			where.append(" AND t2.ID_MOTIVO_BAJA_01 = ?");
			params.add(expedientes.getSolicitantes().getIdMotivoBaja01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getUsuAlta01() != null) {
			where.append(" AND UPPER(t2.USU_ALTA_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getUsuAlta01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getUsuAlta01().toUpperCase() + "%");
			}
			where.append(" AND t2.USU_ALTA_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getUsuModif01() != null) {
			where.append(" AND UPPER(t2.USU_MODIF_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getUsuModif01().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getUsuModif01().toUpperCase() + "%");
			}
			where.append(" AND t2.USU_MODIF_01 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfAlta01() != null) {
			where.append(" AND t2.F_ALTA_01 = ?");
			params.add(expedientes.getSolicitantes().getfAlta01());
		}
		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getfModif01() != null) {
			where.append(" AND t2.F_MODIF_01 = ?");
			params.add(expedientes.getSolicitantes().getfModif01());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getIdPerfil07() != null) {
			where.append(" AND t3.ID_PERFIL_07 = ?");
			params.add(expedientes.getPerfiles().getIdPerfil07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getPisosTutelados() != null
				&& expedientes.getPerfiles().getPisosTutelados().getIdPiso32() != null) {
			where.append(" AND t3.ID_PISO_07 = ?");
			params.add(expedientes.getPerfiles().getPisosTutelados().getIdPiso32());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getMayor65Dep07() != null) {
			where.append(" AND t3.MAYOR_65_DEP_07 = ?");
			params.add(expedientes.getPerfiles().getMayor65Dep07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getMayor65RiesgoDep07() != null) {
			where.append(" AND t3.MAYOR_65_RIESGO_DEP_07 = ?");
			params.add(expedientes.getPerfiles().getMayor65RiesgoDep07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getMayor75Sola07() != null) {
			where.append(" AND t3.MAYOR_75_SOLA_07 = ?");
			params.add(expedientes.getPerfiles().getMayor75Sola07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getDisIntelectual07() != null) {
			where.append(" AND t3.DIS_INTELECTUAL_07 = ?");
			params.add(expedientes.getPerfiles().getDisIntelectual07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getDisFisica07() != null) {
			where.append(" AND t3.DIS_FISICA_07 = ?");
			params.add(expedientes.getPerfiles().getDisFisica07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getDisSensorial07() != null) {
			where.append(" AND t3.DIS_SENSORIAL_07 = ?");
			params.add(expedientes.getPerfiles().getDisSensorial07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getEnfMental07() != null) {
			where.append(" AND t3.ENF_MENTAL_07 = ?");
			params.add(expedientes.getPerfiles().getEnfMental07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getRiesgoAislamiento07() != null) {
			where.append(" AND t3.RIESGO_AISLAMIENTO_07 = ?");
			params.add(expedientes.getPerfiles().getRiesgoAislamiento07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getPisoTutelado07() != null) {
			where.append(" AND t3.PISO_TUTELADO_07 = ?");
			params.add(expedientes.getPerfiles().getPisoTutelado07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getfAlta07() != null) {
			where.append(" AND t3.F_ALTA_07 = ?");
			params.add(expedientes.getPerfiles().getfAlta07());
		}
		if (expedientes != null && expedientes.getPerfiles() != null
				&& expedientes.getPerfiles().getUsuAlta07() != null) {
			where.append(" AND UPPER(t3.USU_ALTA_07) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getPerfiles().getUsuAlta07().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getPerfiles().getUsuAlta07().toUpperCase() + "%");
			}
			where.append(" AND t3.USU_ALTA_07 IS NOT NULL");
		}

		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getIdCuenta05() != null) {
			where.append(" AND t6.ID_CUENTA_05 = ?");
			params.add(expedientes.getCuentas().getIdCuenta05());
		}
		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getNumCuenta05() != null) {
			where.append(" AND UPPER(t6.NUM_CUENTA_05) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getCuentas().getNumCuenta05().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getCuentas().getNumCuenta05().toUpperCase() + "%");
			}
			where.append(" AND t6.NUM_CUENTA_05 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getCodTipoIdenTitular05() != null) {
			where.append(" AND UPPER(t6.COD_TIPO_IDEN_TITULAR_05) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getCuentas().getCodTipoIdenTitular05().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getCuentas().getCodTipoIdenTitular05().toUpperCase() + "%");
			}
			where.append(" AND t6.COD_TIPO_IDEN_TITULAR_05 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getIdenTitular05() != null) {
			where.append(" AND UPPER(t6.IDEN_TITULAR_05) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getCuentas().getIdenTitular05().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getCuentas().getIdenTitular05().toUpperCase() + "%");
			}
			where.append(" AND t6.IDEN_TITULAR_05 IS NOT NULL");
		}

		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getIdSolicitante05() != null) {
			where.append(" AND t6.ID_SOLICITANTE_05 = ?");
			params.add(expedientes.getCuentas().getIdSolicitante05());
		}
		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getUsuHistorico05() != null) {
			where.append(" AND UPPER(t6.USU_HISTORICO_05) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getCuentas().getUsuHistorico05().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getCuentas().getUsuHistorico05().toUpperCase() + "%");
			}
			where.append(" AND t6.USU_HISTORICO_05 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getfHistorico05() != null) {
			where.append(" AND t6.F_HISTORICO_05 = ?");
			params.add(expedientes.getCuentas().getfHistorico05());
		}

		if (expedientes != null && expedientes.getCuentas() != null && expedientes.getCuentas().getfAlta05() != null) {
			where.append(" AND t6.F_ALTA_05 = ?");
			params.add(expedientes.getCuentas().getfAlta05());
		}
		if (expedientes != null && expedientes.getCuentas() != null
				&& expedientes.getCuentas().getUsuAlta05() != null) {
			where.append(" AND UPPER(t6.USU_ALTA_05) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getCuentas().getUsuAlta05().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getCuentas().getUsuAlta05().toUpperCase() + "%");
			}
			where.append(" AND t6.USU_ALTA_05 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getEstados() != null
				&& expedientes.getEstados().getIdEstado30() != null) {
			where.append(" AND t7.ID_ESTADO_30 = ?");
			params.add(expedientes.getEstados().getIdEstado30());
		}
		if (expedientes != null && expedientes.getEstados() != null
				&& expedientes.getEstados().getDescripcionEs30() != null) {
			where.append(" AND UPPER(t7.DESCRIPCION_ES_30) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getEstados().getDescripcionEs30().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getEstados().getDescripcionEs30().toUpperCase() + "%");
			}
			where.append(" AND t7.DESCRIPCION_ES_30 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getEstados() != null
				&& expedientes.getEstados().getDescripcionEu30() != null) {
			where.append(" AND UPPER(t7.DESCRIPCION_EU_30) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getEstados().getDescripcionEu30().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getEstados().getDescripcionEu30().toUpperCase() + "%");
			}
			where.append(" AND t7.DESCRIPCION_EU_30 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdDireccion06() != null) {
			where.append(" AND t8.ID_DIRECCION_06 = ?");
			params.add(expedientes.getDirecciones().getIdDireccion06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getCalle06() != null) {
			where.append(" AND UPPER(t8.CALLE_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getCalle06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getCalle06().toUpperCase() + "%");
			}
			where.append(" AND t8.CALLE_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getCp06() != null) {
			where.append(" AND UPPER(t8.CP_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getCp06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getCp06().toUpperCase() + "%");
			}
			where.append(" AND t8.CP_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdCalle06() != null) {
			where.append(" AND t8.ID_CALLE_06 = ?");
			params.add(expedientes.getDirecciones().getIdCalle06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdLocalidad06() != null) {
			where.append(" AND t8.ID_LOCALIDAD_06 = ?");
			params.add(expedientes.getDirecciones().getIdLocalidad06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdMunicipio06() != null) {
			where.append(" AND UPPER(t8.ID_MUNICIPIO_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getIdMunicipio06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getIdMunicipio06().toUpperCase() + "%");
			}
			where.append(" AND t8.ID_MUNICIPIO_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdPais06() != null) {
			where.append(" AND UPPER(t8.ID_PAIS_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getIdPais06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getIdPais06().toUpperCase() + "%");
			}
			where.append(" AND t8.ID_PAIS_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdPortal06() != null) {
			where.append(" AND UPPER(t8.ID_PORTAL_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getIdPortal06() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getIdPortal06() + "%");
			}
			where.append(" AND t8.ID_PORTAL_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdProvincia06() != null) {
			where.append(" AND UPPER(t8.ID_PROVINCIA_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getIdProvincia06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getIdProvincia06().toUpperCase() + "%");
			}
			where.append(" AND t8.ID_PROVINCIA_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getLetra06() != null) {
			where.append(" AND UPPER(t8.LETRA_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getLetra06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getLetra06().toUpperCase() + "%");
			}
			where.append(" AND t8.LETRA_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getLocalidad06() != null) {
			where.append(" AND UPPER(t8.LOCALIDAD_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getLocalidad06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getLocalidad06().toUpperCase() + "%");
			}
			where.append(" AND t8.LOCALIDAD_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getMunicipio06() != null) {
			where.append(" AND UPPER(t8.MUNICIPIO_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getMunicipio06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getMunicipio06().toUpperCase() + "%");
			}
			where.append(" AND t8.MUNICIPIO_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getPais06() != null) {
			where.append(" AND UPPER(t8.PAIS_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getPais06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getPais06().toUpperCase() + "%");
			}
			where.append(" AND t8.PAIS_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getPiso06() != null) {
			where.append(" AND UPPER(t8.PISO_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getPiso06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getPiso06().toUpperCase() + "%");
			}
			where.append(" AND t8.PISO_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getPortal06() != null) {
			where.append(" AND UPPER(t8.PORTAL_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getPortal06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getPortal06().toUpperCase() + "%");
			}
			where.append(" AND t8.PORTAL_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getEscalera06() != null) {
			where.append(" AND UPPER(t8.ESCALERA_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getEscalera06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getEscalera06().toUpperCase() + "%");
			}
			where.append(" AND t8.ESCALERA_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getProvincia06() != null) {
			where.append(" AND UPPER(t8.PROVINCIA_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getProvincia06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getProvincia06().toUpperCase() + "%");
			}
			where.append(" AND t8.PROVINCIA_06 IS NOT NULL");
		}

		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getIdSolicitante06() != null) {
			where.append(" AND t8.ID_SOLICITANTE_06 = ?");
			params.add(expedientes.getDirecciones().getIdSolicitante06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getUsuHistorico06() != null) {
			where.append(" AND UPPER(t8.USU_HISTORICO_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getUsuHistorico06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getUsuHistorico06().toUpperCase() + "%");
			}
			where.append(" AND t8.USU_HISTORICO_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getfHistorico06() != null) {
			where.append(" AND t8.F_HISTORICO_06 = ?");
			params.add(expedientes.getDirecciones().getfHistorico06());
		}

		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getfAlta06() != null) {
			where.append(" AND t8.F_ALTA_06 = ?");
			params.add(expedientes.getDirecciones().getfAlta06());
		}
		if (expedientes != null && expedientes.getDirecciones() != null
				&& expedientes.getDirecciones().getUsuAlta06() != null) {
			where.append(" AND UPPER(t8.USU_ALTA_06) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getDirecciones().getUsuAlta06().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getDirecciones().getUsuAlta06().toUpperCase() + "%");
			}
			where.append(" AND t8.USU_ALTA_06 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getFolderId00() != null) {
			where.append(" AND UPPER(t1.FOLDER_ID_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getFolderId00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getFolderId00().toUpperCase() + "%");
			}
			where.append(" AND t1.FOLDER_ID_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getfRegistro00() != null) {
			where.append(" AND t1.F_REGISTRO_00 = ?");
			params.add(expedientes.getfRegistro00());
		}

		if (expedientes != null && expedientes.getfRegistroDesde() != null && expedientes.getfRegistroHasta() != null) {
			where.append(" AND (TRUNC(t1.F_REGISTRO_00) BETWEEN ").append(" ? ").append(" AND ").append(" ? )");
			params.add(expedientes.getfRegistroDesde());
			params.add(expedientes.getfRegistroHasta());
		} else if (expedientes != null && expedientes.getfRegistroDesde() != null) {
			where.append(" AND t1.F_REGISTRO_00 >= ?");
			params.add(expedientes.getfRegistroDesde());
		} else if (expedientes != null && expedientes.getfRegistroHasta() != null) {
			where.append(" AND t1.F_REGISTRO_00 <= ?");
			params.add(expedientes.getfRegistroHasta());
		}

		if (expedientes != null && expedientes.getNumRegistro00() != null) {
			where.append(" AND UPPER(t1.NUM_REGISTRO_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getNumRegistro00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getNumRegistro00().toUpperCase() + "%");
			}
			where.append(" AND t1.NUM_REGISTRO_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getfRegistroOtro00() != null) {
			where.append(" AND t1.F_REGISTRO_OTRO_00 = ?");
			params.add(expedientes.getfRegistroOtro00());
		}
		if (expedientes != null && expedientes.getNumRegistroOtro00() != null) {
			where.append(" AND UPPER(t1.NUM_REGISTRO_OTRO_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getNumRegistroOtro00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getNumRegistroOtro00().toUpperCase() + "%");
			}
			where.append(" AND t1.NUM_REGISTRO_OTRO_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getfRecepcion00() != null) {
			where.append(" AND t1.F_RECEPCION_00 = ?");
			params.add(expedientes.getfRecepcion00());
		}
		if (expedientes != null && expedientes.getfAperturaExp00() != null) {
			where.append(" AND t1.F_APERTURA_EXP_00 = ?");
			params.add(expedientes.getfAperturaExp00());
		}

		if (expedientes != null && expedientes.getfAperturaExpDesde() != null
				&& expedientes.getfAperturaExpHasta() != null) {
			where.append(" AND (TRUNC(t1.F_APERTURA_EXP_00) BETWEEN ").append(" ? ").append(" AND ").append(" ? )");
			params.add(expedientes.getfAperturaExpDesde());
			params.add(expedientes.getfAperturaExpHasta());
		} else if (expedientes != null && expedientes.getfAperturaExpDesde() != null) {
			where.append(" AND t1.F_APERTURA_EXP_00 >= ?");
			params.add(expedientes.getfAperturaExpDesde());
		} else if (expedientes != null && expedientes.getfAperturaExpHasta() != null) {
			where.append(" AND t1.F_APERTURA_EXP_00 <= ?");
			params.add(expedientes.getfAperturaExpHasta());
		}

		if (expedientes != null && expedientes.getfCierre00() != null) {
			where.append(" AND t1.F_CIERRE_00 = ?");
			params.add(expedientes.getfCierre00());
		}
		if (expedientes != null && expedientes.getfArchivo00() != null) {
			where.append(" AND t1.F_ARCHIVO_00 = ?");
			params.add(expedientes.getfArchivo00());
		}
		if (expedientes != null && expedientes.getfDesistimiento00() != null) {
			where.append(" AND t1.F_DESISTIMIENTO_00 = ?");
			params.add(expedientes.getfDesistimiento00());
		}
		if (expedientes != null && expedientes.getfResolDesis00() != null) {
			where.append(" AND t1.F_RESOL_DESIS_00 = ?");
			params.add(expedientes.getfResolDesis00());
		}
		if (expedientes != null && expedientes.getIdTipoEntrada00() != null) {
			where.append(" AND UPPER(t1.ID_TIPO_ENTRADA_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getIdTipoEntrada00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getIdTipoEntrada00().toUpperCase() + "%");
			}
			where.append(" AND t1.ID_TIPO_ENTRADA_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getNumExpediente00() != null) {
			where.append(" AND UPPER(t1.NUM_EXPEDIENTE_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getNumExpediente00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getNumExpediente00().toUpperCase() + "%");
			}
			where.append(" AND t1.NUM_EXPEDIENTE_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getIdTipoNot00() != null) {
			where.append(" AND UPPER(t1.ID_TIPO_NOT_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getIdTipoNot00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getIdTipoNot00().toUpperCase() + "%");
			}
			where.append(" AND t1.ID_TIPO_NOT_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getCanalNot00() != null) {
			where.append(" AND UPPER(t1.CANAL_NOT_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getCanalNot00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getCanalNot00().toUpperCase() + "%");
			}
			where.append(" AND t1.CANAL_NOT_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getEmailNot00() != null) {
			where.append(" AND UPPER(t1.EMAIL_NOT_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getEmailNot00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getEmailNot00().toUpperCase() + "%");
			}
			where.append(" AND t1.EMAIL_NOT_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getTfnoNot00() != null) {
			where.append(" AND UPPER(t1.TFNO_NOT_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getTfnoNot00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getTfnoNot00().toUpperCase() + "%");
			}
			where.append(" AND t1.TFNO_NOT_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getIdiomaNot00() != null) {
			where.append(" AND UPPER(t1.IDIOMA_NOT_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getIdiomaNot00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getIdiomaNot00().toUpperCase() + "%");
			}
			where.append(" AND t1.IDIOMA_NOT_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getIdProcedimiento00() != null) {
			where.append(" AND UPPER(t1.ID_PROCEDIMIENTO_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getIdProcedimiento00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getIdProcedimiento00().toUpperCase() + "%");
			}
			where.append(" AND t1.ID_PROCEDIMIENTO_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getDeOficio00() != null) {
			where.append(" AND t1.DE_OFICIO_00 = ?");
			params.add(expedientes.getDeOficio00());
		}
		if (expedientes != null && expedientes.getUrgencia00() != null) {
			where.append(" AND t1.URGENCIA_00 = ?");
			params.add(expedientes.getUrgencia00());
		}
		if (expedientes != null && expedientes.getRazonUrgencia00() != null) {
			where.append(" AND UPPER(t1.RAZON_URGENCIA_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getRazonUrgencia00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getRazonUrgencia00().toUpperCase() + "%");
			}
			where.append(" AND t1.RAZON_URGENCIA_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getCodigoSga00() != null) {
			where.append(" AND t1.CODIGO_SGA_00 = ?");
			params.add(expedientes.getCodigoSga00());
		}
		if (expedientes != null && expedientes.getPresentaSol00() != null) {
			where.append(" AND t1.PRESENTA_SOL_00 = ?");
			params.add(expedientes.getPresentaSol00());
		}
		if (expedientes != null && expedientes.getSeOpone00() != null) {
			where.append(" AND t1.SE_OPONE_00 = ?");
			params.add(expedientes.getSeOpone00());
		}
		if (expedientes != null && expedientes.getNombreCon00() != null) {
			where.append(" AND UPPER(t1.NOMBRE_CON_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getNombreCon00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getNombreCon00().toUpperCase() + "%");
			}
			where.append(" AND t1.NOMBRE_CON_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getApellido1Con00() != null) {
			where.append(" AND UPPER(t1.APELLIDO1_CON_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getApellido1Con00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getApellido1Con00().toUpperCase() + "%");
			}
			where.append(" AND t1.APELLIDO1_CON_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getApellido2Con00() != null) {
			where.append(" AND UPPER(t1.APELLIDO2_CON_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getApellido2Con00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getApellido2Con00().toUpperCase() + "%");
			}
			where.append(" AND t1.APELLIDO2_CON_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getAutorizacionCon00() != null) {
			where.append(" AND t1.AUTORIZACION_CON_00 = ?");
			params.add(expedientes.getAutorizacionCon00());
		}
		if (expedientes != null && expedientes.getIdentificadorCon00() != null) {
			where.append(" AND UPPER(t1.IDENTIFICADOR_CON_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getIdentificadorCon00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getIdentificadorCon00().toUpperCase() + "%");
			}
			where.append(" AND t1.IDENTIFICADOR_CON_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getTipoIdenCon00() != null) {
			where.append(" AND UPPER(t1.TIPO_IDEN_CON_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getTipoIdenCon00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getTipoIdenCon00().toUpperCase() + "%");
			}
			where.append(" AND t1.TIPO_IDEN_CON_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getExencionSol00() != null) {
			where.append(" AND t1.EXENCION_SOL_00 = ?");
			params.add(expedientes.getExencionSol00());
		}
		if (expedientes != null && expedientes.getExencionRes00() != null) {
			where.append(" AND t1.EXENCION_RES_00 = ?");
			params.add(expedientes.getExencionRes00());
		}
		if (expedientes != null && expedientes.getfBaja00() != null) {
			where.append(" AND t1.F_BAJA_00 = ?");
			params.add(expedientes.getfBaja00());
		}
		if (expedientes != null && expedientes.getIdMotivoBaja00() != null) {
			where.append(" AND t1.ID_MOTIVO_BAJA_00 = ?");
			params.add(expedientes.getIdMotivoBaja00());
		}
		if (expedientes != null && expedientes.getObservaciones00() != null) {
			where.append(" AND UPPER(t1.OBSERVACIONES_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getObservaciones00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getObservaciones00().toUpperCase() + "%");
			}
			where.append(" AND t1.OBSERVACIONES_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getExisteInstalacion00() != null) {
			where.append(" AND t1.EXISTE_INSTALACION_00 = ?");
			params.add(expedientes.getExisteInstalacion00());
		}
		if (expedientes != null && expedientes.getErrorExpediente00() != null) {
			where.append(" AND t1.ERROR_EXPEDIENTE_00 = ?");
			params.add(expedientes.getErrorExpediente00());
		}
		if (expedientes != null && expedientes.getIdiomaServicio00() != null) {
			where.append(" AND t1.IDIOMA_SERVICIO_00 = ?");
			params.add(expedientes.getIdiomaServicio00());
		}
		if (expedientes != null && expedientes.getTecnicoExpediente00() != null) {
			where.append(" AND UPPER(t1.TECNICO_EXPEDIENTE_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getTecnicoExpediente00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getTecnicoExpediente00().toUpperCase() + "%");
			}
			where.append(" AND t1.TECNICO_EXPEDIENTE_00 IS NOT NULL");
		}

		if (expedientes != null && expedientes.getTipoRep00() != null) {
			where.append(" AND t1.TIPO_REP_00 = ?");
			params.add(expedientes.getTipoRep00());
		}
		if (expedientes != null && expedientes.getTipoIdentificadorRep00() != null) {
			where.append(" AND UPPER(t1.TIPO_IDENTIFICADOR_REP_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getTipoIdentificadorRep00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getTipoIdentificadorRep00().toUpperCase() + "%");
			}
			where.append(" AND t1.TIPO_IDENTIFICADOR_REP_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getIdentificadorRep00() != null) {
			where.append(" AND UPPER(t1.IDENTIFICADOR_REP_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getIdentificadorRep00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getIdentificadorRep00().toUpperCase() + "%");
			}
			where.append(" AND t1.IDENTIFICADOR_REP_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getNombreRep00() != null) {
			where.append(" AND UPPER(t1.NOMBRE_REP_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getNombreRep00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getNombreRep00().toUpperCase() + "%");
			}
			where.append(" AND t1.NOMBRE_REP_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getApellido1Rep00() != null) {
			where.append(" AND UPPER(t1.APELLIDO1_REP_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getApellido1Rep00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getApellido1Rep00().toUpperCase() + "%");
			}
			where.append(" AND t1.APELLIDO1_REP_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getApellido2Rep00() != null) {
			where.append(" AND UPPER(t1.APELLIDO2_REP_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getApellido2Rep00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getApellido2Rep00().toUpperCase() + "%");
			}
			where.append(" AND t1.APELLIDO2_REP_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getSexoRep00() != null) {
			where.append(" AND UPPER(t1.SEXO_REP_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getSexoRep00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getSexoRep00().toUpperCase() + "%");
			}
			where.append(" AND t1.SEXO_REP_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getRazonSocialRep00() != null) {
			where.append(" AND UPPER(t1.RAZON_SOCIAL_REP_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getRazonSocialRep00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getRazonSocialRep00().toUpperCase() + "%");
			}
			where.append(" AND t1.RAZON_SOCIAL_REP_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getContactoInstRep00() != null) {
			where.append(" AND t1.CONTACTO_INST_REP_00 = ?");
			params.add(expedientes.getContactoInstRep00());
		}
		if (expedientes != null && expedientes.getIdDireccionNotif00() != null) {
			where.append(" AND t1.ID_DIRECCION_NOTIF_00 = ?");
			params.add(expedientes.getIdDireccionNotif00());
		}
		if (expedientes != null && expedientes.getAutorizaConsulta00() != null) {
			where.append(" AND t1.AUTORIZA_CONSULTA_00 = ?");
			params.add(expedientes.getAutorizaConsulta00());
		}
		if (expedientes != null && expedientes.getAutorizaDarInfo00() != null) {
			where.append(" AND t1.AUTORIZA_DAR_INFO_00 = ?");
			params.add(expedientes.getAutorizaDarInfo00());
		}

		if (expedientes != null && expedientes.getTipoDesis00() != null) {
			where.append(" AND UPPER(t1.TIPO_DESIS_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getTipoDesis00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getTipoDesis00().toUpperCase() + "%");
			}
			where.append(" AND t1.TIPO_DESIS_00 IS NOT NULL");
		}

		if (expedientes != null && expedientes.getExoneracionRes00() != null) {
			where.append(" AND t1.EXONERACION_RES_00 = ?");
			params.add(expedientes.getExoneracionRes00());
		}
		if (expedientes != null && expedientes.getEstadoNotificacion00() != null) {
			where.append(" AND t1.ESTADO_NOTIFICACION_00 = ?");
			params.add(expedientes.getEstadoNotificacion00());
		}
		if (expedientes != null && expedientes.getResultadoEstudio00() != null) {
			where.append(" AND t1.RESULTADO_ESTUDIO_00 = ?");
			params.add(expedientes.getResultadoEstudio00());
		}

		if (expedientes != null && expedientes.getfResolDesde() != null && expedientes.getfResolHasta() != null) {
			where.append(" AND (TRUNC(t1.F_RESOLUCION_00) BETWEEN ").append(" ? ").append(" AND ").append(" ? )");
			params.add(expedientes.getfResolDesde());
			params.add(expedientes.getfResolHasta());
		} else if (expedientes != null && expedientes.getfResolDesde() != null) {
			where.append(" AND t1.F_RESOLUCION_00 >= ?");
			params.add(expedientes.getfResolDesde());
		} else if (expedientes != null && expedientes.getfResolHasta() != null) {
			where.append(" AND t1.F_RESOLUCION_00 <= ?");
			params.add(expedientes.getfResolHasta());
		}
		if (expedientes != null && expedientes.getfResolucion00() != null) {
			where.append(" AND t1.F_RESOLUCION_00 = ?");
			params.add(expedientes.getfResolucion00());
		}
//		if (expedientes != null && expedientes.getfResolDesde() != null) {
//			where.append(" AND t1.F_RESOLUCION_00 >= ?");
//			params.add(expedientes.getfResolucion00());
//		}
//		if (expedientes != null && expedientes.getfResolHasta() != null) {
//			where.append(" AND t1.F_RESOLUCION_00 <= ?");
//			params.add(expedientes.getfResolucion00());
//		}
		if (expedientes != null && expedientes.getDocumentacion00() != null) {
			where.append(" AND t1.DOCUMENTACION_00 = ?");
			params.add(expedientes.getDocumentacion00());
		}
		if (expedientes != null && expedientes.getPrecioFinal00() != null) {
			where.append(" AND t1.PRECIO_FINAL_00 = ?");
			params.add(expedientes.getPrecioFinal00());
		}

		if (expedientes != null && expedientes.getOrigenOficio00() != null) {
			where.append(" AND UPPER(t1.ORIGEN_OFICIO_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getOrigenOficio00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getOrigenOficio00().toUpperCase() + "%");
			}
			where.append(" AND t1.ORIGEN_OFICIO_00 IS NOT NULL");
		}

		if (expedientes != null && expedientes.getUsuAlta00() != null) {
			where.append(" AND UPPER(t1.USU_ALTA_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getUsuAlta00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getUsuAlta00().toUpperCase() + "%");
			}
			where.append(" AND t1.USU_ALTA_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getUsuModif00() != null) {
			where.append(" AND UPPER(t1.USU_MODIF_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(expedientes.getUsuModif00().toUpperCase() + "%");
			} else {
				params.add("%" + expedientes.getUsuModif00().toUpperCase() + "%");
			}
			where.append(" AND t1.USU_MODIF_00 IS NOT NULL");
		}
		if (expedientes != null && expedientes.getfAlta00() != null) {
			where.append(" AND t1.F_ALTA_00 = ?");
			params.add(expedientes.getfAlta00());
		}
		if (expedientes != null && expedientes.getfModif00() != null) {
			where.append(" AND t1.F_MODIF_00 = ?");
			params.add(expedientes.getfModif00());
		}

		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getDirecciones() != null
				&& expedientes.getSolicitantes().getDirecciones().getDescMunFiltro() != null) {
			where.append(" AND (UPPER(t8.MUNICIPIO_06) like ? ESCAPE  '\\' OR UPPER(t9.DS_O) like ? ESCAPE  '\\')");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getDirecciones().getDescMunFiltro() + "%");
				params.add(expedientes.getSolicitantes().getDirecciones().getDescMunFiltro() + "%");
			} else {
				params.add("%" + expedientes.getSolicitantes().getDirecciones().getDescMunFiltro().toUpperCase() + "%");
				params.add("%" + expedientes.getSolicitantes().getDirecciones().getDescMunFiltro().toUpperCase() + "%");
			}
			where.append(" AND (t8.MUNICIPIO_06 IS NOT NULL OR ID_MUNICIPIO_06 IS NOT NULL )");
		}

		if (expedientes != null && expedientes.getSolicitantes() != null
				&& expedientes.getSolicitantes().getDirecciones() != null
				&& expedientes.getSolicitantes().getDirecciones().getDescProvFiltro() != null) {
			where.append(" AND (UPPER(t8.PROVINCIA_06) like ? ESCAPE  '\\' OR UPPER(t10.DS_O) like ? ESCAPE  '\\')");
			if (startsWith) {
				params.add(expedientes.getSolicitantes().getDirecciones().getDescProvFiltro() + "%");
				params.add(expedientes.getSolicitantes().getDirecciones().getDescProvFiltro() + "%");
			} else {
				params.add(
						"%" + expedientes.getSolicitantes().getDirecciones().getDescProvFiltro().toUpperCase() + "%");
				params.add(
						"%" + expedientes.getSolicitantes().getDirecciones().getDescProvFiltro().toUpperCase() + "%");
			}
			where.append(" AND (t8.PROVINCIA_06 IS NOT NULL OR ID_PROVINCIA_06 IS NOT NULL )");
		}

		if (expedientes != null && expedientes.getProcedimientosFilter() != null
				&& !expedientes.getProcedimientosFilter().isEmpty()) {
			List<String> strings = expedientes.getProcedimientosFilter().stream().map(proc -> "'" + proc + "'")
					.collect(Collectors.toList());
			where.append(" AND t1.ID_PROCEDIMIENTO_00 IN (").append(String.join(",", strings)).append(") ");
		}

		if (expedientes != null && expedientes.getNoCerrado() != null && expedientes.getNoCerrado()) {
			where.append(" AND t1.ID_ESTADO_00 NOT IN (");
			where.append(EstadosExpedienteEnum.PEND_COMPLETAR.getId()).append(", ");
			where.append(EstadosExpedienteEnum.PEND_APERTURA.getId()).append(", ");
			where.append(EstadosExpedienteEnum.CERRADO.getId()).append(", ");
			where.append(EstadosExpedienteEnum.ARCHIVADO.getId()).append(", ");
			where.append(EstadosExpedienteEnum.PEND_ARCHIVAR.getId()).append(", ");
			where.append(EstadosExpedienteEnum.TRAMITACION.getId());
			where.append(")");
		}

		if (expedientes != null && expedientes.getPdteSolicitarPadron00() != null) {
			where.append(" AND t1.PDTE_SOLICITAR_PADRON_00 = ?");
			params.add(expedientes.getPdteSolicitarPadron00());
		}

		Map<String, Object> mapWhere = new HashMap<String, Object>();
		mapWhere.put("query", where);
		mapWhere.put("params", params);

		return mapWhere;
	}
	// CHECKSTYLE:ON CyclomaticComplexity - Generación de código de UDA

	@Transactional(readOnly = true)
	public List<Expedientes> findExpedienteByFolderId(Expedientes expedientes) {
		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,ID_SOLICITANTE_00 IDSOLICITANTE00,t1.FOLDER_ID_00 FOLDERID00,t1.F_REGISTRO_00 FREGISTRO00,t1.NUM_REGISTRO_00 NUMREGISTRO00,t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00,t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00,t1.F_RECEPCION_00 FRECEPCION00,t1.F_APERTURA_EXP_00 FAPERTURAEXP00,t1.F_CIERRE_00 FCIERRE00,t1.F_ARCHIVO_00 FARCHIVO00,t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00,t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00,t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00,t1.ID_TIPO_NOT_00 IDTIPONOT00,t1.CANAL_NOT_00 CANALNOT00,t1.EMAIL_NOT_00 EMAILNOT00,t1.TFNO_NOT_00 TFNONOT00,t1.IDIOMA_NOT_00 IDIOMANOT00,t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00,t1.DE_OFICIO_00 DEOFICIO00,t1.URGENCIA_00 URGENCIA00,t1.RAZON_URGENCIA_00 RAZONURGENCIA00,t1.CODIGO_SGA_00 CODIGOSGA00,t1.PRESENTA_SOL_00 PRESENTASOL00,t1.SE_OPONE_00 SEOPONE00,t1.NOMBRE_CON_00 NOMBRECON00,t1.APELLIDO1_CON_00 APELLIDO1CON00,t1.APELLIDO2_CON_00 APELLIDO2CON00,t1.AUTORIZACION_CON_00 AUTORIZACIONCON00,t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00,t1.TIPO_IDEN_CON_00 TIPOIDENCON00,t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00,t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00,t1.OBSERVACIONES_00 OBSERVACIONES00,t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00,t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.EXONERACION_RES_00 EXONERACIONRES00, t1.USU_ALTA_00 USUALTA00,t1.USU_MODIF_00 USUMODIF00,t1.F_ALTA_00 FALTA00,t1.F_MODIF_00 FMODIF00 ");
		query.append("FROM EXPEDIENTES t1 ");

		StringBuilder where = new StringBuilder(" WHERE t1.FOLDER_ID_00 = ? ");
		query.append(where);

		return (List<Expedientes>) this.jdbcTemplate.query(query.toString(), this.rwMapSoloExp,
				expedientes.getFolderId00());
	}

	/**
	 * Recupera el expediente correspondiente a la solicitud, busacando por el
	 * solicitante
	 *
	 * @param expedientes Expedientes
	 * @return Expedientes
	 */
	@Transactional(readOnly = true)
	public Expedientes findExpBySolProc(Expedientes expedientes, ProcedimientosEnum... procedimientosEnum) {

		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		StringBuilder query = new StringBuilder("SELECT ");
		query.append(
				"t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00, t1.FOLDER_ID_00 FOLDERID00, t1.F_REGISTRO_00 FREGISTRO00, t1.NUM_REGISTRO_00 NUMREGISTRO00, t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00, t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00, t1.F_RECEPCION_00 FRECEPCION00, t1.F_APERTURA_EXP_00 FAPERTURAEXP00, t1.F_CIERRE_00 FCIERRE00, t1.F_ARCHIVO_00 FARCHIVO00, t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00, t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00, t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00, t1.ID_TIPO_NOT_00 IDTIPONOT00, t1.CANAL_NOT_00 CANALNOT00, t1.EMAIL_NOT_00 EMAILNOT00, t1.TFNO_NOT_00 TFNONOT00, t1.IDIOMA_NOT_00 IDIOMANOT00, t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00, t1.DE_OFICIO_00 DEOFICIO00, t1.URGENCIA_00 URGENCIA00, t1.RAZON_URGENCIA_00 RAZONURGENCIA00, t1.CODIGO_SGA_00 CODIGOSGA00, t1.PRESENTA_SOL_00 PRESENTASOL00, t1.SE_OPONE_00 SEOPONE00, t1.NOMBRE_CON_00 NOMBRECON00, t1.APELLIDO1_CON_00 APELLIDO1CON00, t1.APELLIDO2_CON_00 APELLIDO2CON00, t1.AUTORIZACION_CON_00 AUTORIZACIONCON00, t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00, t1.TIPO_IDEN_CON_00 TIPOIDENCON00, t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00, t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00, t1.OBSERVACIONES_00 OBSERVACIONES00, t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00, t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00, t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00, t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00, t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00, t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00, t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00, t1.USU_MODIF_00 USUMODIF00, t1.F_ALTA_00 FALTA00, t1.F_MODIF_00 FMODIF00 ,t1.ES_DENEGACION_SERVICIO_00 ESDENEGACIONSERVICIO00, t1.PDTE_SOLICITAR_PADRON_00 PDTESOLICITARPADRON00 ");
		query.append(
				",t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01, t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01, t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01, t2.NOMBRE_01 SOLNOMBRE01, t2.APELLIDO1_01 SOLAPELLIDO101, t2.APELLIDO2_01 SOLAPELLIDO201, t2.SEXO_01 SOLSEXO01, t2.F_NACIMIENTO_01 SOLFNACIMIENTO01, t2.NUMSS_01 SOLNUMSS01, t2.NUMTIS_01 SOLNUMTIS01, t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01, t2.BENEFICIARIO_01 SOLBENEFICIARIO01, t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01, t2.F_BAJA_01 SOLFBAJA01, t2.F_INICIO_01 SOLFINICIO01, t2.NUM_ABONADO_01 SOLNUMABONADO01, t2.OBSERVACIONES_01 SOLOBSERVACIONES01, t2.NO_REINTENTAR_01 SOLNOREINTENTAR01, t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01, t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01, t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01, t2.MOTIV_INST_FUERA_PLAZO_01 SOLMOTIVINSTFUERAPLAZO01, t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01, t2.USU_MODIF_01 SOLUSUMODIF01, t2.F_ALTA_01 SOLFALTA01, t2.F_MODIF_01 SOLFMODIF01, t2.ID_CUENTA_01 SOLIDCUENTA01, t2.ID_PERFIL_01 SOLIDPERFIL01, t2.ID_DIRECCION_01 SOLIDDIRECCION01,t2.ID_VALORACION_01  SOLIDVALORACION01,t2.ES_DENEGACION_SERVICIO_01 ESDENEGACIONSERVICIO01 ");
		query.append(
				", t3.ID_PERFIL_07 PERFILESIDPERFIL07, t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07, t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07, t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07, t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07, t3.DIS_FISICA_07 PERFILESDISFISICA07, t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07, t3.ENF_MENTAL_07 PERFILESENFMENTAL07, t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07, t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07, t3.F_ALTA_07 PERFILESFALTA07, t3.USU_ALTA_07 PERFILESUSUALTA07,t3.ID_PISO_07 PERFILESIDPISO07 ");
		query.append(
				", t6.ID_CUENTA_05 CUENTASIDCUENTA05, t6.NUM_CUENTA_05 CUENTASNUMCUENTA05, t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05, t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,  t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05, t6.F_ALTA_05 CUENTASFALTA05, t6.USU_ALTA_05 CUENTASUSUALTA05, t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05");
		query.append(
				", t7.ID_ESTADO_30 ESTADOSIDESTADO30, t7.DESCRIPCION_ES_30 ESTADOSDESCES30, t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30");
		query.append(
				", t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06, t8.CALLE_06 DIRECCIONESCALLE06, t8.CP_06 DIRECCIONESCP06, t8.ID_CALLE_06 DIRECCIONESIDCALLE06, t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06, t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06, t8.ID_PAIS_06 DIRECCIONESIDPAIS06, t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06, t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06, t8.LETRA_06 DIRECCIONESLETRA06, t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06, t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06, t8.PAIS_06 DIRECCIONESPAIS06, t8.PISO_06 DIRECCIONESPISO06, t8.PORTAL_06 DIRECCIONESPORTAL06, t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06, t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06, t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06, t8.F_ALTA_06 DIRECCIONESFALTA06, t8.USU_ALTA_06 DIRECCIONESUSUALTA06");
		query.append(
				", t9.ID_INTEROP_19 INTEROPIDINTEROP19, t9.CODRESUL_CON_DGP_19 INTEROPCODRESULCONDGP19 , t9.RESUL_CON_DGP_19 INTEROPRESULCONDGP19 ");

		// FROM
		query.append(" FROM EXPEDIENTES t1 ");
		query.append(" LEFT JOIN SOLICITANTES t2 ON ( t1.ID_SOLICITANTE_00= t2.ID_SOLICITANTE_01 ) ");
		query.append(" LEFT JOIN PERFILES t3 ON (t1.ID_PERFIL_00= t3.ID_PERFIL_07) ");
		query.append(" LEFT JOIN CUENTAS t6 ON (t1.id_cuenta_00 = t6.id_cuenta_05) ");
		query.append(" LEFT JOIN ESTADOS t7 ON (t1.ID_ESTADO_00= t7.ID_ESTADO_30) ");
		query.append(" LEFT JOIN DIRECCIONES t8 ON ( t1.id_direccion_00 = t8.id_direccion_06) ");
		query.append(" LEFT JOIN DATOS_INTEROP t9 ON (t1.id_expediente_00 = t9.id_expediente_19) ");

		// WHERE
		query.append(" WHERE 1=1 AND ");
		MapSqlParameterSource parameters = new MapSqlParameterSource().addValue("idSolicitante",
				expedientes.getSolicitantes().getIdSolicitante01());
		query.append(" ( ");
		for (ProcedimientosEnum proc : procedimientosEnum) {
			query.append(" t1.id_procedimiento_00 =  '" + proc.getId()).append("'");
			query.append(" OR ");
		}
		query.delete(query.length() - 3, query.length());
		query.append(" ) ");
		query.append(" AND t1.id_solicitante_00 = :idSolicitante");

		NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
		List<Expedientes> expedientesList = namedParameterJdbcTemplate.query(query.toString(), parameters, this.rwMap);

		Expedientes result = (Expedientes) DataAccessUtils.uniqueResult(expedientesList);

		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		return result;
	}

	/**
	 * StringBuilder initilization value
	 */
	public static final int STRING_BUILDER_INIT = 4096;

	/**
	 * Genera codigo secuencial para el expediente en base al procedimiento
	 * solicitante
	 *
	 * @param idProcedimiento String
	 * @return int
	 */
	public int getNumberFolderSequence(String idProcedimiento) {
		String sequence = "";
		if (ProcedimientosEnum.ALTA.getId().equalsIgnoreCase(idProcedimiento)) {
			sequence = SEQUENCE_NUM_FOLDER_ALTA;
		} else if (ProcedimientosEnum.BAJA.getId().equalsIgnoreCase(idProcedimiento)) {
			sequence = SEQUENCE_NUM_FOLDER_BAJA;
		} else if (ProcedimientosEnum.MODIFICACION.getId().equalsIgnoreCase(idProcedimiento)) {
			sequence = SEQUENCE_NUM_FOLDER_UPDATE;
		} else if (ProcedimientosEnum.REVISION_PRECIO.getId().equalsIgnoreCase(idProcedimiento)) {
			sequence = SEQUENCE_NUM_FOLDER_REVISION;
		} else if (ProcedimientosEnum.INFORME.getId().equalsIgnoreCase(idProcedimiento)) {
			sequence = SEQUENCE_NUM_FOLDER_INFORME;
		} else if (ProcedimientosEnum.NOTIFICACION_LIQUIDACION.getId().equalsIgnoreCase(idProcedimiento)) {
			sequence = SEQUENCE_NUM_FOLDER_LIQUIDACION;
		} else {
			ManagerErrors.manageError("Id de procedimiento desconocido idProcedimiento: " + idProcedimiento);
		}
		String sqlSequence = "SELECT " + sequence + ".NEXTVAL  valor FROM DUAL";
		return this.jdbcTemplate.queryForObject(sqlSequence, Integer.class);
	}

	@Override
	public Expedientes updateFolderNumber(Expedientes expedientes) {
		String query = "UPDATE EXPEDIENTES SET NUM_EXPEDIENTE_00=?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE FOLDER_ID_00=?";
		this.jdbcTemplate.update(query, expedientes.getNumExpediente00(), expedientes.getUsuModif00(),
				expedientes.getFolderId00());
		return expedientes;
	}

	@Override
	public Expedientes updateOtherRegistryData(Expedientes expedientes) {
		String query = "UPDATE EXPEDIENTES SET F_REGISTRO_OTRO_00=?, NUM_REGISTRO_OTRO_00=?, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
		this.jdbcTemplate.update(query, expedientes.getfRegistroOtro00(), expedientes.getNumRegistroOtro00(),
				expedientes.getUsuModif00(), expedientes.getIdExpediente00());
		return expedientes;
	}

	@Override
	public Solicitantes updateRepresentante(Solicitantes representante, String idExpediente) {
		String query = "UPDATE expedientes SET TIPO_IDENTIFICADOR_REP_00 = ?, IDENTIFICADOR_REP_00 = ?, NOMBRE_REP_00 = ?, APELLIDO1_REP_00 = ?, APELLIDO2_REP_00 = ?, SEXO_REP_00 = ?, USU_MODIF_00=?,F_MODIF_00=? WHERE ID_EXPEDIENTE_00 = ?";
		this.jdbcTemplate.update(query, representante.getTipoIdentificador01(), representante.getIdentificador01(),
				representante.getNombre01(), representante.getApellido101(), representante.getApellido201(),
				representante.getSexo01(), representante.getUsuModif01(), representante.getfModif01(), idExpediente);
		return representante;
	}

	@Override
	public Expedientes updateRepresentante(Expedientes exp) {
		String usuario = null;
		try {
			usuario = UtilSeguridad.getUsuarioConectado().getUserName();
		} catch (Exception e) {
			usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
		}

		String query = "UPDATE expedientes SET TIPO_IDENTIFICADOR_REP_00 = ?, IDENTIFICADOR_REP_00 = ?, NOMBRE_REP_00 = ?, APELLIDO1_REP_00 = ?, APELLIDO2_REP_00 = ?, SEXO_REP_00 = ?,RAZON_SOCIAL_REP_00=?,TIPO_REP_00=?, USU_MODIF_00=?,F_MODIF_00=sysdate WHERE ID_EXPEDIENTE_00 = ?";
		this.jdbcTemplate.update(query, exp.getTipoIdentificadorRep00(), exp.getIdentificadorRep00(),
				exp.getNombreRep00(), exp.getApellido1Rep00(), exp.getApellido2Rep00(), exp.getSexoRep00(),
				exp.getRazonSocialRep00(), exp.getTipoRep00(), usuario, exp.getIdExpediente00());
		return exp;
	}

	@Override
	public Expedientes updateEstado(Expedientes expedientes) {
		String usuario = null;

		if (expedientes.getUsuModif00() == null)
			try {

				usuario = UtilSeguridad.getUsuarioConectado().getUserName();
			} catch (Exception e) {
				usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
			}
		else
			usuario = expedientes.getUsuModif00();

		if (Utilidades.esNulo(expedientes.getIdExpediente00())) {
			String query = "UPDATE EXPEDIENTES SET ID_ESTADO_00=? , F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE FOLDER_ID_00=?";
			this.jdbcTemplate.update(query, expedientes.getEstados().getIdEstado30(), usuario,
					expedientes.getFolderId00());
		} else {
			String query = "UPDATE EXPEDIENTES SET ID_ESTADO_00=? , F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
			this.jdbcTemplate.update(query, expedientes.getEstados().getIdEstado30(), usuario,
					expedientes.getIdExpediente00());
		}
		return expedientes;
	}

	@Override
	public Expedientes updateEstadoAndResultadoEstudio(Expedientes expedientes) {
		String usuario = null;
		try {
			usuario = UtilSeguridad.getUsuarioConectado().getUserName();
		} catch (Exception e) {
			usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
		}

		if (Integer.valueOf(FinalizacionEstudioEnum.RESOLUCION_DENEGACION_ALEGACIONES.getId())
				.equals(expedientes.getResultadoEstudio00())) {
			expedientes.setEsDenegacionServicio00(com.ejie.ad74a.util.constantes.Constantes.VAL_NUM_SI);
		} else {
			expedientes.setEsDenegacionServicio00(com.ejie.ad74a.util.constantes.Constantes.VAL_NUM_NO);
		}

		if (Utilidades.esNulo(expedientes.getIdExpediente00())) {
			String query = "UPDATE EXPEDIENTES SET ID_ESTADO_00=?, RESULTADO_ESTUDIO_00= ?, ES_DENEGACION_SERVICIO_00 = ? ,  F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE FOLDER_ID_00=?";
			this.jdbcTemplate.update(query, expedientes.getEstados().getIdEstado30(),
					expedientes.getResultadoEstudio00(), expedientes.getEsDenegacionServicio00(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getFolderId00());
		} else {
			String query = "UPDATE EXPEDIENTES SET ID_ESTADO_00=?, RESULTADO_ESTUDIO_00= ?, ES_DENEGACION_SERVICIO_00 = ?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
			this.jdbcTemplate.update(query, expedientes.getEstados().getIdEstado30(),
					expedientes.getResultadoEstudio00(), expedientes.getEsDenegacionServicio00(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getIdExpediente00());
		}
		return expedientes;
	}

	@Override
	public Expedientes updateEstadoNotificacion(Expedientes expedientes) {
		String usuario = null;
		try {
			usuario = UtilSeguridad.getUsuarioConectado().getUserName();
		} catch (Exception e) {
			usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
		}

		if (Utilidades.esNulo(expedientes.getIdExpediente00())) {
			String query = "UPDATE EXPEDIENTES SET ESTADO_NOTIFICACION_00=? , F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE FOLDER_ID_00=?";
			this.jdbcTemplate.update(query, expedientes.getEstadoNotificacion00(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getFolderId00());
		} else {
			String query = "UPDATE EXPEDIENTES SET ESTADO_NOTIFICACION_00=? , F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
			this.jdbcTemplate.update(query, expedientes.getEstadoNotificacion00(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getIdExpediente00());
		}
		return expedientes;
	}

	/**
	 * CSI-IM-Problema TimeOut Tramitación. Unificamos dos updates que se hacen
	 * sobre el mismo registro.
	 */
	@Override
	public Expedientes updateEstadoYEstadoNotificacion(Expedientes expedientes) {

		String usuario = null;
		if (expedientes.getUsuModif00() == null)
			try {
				usuario = UtilSeguridad.getUsuarioConectado().getUserName();
			} catch (Exception e) {
				usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
			}
		else
			usuario = expedientes.getUsuModif00();
		String query;
		if (Utilidades.esNulo(expedientes.getIdExpediente00())) {
			query = "UPDATE EXPEDIENTES SET ID_ESTADO_00=? ,ESTADO_NOTIFICACION_00=? , F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE FOLDER_ID_00=?";
			this.jdbcTemplate.update(query, expedientes.getEstados().getIdEstado30(),
					expedientes.getEstadoNotificacion00(), usuario, expedientes.getFolderId00());
		} else {
			query = "UPDATE EXPEDIENTES SET ID_ESTADO_00=? ,ESTADO_NOTIFICACION_00=? , F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
			this.jdbcTemplate.update(query, expedientes.getEstados().getIdEstado30(),
					expedientes.getEstadoNotificacion00(), usuario, expedientes.getIdExpediente00());
		}
		// Conexión a la base de Datos

		/*
		 * ds = new weblogic.jdbc.jta.DataSource(); try { Connection con =
		 * ds.getConnection(); PreparedStatement ps = con.prepareStatement(query);
		 * 
		 * ps.setLong(1, expedientes.getEstados().getIdEstado30()); ps.setLong(2,
		 * expedientes.getEstadoNotificacion00()); ps.setString(3, usuario);
		 * ps.setLong(4, expedientes.getIdExpediente00()); ResultSet rs =
		 * ps.executeQuery(); rs.setFetchSize(200); } catch (SQLException e) {
		 * 
		 * }
		 */

//		ds = new DataSourceImpl("ad74a.ad74aDataSource", "jdbc:oracle:thin:@//ad74d:1530/ad74.ejie.eus", "ad74a",
//				"ad74a");
//		// ds = new weblogic.jdbc.jta.DataSource();
//		try (Connection con = ds.getConnection(); PreparedStatement ps = con.prepareStatement(query);) {
//			ps.setLong(1, expedientes.getEstados().getIdEstado30());
//			ps.setLong(2, expedientes.getEstadoNotificacion00());
//			ps.setString(3, usuario);
//			ps.setLong(4, expedientes.getIdExpediente00());
//			ResultSet rs = ps.executeQuery();
//			rs.setFetchSize(200);
//		} catch (SQLException e) {
//
//		}
		return expedientes;
	}

	@Override
	public Expedientes updateDesistimiento(Expedientes expedientes) {
		String usuario = null;
		try {
			usuario = UtilSeguridad.getUsuarioConectado().getUserName();
		} catch (Exception e) {
			usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
		}

		if (Utilidades.esNulo(expedientes.getIdExpediente00())) {
			String query = "UPDATE EXPEDIENTES SET ID_ESTADO_00=?, F_DESISTIMIENTO_00 = ?, TIPO_DESIS_00 = ?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE FOLDER_ID_00=?";
			this.jdbcTemplate.update(query, expedientes.getEstados().getIdEstado30(), expedientes.getfDesistimiento00(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getFolderId00());
		} else {
			String query = "UPDATE EXPEDIENTES SET ID_ESTADO_00=? , F_DESISTIMIENTO_00 = ?, TIPO_DESIS_00 = ?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
			this.jdbcTemplate.update(query, expedientes.getEstados().getIdEstado30(), expedientes.getfDesistimiento00(),
					expedientes.getTipoDesis00(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getIdExpediente00());
		}
		return expedientes;
	}

	@Override
	public Expedientes updateFApertura(Expedientes expedientes) {
		String usuario = null;
		try {
			usuario = UtilSeguridad.getUsuarioConectado().getUserName();
		} catch (Exception e) {
			usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
		}

		if (Utilidades.esNulo(expedientes.getIdExpediente00())) {
			String query = "UPDATE EXPEDIENTES SET F_APERTURA_EXP_00=?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE FOLDER_ID_00=?";
			this.jdbcTemplate.update(query, expedientes.getfAperturaExp00(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getFolderId00());
		} else {
			String query = "UPDATE EXPEDIENTES SET F_APERTURA_EXP_00=?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
			this.jdbcTemplate.update(query, expedientes.getfAperturaExp00(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getIdExpediente00());
		}
		return expedientes;
	}

	@Override
	public Expedientes updateFResolucion(Expedientes expedientes, String senderID) {

		String query = "UPDATE EXPEDIENTES SET F_RESOLUCION_00=?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
		this.jdbcTemplate.update(query, expedientes.getfResolucion00(),
				null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : senderID,
				expedientes.getIdExpediente00());
		return expedientes;
	}

	@Override
	public Expedientes updateDatosAltaResolConc(Expedientes expedientes, String senderID) {

		String query = "UPDATE EXPEDIENTES SET EXENCION_RES_00=?,PRECIO_FINAL_00 = ?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
		this.jdbcTemplate.update(query, expedientes.getExencionRes00(), expedientes.getPrecioFinal00(),
				null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : senderID,
				expedientes.getIdExpediente00());
		return expedientes;
	}

	@Override
	public Expedientes updateFCierre(Expedientes expedientes) {
		String usuario = null;
		try {
			usuario = UtilSeguridad.getUsuarioConectado().getUserName();
		} catch (Exception e) {
			usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
		}

		if (Utilidades.esNulo(expedientes.getIdExpediente00())) {
			String query = "UPDATE EXPEDIENTES SET F_CIERRE_00=?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE FOLDER_ID_00=?";
			this.jdbcTemplate.update(query, expedientes.getfCierre00(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getFolderId00());
		} else {
			String query = "UPDATE EXPEDIENTES SET F_CIERRE_00=?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
			this.jdbcTemplate.update(query, expedientes.getfCierre00(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getIdExpediente00());
		}
		return expedientes;
	}

	@HistoricoAnnotation
	@Transactional(readOnly = true)
	public String pasarHistorico(String prueba) {
		this.jdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("PASAR_HISTORICO");
		// SqlParameterSource inParams = new
		// MapSqlParameterSource().addValue("contact_id", "aa");
		Map<String, Object> outParams = this.jdbcCall.execute();

		String name = (String) outParams.get("TOTAL");

		return name;
	}

	/**
	 * Recupera el expediente correspondiente a la solicitud, busacando por el
	 * solicitante
	 *
	 * @param expedientes Expedientes
	 * @return Expedientes
	 */
	@Override
	@Transactional(readOnly = true)
	public List<JSONObject> findCuadroMando(Expedientes expedientes) {

		StringBuilder query = new StringBuilder();
		List<Object> params = new ArrayList<Object>();

		// Se tienen en cuenta las entradas de papel0 tipo solicitud que están en estado
		// 'P' o 'C' (pendiente o en curso)
		query.append("SELECT DISTINCT(ESTADO), ");
		query.append("DESCES, DESCEU,  ");
		query.append("PROCEDUREID, ORDEN, ");
		query.append("COUNT(ID) OVER (PARTITION BY ESTADO, PROCEDUREID) TOTAL ");
		query.append("FROM ");
		query.append("( ");
		query.append("	SELECT DISTINCT(t1.ID_ESTADO_30) ESTADO,  ");
		query.append("	t1.DESCRIPCION_ES_30 DESCES,  ");
		query.append("	t1.DESCRIPCION_EU_30 DESCEU,  ");
		query.append("	t2.ID_PROCEDIMIENTO_00 PROCEDUREID,  ");
		query.append("	t1.ORDEN_30 ORDEN, ");
		query.append("	'1-' || t2.ID_EXPEDIENTE_00 ID, ");
		query.append("	1 AS TIPO ");
		query.append("	FROM ESTADOS t1 INNER JOIN EXPEDIENTES t2 ON (t1.ID_ESTADO_30 = t2.ID_ESTADO_00) ");
		query.append("	WHERE 1=1 ");
		query.append("	AND t1.VISIBLE_30 = ? ");
		params.add(Constantes.UNO);
		query.append("	AND t1.ID_ESTADO_30 <> ? "); // Las pendientes de completar se obtienen desde la bandeja de
														// entradas
		params.add(EstadosExpedienteEnum.PEND_COMPLETAR.getId());

		if (null != expedientes && null != expedientes.getIdProcedimiento00()
				&& !"".equals(expedientes.getIdProcedimiento00())) {
			query.append(" AND t2.ID_PROCEDIMIENTO_00 = ? ");
			params.add(expedientes.getIdProcedimiento00());
		}
		// Buscar por técnico de expediente
		if (null != expedientes && null != expedientes.getTecnicoExpediente00()
				&& !"".equals(expedientes.getTecnicoExpediente00())) {
			query.append(" AND UPPER(t2.TECNICO_EXPEDIENTE_00) = UPPER(?) ");
			params.add(expedientes.getTecnicoExpediente00());
		}

		query.append("	 ");
		query.append("	UNION ");
		query.append("	 ");
		query.append("	SELECT  ");
		query.append("	0 ESTADO, ");
		query.append("	(SELECT DESCRIPCION_ES_30 FROM ESTADOS WHERE ID_ESTADO_30 = 0) DESCES,  ");
		query.append("	(SELECT DESCRIPCION_EU_30 FROM ESTADOS WHERE ID_ESTADO_30 = 0) DESCEU,  ");
		query.append("	t1.PROCEDUREID PROCEDUREID,  ");
		query.append("	1 ORDEN, ");
		query.append("	'2-' || IDENTRADA ID, ");
		query.append("	2 AS TIPO ");
		query.append("	FROM BANDEJA_ENTRADAS t1 ");
		query.append("	WHERE 1=1 ");
		query.append("	AND t1.ESTADO IN (?, ?) "); // Pendientes o en curso
		params.add(Constantes.EstadosBandejaPapel0.PENDIENTE);
		params.add(Constantes.EstadosBandejaPapel0.EN_CURSO);
		query.append("	AND t1.IDTIPOENTRADA = ? "); // Papel0
		params.add(Constantes.DOS);
		query.append("	AND t1.TIPO = ? "); // Solicitud
		params.add("01");

		if (null != expedientes && null != expedientes.getIdProcedimiento00()
				&& !"".equals(expedientes.getIdProcedimiento00())) {
			query.append(" AND t1.PROCEDUREID = ? ");
			params.add(expedientes.getIdProcedimiento00());
		}
		// Buscar por técnico de expediente
		if (null != expedientes && null != expedientes.getTecnicoExpediente00()
				&& !"".equals(expedientes.getTecnicoExpediente00())) {
			query.append(" AND UPPER(t1.USURESPONSABLE) = UPPER(?) ");
			params.add(expedientes.getTecnicoExpediente00());
		}

		query.append(") ");
		query.append("ORDER BY ORDEN, ESTADO, PROCEDUREID ");

		return this.jdbcTemplate.query(query.toString(), this.rwMapCuadroMando, params.toArray());

//		query.append(
//				"SELECT DISTINCT(t1.ID_ESTADO_30), t1.DESCRIPCION_ES_30, t1.DESCRIPCION_EU_30, t2.ID_PROCEDIMIENTO_00, t1.ORDEN_30, ");
//		query.append(
//				" COUNT(t2.ID_EXPEDIENTE_00) OVER (PARTITION BY t1.ID_ESTADO_30, t2.ID_PROCEDIMIENTO_00) AS TOTAL ");
//		query.append(" FROM ESTADOS t1 INNER JOIN EXPEDIENTES t2 ON (t1.ID_ESTADO_30 = t2.ID_ESTADO_00) ");
//		query.append(" WHERE 1=1 ");
//
//		if (null != expedientes && null != expedientes.getIdProcedimiento00()
//				&& !"".equals(expedientes.getIdProcedimiento00())) {
//			query.append(" AND t2.ID_PROCEDIMIENTO_00 = ? ");
//			params.add(expedientes.getIdProcedimiento00());
//		}
//		// Buscar por técnico de expediente
//		if (null != expedientes && null != expedientes.getTecnicoExpediente00()
//				&& !"".equals(expedientes.getTecnicoExpediente00())) {
//			query.append(" AND t2.TECNICO_EXPEDIENTE_00 = ? ");
//			params.add(expedientes.getTecnicoExpediente00());
//		}
//
//		// Solo los estados visibles
//		query.append(" AND t1.VISIBLE_30 = 1 ");
//
//		// Buscar todos los estados menos "Pendiente completar solicitud"
//		// query.append(" AND t1.ID_ESTADO_30 <> ? ");
//		// params.add(EstadosExpedienteEnum.PEND_COMPLETAR.getId());
//
//		// Evitamos que se dupliquen los estados ignorando los expedientes migrados.
//		// query.append(
////				" AND t2.ID_PROCEDIMIENTO_00 <> ? AND t2.ID_PROCEDIMIENTO_00 <> ? AND t2.ID_PROCEDIMIENTO_00 <> ? ");
//		// params.add(ProcedimientosEnum.X87_TEA_1.getId());
//		// params.add(ProcedimientosEnum.X87_TEA_2.getId());
//		// params.add(ProcedimientosEnum.X87_TEA_4.getId());
//
//		query.append(" ORDER BY t1.ORDEN_30, t1.ID_ESTADO_30, t2.ID_PROCEDIMIENTO_00");
//
//		return this.jdbcTemplate.query(query.toString(), this.rwMapCuadroMando, params.toArray());

	}

	/**
	 * Finds rows in the Expedientes table to use in search in BandejaPapel0.
	 *
	 * @param expedientes     Expedientes
	 * @param tableRequestDto TableRequestDto
	 * @param startsWith      Boolean
	 * @return List<Expedientes>
	 */
	@Override
	@Transactional(readOnly = true)
	public List<Expedientes> findPapel0(Expedientes expedientes, TableRequestDto tableRequestDto, Boolean startsWith) {
		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.FOLDER_ID_00 FOLDERID00, t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00, t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00, ");
		query.append(
				" t2.NOMBRE_01 SOLNOMBRE01, t2.APELLIDO1_01 SOLAPELLIDO101, t2.APELLIDO2_01 SOLAPELLIDO201, t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01,  ");
		query.append(
				" t3.ID_ESTADO_30 IDESTADO30, t3.DESCRIPCION_ES_30 DESCRIPCIONES30, t3.DESCRIPCION_EU_30 DESCRIPCIONEU30 ");
		query.append(" FROM EXPEDIENTES t1 ,SOLICITANTES t2, ESTADOS t3 ");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(expedientes, startsWith);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t1.ID_SOLICITANTE_00= t2.ID_SOLICITANTE_01(+) AND t1.ID_ESTADO_00 = t3.ID_ESTADO_30(+)");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		if (tableRequestDto != null) {
			query = TableManager.getPaginationQuery(tableRequestDto, query, ExpedientesDaoImpl.ORDER_BY_WHITE_LIST);
		}

		return (List<Expedientes>) this.jdbcTemplate.query(query.toString(), this.rwMapPapel0, params.toArray());
	}

	/**
	 * Counts rows in the Expedientes table to use in search in BandejaPapel0.
	 *
	 * @param expedientes Expedientes
	 * @param startsWith  Boolean
	 * @return Long
	 */
	@Override
	public Long findPapel0Count(Expedientes expedientes, Boolean startsWith) {

		StringBuilder query = new StringBuilder("SELECT COUNT(1) ");
		query.append(" FROM EXPEDIENTES t1 ,SOLICITANTES t2, ESTADOS t3");

		// Where clause & Params
		Map<String, ?> mapaWhere = this.getWhereLikeMap(expedientes, startsWith);
		StringBuilder where = new StringBuilder(
				" WHERE 1=1 AND t1.ID_SOLICITANTE_00= t2.ID_SOLICITANTE_01(+)  AND t1.ID_ESTADO_00 = t3.ID_ESTADO_30(+)");
		where.append(mapaWhere.get("query"));
		query.append(where);

		List<?> params = (List<?>) mapaWhere.get("params");

		return this.jdbcTemplate.queryForObject(query.toString(), params.toArray(), Long.class);
	}

	/**
	 * Updates a single row in the Expedientes table.
	 *
	 * @param expedientes Expedientes
	 * @return Expedientes
	 */
	public Expedientes updateTabSolicitudPapel0(Expedientes expedientes) {
		String query = "UPDATE EXPEDIENTES SET ID_SOLICITANTE_00=?, ID_PERFIL_00=?, ID_CUENTA_00=?, "
				+ "ID_DIRECCION_00=?, "
				+ "ID_TIPO_NOT_00=?, CANAL_NOT_00=?, EMAIL_NOT_00=?, TFNO_NOT_00=?, IDIOMA_NOT_00 = ?, "
				+ "URGENCIA_00=?, RAZON_URGENCIA_00=?, CODIGO_SGA_00=?, PRESENTA_SOL_00=?, SE_OPONE_00=?, NOMBRE_CON_00=?, APELLIDO1_CON_00=?, APELLIDO2_CON_00=?, "
				+ "AUTORIZACION_CON_00=?, IDENTIFICADOR_CON_00= UPPER(?), TIPO_IDEN_CON_00=?, EXENCION_SOL_00=?, EXENCION_RES_00=?, F_BAJA_00=?, ID_MOTIVO_BAJA_00=?, OBSERVACIONES_00=?, "
				+ "EXISTE_INSTALACION_00 = ?, ERROR_EXPEDIENTE_00 = ?, TECNICO_EXPEDIENTE_00 = ?, "
				+ "TIPO_REP_00 = ?, TIPO_IDENTIFICADOR_REP_00 = ?, IDENTIFICADOR_REP_00 = UPPER(?), NOMBRE_REP_00 = ?, APELLIDO1_REP_00 = ?, APELLIDO2_REP_00 = ?, SEXO_REP_00 = ?, RAZON_SOCIAL_REP_00 = ?, CONTACTO_INST_REP_00 = ?, "
				+ "USU_MODIF_00=?, F_MODIF_00=?,AUTORIZA_CONSULTA_00 =? , AUTORIZA_DAR_INFO_00 = ?, MOTIVO_INFORME_00 = ?,F_REGISTRO_OTRO_00=?,NUM_REGISTRO_OTRO_00 = ?, ID_DIRECCION_NOTIF_00 =?,"
				+ "PDTE_SOLICITAR_PADRON_00 = ?  WHERE ID_EXPEDIENTE_00=?";
		Object getSolicitantesIdSolicitante01Aux = null;
		if (expedientes.getSolicitantes() != null && expedientes.getSolicitantes().getIdSolicitante01() != null) {
			getSolicitantesIdSolicitante01Aux = expedientes.getSolicitantes().getIdSolicitante01();
		}
		Object getPerfilesIdPerfil07Aux = null;
		if (expedientes.getPerfiles() != null && expedientes.getPerfiles().getIdPerfil07() != null) {
			getPerfilesIdPerfil07Aux = expedientes.getPerfiles().getIdPerfil07();
		}

		Object getCuentasIdCuenta05Aux = null;
		if (expedientes.getCuentas() != null && expedientes.getCuentas().getIdCuenta05() != null) {
			getCuentasIdCuenta05Aux = expedientes.getCuentas().getIdCuenta05();
		}
		Object getDireccionesIdDireccion06Aux = null;
		if (expedientes.getDirecciones() != null && expedientes.getDirecciones().getIdDireccion06() != null) {
			getDireccionesIdDireccion06Aux = expedientes.getDirecciones().getIdDireccion06();
		}
		this.jdbcTemplate.update(query, getSolicitantesIdSolicitante01Aux, getPerfilesIdPerfil07Aux,
				getCuentasIdCuenta05Aux, getDireccionesIdDireccion06Aux, expedientes.getIdTipoNot00(),
				expedientes.getCanalNot00(), expedientes.getEmailNot00(), expedientes.getTfnoNot00(),
				expedientes.getIdiomaNot00(), expedientes.getUrgencia00() == null ? 0 : expedientes.getUrgencia00(),
				expedientes.getRazonUrgencia00(), expedientes.getCodigoSga00(), expedientes.getPresentaSol00(),
				expedientes.getSeOpone00(), expedientes.getNombreCon00(), expedientes.getApellido1Con00(),
				expedientes.getApellido2Con00(), expedientes.getAutorizacionCon00(),
				expedientes.getIdentificadorCon00(), expedientes.getTipoIdenCon00(), expedientes.getExencionSol00(),
				expedientes.getExencionRes00(), expedientes.getfBaja00(), expedientes.getIdMotivoBaja00(),
				expedientes.getObservaciones00(), expedientes.getExisteInstalacion00(),
				expedientes.getErrorExpediente00(), expedientes.getTecnicoExpediente00(), expedientes.getTipoRep00(),
				expedientes.getTipoIdentificadorRep00(), expedientes.getIdentificadorRep00(),
				expedientes.getNombreRep00(), expedientes.getApellido1Rep00(), expedientes.getApellido2Rep00(),
				expedientes.getSexoRep00(), expedientes.getRazonSocialRep00(), expedientes.getContactoInstRep00(),
				expedientes.getUsuModif00(), expedientes.getfModif00(), expedientes.getAutorizaConsulta00(),
				expedientes.getAutorizaDarInfo00(), expedientes.getMotivoInforme00(), expedientes.getfRegistroOtro00(),
				expedientes.getNumRegistroOtro00(), expedientes.getIdDireccionNotif00(),
				expedientes.getPdteSolicitarPadron00(), expedientes.getIdExpediente00());
		return expedientes;
	}

	/**
	 * Busca si hay expedientes para un solicitante y procedimiento que este abierto
	 * 
	 * @param dni         String
	 * @param procedureId String
	 * @param startsWith
	 * @return
	 */
	@Override
	public Long findCurrentExpSolProc(String dni, String procedureId) {

		StringBuilder query = new StringBuilder("SELECT COUNT(1) ");
		query.append(" FROM EXPEDIENTES t1 ,SOLICITANTES t2");

		// Where clause & Params
		query.append(
				" WHERE 1=1 AND t1.ID_SOLICITANTE_00= t2.ID_SOLICITANTE_01 AND UPPER(IDENTIFICADOR_01) = UPPER(?) AND ID_PROCEDIMIENTO_00 = ? AND F_CIERRE_00 is null AND ID_ESTADO_00 > 0 ");

		List<Object> params = new ArrayList<Object>();
		params.add(dni);
		params.add(procedureId);

		return this.jdbcTemplate.queryForObject(query.toString(), params.toArray(), Long.class);
	}

	/**
	 * Updates a single row in the Expedientes folderID table from solicitudPapel0.
	 *
	 * @param expedientes Expedientes
	 * @return Expedientes
	 */
	public Expedientes updateFolderID(Expedientes expediente) {
		String query = "UPDATE EXPEDIENTES SET FOLDER_ID_00=?, F_MODIF_00=SYSDATE, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
		this.jdbcTemplate.update(query, expediente.getFolderId00(), expediente.getUsuModif00(),
				expediente.getIdExpediente00());

		return expediente;
	}

	/**
	 * Updates a single row in the Expedientes observaciones
	 *
	 * @param expedientes Expedientes
	 * @return Expedientes
	 */
	public Expedientes updateObservaciones(Expedientes expediente) {
		String query = "UPDATE EXPEDIENTES SET OBSERVACIONES_00=?, F_MODIF_00=SYSDATE, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
		this.jdbcTemplate.update(query, expediente.getObservaciones00(), expediente.getUsuModif00(),
				expediente.getIdExpediente00());

		return expediente;
	}

	public Expedientes updateTecnico(Expedientes expediente) {
		String query = "UPDATE EXPEDIENTES SET TECNICO_EXPEDIENTE_00=?, F_MODIF_00=SYSDATE, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
		this.jdbcTemplate.update(query, expediente.getTecnicoExpediente00(), expediente.getUsuModif00(),
				expediente.getIdExpediente00());

		return expediente;
	}

	@Override
	public Expedientes updateNotifResolDesis(Expedientes expedientes) {
		String usuario = null;
		try {
			usuario = UtilSeguridad.getUsuarioConectado().getUserName();
		} catch (Exception e) {
			usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
		}

		if (Utilidades.esNulo(expedientes.getIdExpediente00())) {
			String query = "UPDATE EXPEDIENTES SET F_RESOL_DESIS_00=?, ID_ESTADO_00 = ?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE FOLDER_ID_00=?";
			this.jdbcTemplate.update(query, expedientes.getfResolDesis00(), expedientes.getEstados().getIdEstado30(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getFolderId00());
		} else {
			String query = "UPDATE EXPEDIENTES SET F_RESOL_DESIS_00 = ?, ID_ESTADO_00 = ?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
			this.jdbcTemplate.update(query, expedientes.getfResolDesis00(), expedientes.getEstados().getIdEstado30(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getIdExpediente00());
		}
		return expedientes;
	}

	@Override
	public Expedientes updateNotifResolucion(Expedientes expedientes) {
		String usuario = null;
		try {
			usuario = UtilSeguridad.getUsuarioConectado().getUserName();
		} catch (Exception e) {
			usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
		}

		if (Utilidades.esNulo(expedientes.getIdExpediente00())) {
			String query = "UPDATE EXPEDIENTES SET  ID_ESTADO_00 = ?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE FOLDER_ID_00=?";
			this.jdbcTemplate.update(query, expedientes.getEstados().getIdEstado30(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getFolderId00());
		} else {
			String query = "UPDATE EXPEDIENTES SET  ID_ESTADO_00 = ?, F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
			this.jdbcTemplate.update(query, expedientes.getEstados().getIdEstado30(),
					null != expedientes.getUsuModif00() ? expedientes.getUsuModif00() : usuario,
					expedientes.getIdExpediente00());
		}
		return expedientes;
	}

	@Transactional(readOnly = true)
	public List<Expedientes> findInterop() {
		StringBuilder query = new StringBuilder(
				"SELECT t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00, t1.FOLDER_ID_00 FOLDERID00, t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00, t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00, t2.ID_EXPEDIENTE_19 IDEXPEDIENTE19, t2.FINVOKE_CON_CONYU_IRPF_19 FINVOKECONCONYUIRPF19, t2.FINVOKE_CON_DGP_19 FINVOKECONDGP19, t2.FINVOKE_CON_IMSERSO_19 FINVOKECONIMSERSO19,  t2.FINVOKE_CON_IRPF_19 FINVOKECONIRPF19, t2.FINVOKE_CON_PADRON_19 FINVOKECONPADRON19, t2.FINVOKE_DISCAPA_19 FINVOKEDISCAPA19, t2.CODRESUL_CON_CONYU_IRPF_19 CODRESULCONCONYUIRPF19, t2.CODRESUL_CON_DGP_19 CODRESULCONDGP19, t2.CODRESUL_CON_IMSERSO_19 CODRESULCONIMSERSO19, t2.CODRESUL_CON_IRPF_19 CODRESULCONIRPF19, t2.CODRESUL_CON_PADRON_19 CODRESULCONPADRON19, t2.CODRESUL_DISCAPA_19 CODRESULDISCAPA19 ");
		query.append(
				" FROM EXPEDIENTES t1 INNER JOIN DATOS_INTEROP t2 ON (t1.ID_EXPEDIENTE_00 = t2.ID_EXPEDIENTE_19) ");
		StringBuilder where = new StringBuilder(
				"WHERE ((t2.FINVOKE_CON_CONYU_IRPF_19 IS NOT NULL AND t2.FINVOKE_CON_CONYU_IRPF_19<=sysdate) "
						+ "OR (t2.FINVOKE_CON_DGP_19 IS NOT NULL AND t2.FINVOKE_CON_DGP_19<=sysdate)"
						+ "OR (t2.FINVOKE_CON_IMSERSO_19 IS NOT NULL AND t2.FINVOKE_CON_IMSERSO_19<=sysdate)"
						+ "OR (t2.FINVOKE_CON_IRPF_19 IS NOT NULL AND t2.FINVOKE_CON_IRPF_19<=sysdate)"
						+ "OR (t2.FINVOKE_CON_PADRON_19 IS NOT NULL AND t2.FINVOKE_CON_PADRON_19<=sysdate))");
		// + "OR (t2.FINVOKE_DISCAPA_19 IS NOT NULL AND
		// t2.FINVOKE_DISCAPA_19<=sysdate))");
		query.append(where);

		return (List<Expedientes>) this.jdbcTemplate.query(query.toString(), this.rwMapInterOp, null);
	}

	@Override
	public Expedientes updateAlta(Expedientes expedientes) {

		GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();

		String query = "UPDATE EXPEDIENTES SET  URGENCIA_00 = :urgencia00 , TIPO_REP_00 = :tiporep00, TIPO_IDENTIFICADOR_REP_00 = :tipoidentificadorrep00, "
				+ "IDENTIFICADOR_REP_00 = UPPER(:identificadorrep00), RAZON_SOCIAL_REP_00 = :razonsocialrep00, APELLIDO1_REP_00 = :apellido1rep00, "
				+ "APELLIDO2_REP_00 = :apellido2rep00, NOMBRE_REP_00 = :nombrerep00, SEXO_REP_00 = :sexorep00, ID_TIPO_NOT_00 = :idtiponot00, "
				+ "CANAL_NOT_00 = :canalnot00, TFNO_NOT_00 = :tfnonot00, EMAIL_NOT_00 = :emailnot00, EXENCION_SOL_00 = :exencionsol00, APELLIDO1_CON_00 = :apellido1con00, "
				+ "APELLIDO2_CON_00 = :apellido2con00, NOMBRE_CON_00 = :nombrecon00, TIPO_IDEN_CON_00 = :tipoidencon00, IDENTIFICADOR_CON_00 = UPPER(:identificadorcon00),"
				+ "AUTORIZACION_CON_00 = :autorizacioncon00 ,AUTORIZA_CONSULTA_00 =:autorizaconsulta00, AUTORIZA_DAR_INFO_00 = :autorizadarinfo00,  ID_DIRECCION_NOTIF_00 = :iddireccionnotif00,"
				+ "IDIOMA_NOT_00 = :idiomanot00, ID_DIRECCION_00 = :iddireccion00, SE_OPONE_00 = :seopone00, PDTE_SOLICITAR_PADRON_00 = :pdtePadron WHERE ID_EXPEDIENTE_00 = :idexpediente00";

		MapSqlParameterSource parameters = new MapSqlParameterSource()
				.addValue("urgencia00", expedientes.getUrgencia00()).addValue("tiporep00", expedientes.getTipoRep00())
				.addValue("tipoidentificadorrep00", expedientes.getTipoIdentificadorRep00())
				.addValue("identificadorrep00", expedientes.getIdentificadorRep00())
				.addValue("razonsocialrep00", expedientes.getRazonSocialRep00())
				.addValue("apellido1rep00", expedientes.getApellido1Rep00())
				.addValue("apellido2rep00", expedientes.getApellido2Rep00())
				.addValue("nombrerep00", expedientes.getNombreRep00()).addValue("sexorep00", expedientes.getSexoRep00())
				.addValue("idtiponot00", expedientes.getIdTipoNot00())
				.addValue("canalnot00", expedientes.getCanalNot00()).addValue("tfnonot00", expedientes.getTfnoNot00())
				.addValue("emailnot00", expedientes.getEmailNot00())
				.addValue("exencionsol00", expedientes.getExencionSol00())
				.addValue("apellido1con00", expedientes.getApellido1Con00())
				.addValue("apellido2con00", expedientes.getApellido2Con00())
				.addValue("nombrecon00", expedientes.getNombreCon00())
				.addValue("tipoidencon00", expedientes.getTipoIdenCon00())
				.addValue("identificadorcon00", expedientes.getIdentificadorCon00())
				.addValue("autorizacioncon00", expedientes.getAutorizacionCon00())
				.addValue("autorizaconsulta00", expedientes.getAutorizaConsulta00())
				.addValue("autorizadarinfo00", expedientes.getAutorizaDarInfo00())
				.addValue("iddireccionnotif00", expedientes.getIdDireccionNotif00())
				.addValue("idiomanot00", expedientes.getIdiomaNot00())
				.addValue("iddireccion00", expedientes.getDirecciones().getIdDireccion06())
				.addValue("seopone00", expedientes.getSeOpone00())
				.addValue("pdtePadron", expedientes.getPdteSolicitarPadron00())
				.addValue("idexpediente00", expedientes.getIdExpediente00());

		NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
		namedParameterJdbcTemplate.update(query, parameters, generatedKeyHolder);

		return expedientes;
	}

	@Override
	public Expedientes updateBaja(Expedientes expedientes) {
		GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();

		String query = "UPDATE EXPEDIENTES SET  URGENCIA_00 = :urgencia00 , TIPO_REP_00 = :tiporep00, TIPO_IDENTIFICADOR_REP_00 = :tipoidentificadorrep00, "
				+ "IDENTIFICADOR_REP_00 = UPPER(:identificadorrep00), RAZON_SOCIAL_REP_00 = :razonsocialrep00, APELLIDO1_REP_00 = :apellido1rep00, "
				+ "APELLIDO2_REP_00 = :apellido2rep00, NOMBRE_REP_00 = :nombrerep00, SEXO_REP_00 = :sexorep00, ID_TIPO_NOT_00 = :idtiponot00, "
				+ "CANAL_NOT_00 = :canalnot00, TFNO_NOT_00 = :tfnonot00, EMAIL_NOT_00 = :emailnot00 , ID_MOTIVO_BAJA_00 = :idmotivobaja00, "
				+ "OBSERVACIONES_00 = :observaciones00,  ID_DIRECCION_NOTIF_00 = :iddireccionnotif00,  IDIOMA_NOT_00 = :idiomanot00 "
				+ " WHERE ID_EXPEDIENTE_00 = :idexpediente00";

		MapSqlParameterSource parameters = new MapSqlParameterSource()
				.addValue("urgencia00", expedientes.getUrgencia00()).addValue("tiporep00", expedientes.getTipoRep00())
				.addValue("tipoidentificadorrep00", expedientes.getTipoIdentificadorRep00())
				.addValue("identificadorrep00", expedientes.getIdentificadorRep00())
				.addValue("razonsocialrep00", expedientes.getRazonSocialRep00())
				.addValue("apellido1rep00", expedientes.getApellido1Rep00())
				.addValue("apellido2rep00", expedientes.getApellido2Rep00())
				.addValue("nombrerep00", expedientes.getNombreRep00()).addValue("sexorep00", expedientes.getSexoRep00())
				.addValue("idtiponot00", expedientes.getIdTipoNot00())
				.addValue("canalnot00", expedientes.getCanalNot00()).addValue("tfnonot00", expedientes.getTfnoNot00())
				.addValue("emailnot00", expedientes.getEmailNot00())
				.addValue("idmotivobaja00", expedientes.getIdMotivoBaja00())
				.addValue("observaciones00", expedientes.getObservaciones00())
				.addValue("iddireccionnotif00", expedientes.getIdDireccionNotif00())
				.addValue("idiomanot00", expedientes.getIdiomaNot00())
				.addValue("idexpediente00", expedientes.getIdExpediente00());

		NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
		namedParameterJdbcTemplate.update(query, parameters, generatedKeyHolder);

		return expedientes;
	}

	@Override
	public Expedientes updateResolucionBaja(Expedientes expedientes) {
		GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();

		String query = "UPDATE EXPEDIENTES SET  f_baja_00 = :fBaja00" + " WHERE ID_EXPEDIENTE_00 = :idexpediente00";

		MapSqlParameterSource parameters = new MapSqlParameterSource().addValue("fBaja00", expedientes.getfBaja00())
				.addValue("idexpediente00", expedientes.getIdExpediente00());

		NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
		namedParameterJdbcTemplate.update(query, parameters, generatedKeyHolder);

		return expedientes;
	}

	@Override
	public Expedientes updateModificacion(Expedientes expedientes) {
		GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();

		String query = "UPDATE EXPEDIENTES SET  URGENCIA_00 = :urgencia00 , TIPO_REP_00 = :tiporep00, TIPO_IDENTIFICADOR_REP_00 = :tipoidentificadorrep00, "
				+ "IDENTIFICADOR_REP_00 = UPPER(:identificadorrep00), RAZON_SOCIAL_REP_00 = :razonsocialrep00, APELLIDO1_REP_00 = :apellido1rep00, "
				+ "APELLIDO2_REP_00 = :apellido2rep00, NOMBRE_REP_00 = :nombrerep00, SEXO_REP_00 = :sexorep00, ID_TIPO_NOT_00 = :idtiponot00, "
				+ "CANAL_NOT_00 = :canalnot00, TFNO_NOT_00 = :tfnonot00, EMAIL_NOT_00 = :emailnot00,  ID_DIRECCION_NOTIF_00 = :iddireccionnotif00 ,  IDIOMA_NOT_00 = :idiomanot00, ID_DIRECCION_00 = :iddireccion00,ID_PERFIL_00= :idperfil00,  SE_OPONE_00 = :seopone00  "
				+ "WHERE ID_EXPEDIENTE_00 = :idexpediente00";

		MapSqlParameterSource parameters = new MapSqlParameterSource()
				.addValue("urgencia00", expedientes.getUrgencia00()).addValue("tiporep00", expedientes.getTipoRep00())
				.addValue("tipoidentificadorrep00", expedientes.getTipoIdentificadorRep00())
				.addValue("identificadorrep00", expedientes.getIdentificadorRep00())
				.addValue("razonsocialrep00", expedientes.getRazonSocialRep00())
				.addValue("apellido1rep00", expedientes.getApellido1Rep00())
				.addValue("apellido2rep00", expedientes.getApellido2Rep00())
				.addValue("nombrerep00", expedientes.getNombreRep00()).addValue("sexorep00", expedientes.getSexoRep00())
				.addValue("idtiponot00", expedientes.getIdTipoNot00())
				.addValue("canalnot00", expedientes.getCanalNot00()).addValue("tfnonot00", expedientes.getTfnoNot00())
				.addValue("emailnot00", expedientes.getEmailNot00())
				.addValue("iddireccionnotif00", expedientes.getIdDireccionNotif00())
				.addValue("idiomanot00", expedientes.getIdiomaNot00())
				.addValue("iddireccion00", expedientes.getDirecciones().getIdDireccion06())
				.addValue("idperfil00", expedientes.getPerfiles().getIdPerfil07())
				.addValue("seopone00", expedientes.getSeOpone00())
				.addValue("idexpediente00", expedientes.getIdExpediente00());

		NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
		namedParameterJdbcTemplate.update(query, parameters, generatedKeyHolder);

		return expedientes;
	}

	@Override
	public Expedientes updateInforme(Expedientes expedientes) {
		GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();

		String query = "UPDATE EXPEDIENTES SET  URGENCIA_00 = :urgencia00 , TIPO_REP_00 = :tiporep00, TIPO_IDENTIFICADOR_REP_00 = :tipoidentificadorrep00, "
				+ "IDENTIFICADOR_REP_00 = UPPER(:identificadorrep00), RAZON_SOCIAL_REP_00 = :razonsocialrep00, APELLIDO1_REP_00 = :apellido1rep00, "
				+ "APELLIDO2_REP_00 = :apellido2rep00, NOMBRE_REP_00 = :nombrerep00, SEXO_REP_00 = :sexorep00, ID_TIPO_NOT_00 = :idtiponot00, "
				+ "CANAL_NOT_00 = :canalnot00, TFNO_NOT_00 = :tfnonot00, EMAIL_NOT_00 = :emailnot00 , MOTIVO_INFORME_00 = :motivoinforme00,  IDIOMA_NOT_00 = :idiomanot00 , "
				+ " ID_DIRECCION_NOTIF_00 = :iddireccionnotif00,  SE_OPONE_00 = :seopone00 WHERE ID_EXPEDIENTE_00 = :idexpediente00";

		MapSqlParameterSource parameters = new MapSqlParameterSource()
				.addValue("urgencia00", expedientes.getUrgencia00()).addValue("tiporep00", expedientes.getTipoRep00())
				.addValue("tipoidentificadorrep00", expedientes.getTipoIdentificadorRep00())
				.addValue("identificadorrep00", expedientes.getIdentificadorRep00())
				.addValue("razonsocialrep00", expedientes.getRazonSocialRep00())
				.addValue("apellido1rep00", expedientes.getApellido1Rep00())
				.addValue("apellido2rep00", expedientes.getApellido2Rep00())
				.addValue("nombrerep00", expedientes.getNombreRep00()).addValue("sexorep00", expedientes.getSexoRep00())
				.addValue("idtiponot00", expedientes.getIdTipoNot00())
				.addValue("canalnot00", expedientes.getCanalNot00()).addValue("tfnonot00", expedientes.getTfnoNot00())
				.addValue("emailnot00", expedientes.getEmailNot00())
				.addValue("motivoinforme00", expedientes.getMotivoInforme00())
				.addValue("iddireccionnotif00", expedientes.getIdDireccionNotif00())
				.addValue("idiomanot00", expedientes.getIdiomaNot00()).addValue("seopone00", expedientes.getSeOpone00())
				.addValue("idexpediente00", expedientes.getIdExpediente00());

		NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
		namedParameterJdbcTemplate.update(query, parameters, generatedKeyHolder);

		return expedientes;
	}

	@Override
	public Expedientes updateRevision(Expedientes expedientes) {

		GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();

		String query = "UPDATE EXPEDIENTES SET  URGENCIA_00 = :urgencia00 , TIPO_REP_00 = :tiporep00, TIPO_IDENTIFICADOR_REP_00 = :tipoidentificadorrep00, "
				+ "IDENTIFICADOR_REP_00 = UPPER(:identificadorrep00), RAZON_SOCIAL_REP_00 = :razonsocialrep00, APELLIDO1_REP_00 = :apellido1rep00, "
				+ "APELLIDO2_REP_00 = :apellido2rep00, NOMBRE_REP_00 = :nombrerep00, SEXO_REP_00 = :sexorep00, ID_TIPO_NOT_00 = :idtiponot00, "
				+ "CANAL_NOT_00 = :canalnot00, TFNO_NOT_00 = :tfnonot00, EMAIL_NOT_00 = :emailnot00, EXENCION_SOL_00 = :exencionsol00, APELLIDO1_CON_00 = :apellido1con00, "
				+ "APELLIDO2_CON_00 = :apellido2con00, NOMBRE_CON_00 = :nombrecon00, TIPO_IDEN_CON_00 = :tipoidencon00, IDENTIFICADOR_CON_00 = UPPER(:identificadorcon00),"
				+ "AUTORIZACION_CON_00 = :autorizacioncon00,  ID_DIRECCION_NOTIF_00 = :iddireccionnotif00,  IDIOMA_NOT_00 = :idiomanot00,  SE_OPONE_00 = :seopone00   WHERE ID_EXPEDIENTE_00 = :idexpediente00";

		MapSqlParameterSource parameters = new MapSqlParameterSource()
				.addValue("urgencia00", expedientes.getUrgencia00()).addValue("tiporep00", expedientes.getTipoRep00())
				.addValue("tipoidentificadorrep00", expedientes.getTipoIdentificadorRep00())
				.addValue("identificadorrep00", expedientes.getIdentificadorRep00())
				.addValue("razonsocialrep00", expedientes.getRazonSocialRep00())
				.addValue("apellido1rep00", expedientes.getApellido1Rep00())
				.addValue("apellido2rep00", expedientes.getApellido2Rep00())
				.addValue("nombrerep00", expedientes.getNombreRep00()).addValue("sexorep00", expedientes.getSexoRep00())
				.addValue("idtiponot00", expedientes.getIdTipoNot00())
				.addValue("canalnot00", expedientes.getCanalNot00()).addValue("tfnonot00", expedientes.getTfnoNot00())
				.addValue("emailnot00", expedientes.getEmailNot00())
				.addValue("exencionsol00", expedientes.getExencionSol00())
				.addValue("apellido1con00", expedientes.getApellido1Con00())
				.addValue("apellido2con00", expedientes.getApellido2Con00())
				.addValue("nombrecon00", expedientes.getNombreCon00())
				.addValue("tipoidencon00", expedientes.getTipoIdenCon00())
				.addValue("identificadorcon00", expedientes.getIdentificadorCon00())
				.addValue("autorizacioncon00", expedientes.getAutorizacionCon00())
				.addValue("iddireccionnotif00", expedientes.getIdDireccionNotif00())
				.addValue("idiomanot00", expedientes.getIdiomaNot00()).addValue("seopone00", expedientes.getSeOpone00())
				.addValue("idexpediente00", expedientes.getIdExpediente00());

		NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
		namedParameterJdbcTemplate.update(query, parameters, generatedKeyHolder);

		return expedientes;
	}

	@Override
	public Expedientes insertSolicitudInicioOficio(Expedientes expedientes) {
		GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();

		String usuario = null;
		try {
			usuario = UtilSeguridad.getUsuarioConectado().getUserName();
		} catch (Exception e) {
			usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
		}

		StringBuilder query = new StringBuilder(
				"INSERT INTO EXPEDIENTES (id_expediente_00,id_solicitante_00,folder_id_00,id_perfil_00,id_cuenta_00,");
		query.append("id_direccion_00, id_direccion_notif_00, id_tipo_not_00,canal_not_00,email_not_00,tfno_not_00,");
		query.append(
				"idioma_not_00,urgencia_00,razon_urgencia_00,codigo_sga_00,presenta_sol_00,se_opone_00,nombre_con_00,");
		query.append("apellido1_con_00,apellido2_con_00,autorizacion_con_00,identificador_con_00,tipo_iden_con_00,");
		query.append(
				"exencion_sol_00,exencion_res_00,f_baja_00,id_motivo_baja_00,observaciones_00,existe_instalacion_00,");
		query.append("error_expediente_00,tecnico_expediente_00,tipo_rep_00,nombre_rep_00,apellido1_rep_00,");
		query.append("apellido2_rep_00,sexo_rep_00,razon_social_rep_00,contacto_inst_rep_00,");
		query.append(
				"usu_modif_00,f_modif_00,F_REGISTRO_00,NUM_REGISTRO_00,F_RECEPCION_00,ID_TIPO_ENTRADA_00,ID_PROCEDIMIENTO_00,ID_ESTADO_00,ID_AVISO_00,ORIGEN_OFICIO_00,DE_OFICIO_00, MOTIVO_INFORME_00,USU_ALTA_00) VALUES ");
		query.append("(SEQ_EXPEDIENTES.NEXTVAL,:id_solicitante_00,:folder_id_00,:id_perfil_00,:id_cuenta_00,"
				+ ":id_direccion_00, :id_direccion_notif_00, :id_tipo_not_00,:canal_not_00,:email_not_00,:tfno_not_00,"
				+ ":idioma_not_00,:urgencia_00,:razon_urgencia_00,:codigo_sga_00,:presenta_sol_00,:se_opone_00,:nombre_con_00,"
				+ ":apellido1_con_00,:apellido2_con_00,:autorizacion_con_00,UPPER(:identificador_con_00),:tipo_iden_con_00,"
				+ ":exencion_sol_00,:exencion_res_00,:f_baja_00,:id_motivo_baja_00,:observaciones_00,:existe_instalacion_00,"
				+ ":error_expediente_00,:tecnico_expediente_00,:tipo_rep_00,:nombre_rep_00,:apellido1_rep_00,"
				+ ":apellido2_rep_00,:sexo_rep_00,:razon_social_rep_00,:contacto_inst_rep_00,"
				+ ":usu_modif_00,:f_modif_00,SYSDATE,:num_registro_00,SYSDATE,:id_tipo_entrada_00,:id_procedimeinto_00,:id_estado_00,:id_aviso_00,:origen_oficio_00,:de_oficio_00, :motivo_informe_00,:usu_alta_00)");

		Object getSolicitantesIdSolicitante01Aux = null;
		if (expedientes.getSolicitantes() != null && expedientes.getSolicitantes().getIdSolicitante01() != null) {
			getSolicitantesIdSolicitante01Aux = expedientes.getSolicitantes().getIdSolicitante01();
		}
		Object getPerfilesIdPerfil07Aux = null;

		if (expedientes.getPerfiles() != null && expedientes.getPerfiles().getIdPerfil07() != null) {
			getPerfilesIdPerfil07Aux = expedientes.getPerfiles().getIdPerfil07();
		}

		Object getCuentasIdCuenta05Aux = null;
		if (expedientes.getCuentas() != null && expedientes.getCuentas().getIdCuenta05() != null) {
			getCuentasIdCuenta05Aux = expedientes.getCuentas().getIdCuenta05();
		}
		Object getDireccionesIdDireccion06Aux = null;
		if (expedientes.getDirecciones() != null && expedientes.getDirecciones().getIdDireccion06() != null) {
			getDireccionesIdDireccion06Aux = expedientes.getDirecciones().getIdDireccion06();
		}

		Object getDireccionesIdDireccionNot06Aux = null;
		if (expedientes.getDireccionNotif() != null && expedientes.getDireccionNotif().getIdDireccion06() != null) {
			getDireccionesIdDireccionNot06Aux = expedientes.getDireccionNotif().getIdDireccion06();
		}
		Object getEstadosIdEstado30Aux = null;
		if (expedientes.getEstados() != null && expedientes.getEstados().getIdEstado30() != null) {
			getEstadosIdEstado30Aux = expedientes.getEstados().getIdEstado30();
		}
		NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
		MapSqlParameterSource parameters = new MapSqlParameterSource()
				.addValue("id_solicitante_00", getSolicitantesIdSolicitante01Aux)
				.addValue("folder_id_00", expedientes.getFolderId00())
				.addValue("id_perfil_00", getPerfilesIdPerfil07Aux).addValue("id_cuenta_00", getCuentasIdCuenta05Aux)
				.addValue("id_direccion_00", getDireccionesIdDireccion06Aux)
				.addValue("id_direccion_notif_00", getDireccionesIdDireccionNot06Aux)
				.addValue("id_tipo_not_00", expedientes.getIdTipoNot00())
				.addValue("canal_not_00", expedientes.getCanalNot00())
				.addValue("email_not_00", expedientes.getEmailNot00())
				.addValue("tfno_not_00", expedientes.getTfnoNot00())
				.addValue("idioma_not_00", expedientes.getIdiomaNot00())
				.addValue("urgencia_00", expedientes.getUrgencia00())
				.addValue("razon_urgencia_00", expedientes.getRazonUrgencia00())
				.addValue("codigo_sga_00", expedientes.getCodigoSga00())
				.addValue("presenta_sol_00", expedientes.getPresentaSol00())
				.addValue("se_opone_00", expedientes.getSeOpone00())
				.addValue("nombre_con_00", expedientes.getNombreCon00())
				.addValue("apellido1_con_00", expedientes.getApellido1Con00())
				.addValue("apellido2_con_00", expedientes.getApellido2Con00())
				.addValue("autorizacion_con_00", expedientes.getAutorizacionCon00())
				.addValue("identificador_con_00", expedientes.getIdentificadorCon00())
				.addValue("tipo_iden_con_00", expedientes.getTipoIdenCon00())
				.addValue("exencion_sol_00", expedientes.getExencionSol00())
				.addValue("exencion_res_00", expedientes.getExencionRes00())
				.addValue("f_baja_00", expedientes.getfBaja00())
				.addValue("id_motivo_baja_00", expedientes.getIdMotivoBaja00())
				.addValue("observaciones_00", expedientes.getObservaciones00())
				.addValue("existe_instalacion_00", expedientes.getExisteInstalacion00())
				.addValue("error_expediente_00", expedientes.getErrorExpediente00())
				.addValue("tecnico_expediente_00", expedientes.getTecnicoExpediente00())
				.addValue("tipo_rep_00", expedientes.getTipoRep00())
				.addValue("nombre_rep_00", expedientes.getNombreRep00())
				.addValue("apellido1_rep_00", expedientes.getApellido1Rep00())
				.addValue("apellido2_rep_00", expedientes.getApellido2Rep00())
				.addValue("sexo_rep_00", expedientes.getSexoRep00())
				.addValue("razon_social_rep_00", expedientes.getRazonSocialRep00())
				.addValue("contacto_inst_rep_00", expedientes.getContactoInstRep00())
				.addValue("usu_modif_00", expedientes.getUsuModif00()).addValue("f_modif_00", expedientes.getfModif00())
				.addValue("num_registro_00", expedientes.getNumRegistro00())
				.addValue("id_tipo_entrada_00", expedientes.getIdTipoEntrada00())
				.addValue("id_procedimeinto_00", expedientes.getIdProcedimiento00())
				.addValue("id_estado_00", getEstadosIdEstado30Aux).addValue("id_aviso_00", expedientes.getIdAviso00())
				.addValue("origen_oficio_00", expedientes.getOrigenOficio00())
				.addValue("de_oficio_00", Constantes.TipoSolicitud.SOLICITUD_DE_OFICIO)
				.addValue("motivo_informe_00", expedientes.getMotivoInforme00()).addValue("usu_alta_00", usuario);

		/*
		 * namedParameterJdbcTemplate.update(query.toString(),
		 * getSolicitantesIdSolicitante01Aux, expedientes.getFolderId00(),
		 * getPerfilesIdPerfil07Aux, getCuentasIdCuenta05Aux,
		 * getDireccionesIdDireccion06Aux, expedientes.getIdTipoNot00(),
		 * expedientes.getCanalNot00(), expedientes.getEmailNot00(),
		 * expedientes.getTfnoNot00(), expedientes.getIdiomaNot00(),
		 * expedientes.getUrgencia00(), expedientes.getRazonUrgencia00(),
		 * expedientes.getCodigoSga00(), expedientes.getPresentaSol00(),
		 * expedientes.getSeOpone00(), expedientes.getNombreCon00(),
		 * expedientes.getApellido1Con00(), expedientes.getApellido2Con00(),
		 * expedientes.getAutorizacionCon00(), expedientes.getIdentificadorCon00(),
		 * expedientes.getTipoIdenCon00(), expedientes.getExencionSol00(),
		 * expedientes.getExencionRes00(), expedientes.getfBaja00(),
		 * expedientes.getIdMotivoBaja00(), expedientes.getObservaciones00(),
		 * expedientes.getExisteInstalacion00(), expedientes.getErrorExpediente00(),
		 * expedientes.getTecnicoExpediente00(), expedientes.getTipoRep00(),
		 * expedientes.getNombreRep00(), expedientes.getApellido1Rep00(),
		 * expedientes.getApellido2Rep00(), expedientes.getSexoRep00(),
		 * expedientes.getRazonSocialRep00(), expedientes.getContactoInstRep00(),
		 * expedientes.getUsuModif00(), expedientes.getfModif00(),
		 * expedientes.getNumRegistro00(), expedientes.getIdTipoEntrada00(),
		 * expedientes.getIdProcedimiento00(), getEstadosIdEstado30Aux,
		 * generatedKeyHolder, new String[] { "ID_SOLICITANTE_01" });
		 */
		namedParameterJdbcTemplate.update(query.toString(), parameters, generatedKeyHolder,
				new String[] { "ID_EXPEDIENTE_00" });
		expedientes.setIdExpediente00(generatedKeyHolder.getKey().longValue());
		return expedientes;

	}

	/**
	 * Busca el último expediente de un beneficiario
	 * 
	 * @param filterExpedientes
	 * @return Expedientes
	 */
	public Expedientes findBeneficiarioUltimoExp(Expedientes filterExpedientes) {

		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		String query = "SELECT t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.ID_LIQUIDACION_00 IDLIQUIDACION00,t1.FOLDER_ID_00 FOLDERID00, t1.F_REGISTRO_00 FREGISTRO00, t1.NUM_REGISTRO_00 NUMREGISTRO00, t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00, "
				+ " t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00, t1.F_RECEPCION_00 FRECEPCION00, t1.F_APERTURA_EXP_00 FAPERTURAEXP00, t1.F_CIERRE_00 FCIERRE00, t1.F_ARCHIVO_00 FARCHIVO00, "
				+ " t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00, t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00, t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00, t1.ID_TIPO_NOT_00 IDTIPONOT00, "
				+ " t1.CANAL_NOT_00 CANALNOT00, t1.EMAIL_NOT_00 EMAILNOT00, t1.TFNO_NOT_00 TFNONOT00, t1.IDIOMA_NOT_00 IDIOMANOT00, t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00, t1.DE_OFICIO_00 DEOFICIO00, "
				+ " t1.URGENCIA_00 URGENCIA00, t1.RAZON_URGENCIA_00 RAZONURGENCIA00, t1.CODIGO_SGA_00 CODIGOSGA00, t1.PRESENTA_SOL_00 PRESENTASOL00, t1.SE_OPONE_00 SEOPONE00, t1.NOMBRE_CON_00 NOMBRECON00, "
				+ " t1.APELLIDO1_CON_00 APELLIDO1CON00, t1.APELLIDO2_CON_00 APELLIDO2CON00, t1.AUTORIZACION_CON_00 AUTORIZACIONCON00, t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00, t1.TIPO_IDEN_CON_00 TIPOIDENCON00, "
				+ " t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00, t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00, t1.OBSERVACIONES_00 OBSERVACIONES00, "
				+ " t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00, t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00, "
				+ " t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00,"
				+ " t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00,"
				+ " t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00,"
				+ " t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00,"
				+ " t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00, t1.USU_MODIF_00 USUMODIF00,"
				+ " t1.F_ALTA_00 FALTA00, t1.F_MODIF_00 FMODIF00, t1.ES_DENEGACION_SERVICIO_00 ESDENEGACIONSERVICIO00, t1.PDTE_SOLICITAR_PADRON_00 PDTESOLICITARPADRON00,"
				+ " t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01, t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01, "
				+ " t2.NOMBRE_01 SOLNOMBRE01, t2.APELLIDO1_01 SOLAPELLIDO101, t2.APELLIDO2_01 SOLAPELLIDO201, t2.SEXO_01 SOLSEXO01, t2.F_NACIMIENTO_01 SOLFNACIMIENTO01, t2.NUMSS_01 SOLNUMSS01,"
				+ " t2.NUMTIS_01 SOLNUMTIS01, t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01, t2.BENEFICIARIO_01 SOLBENEFICIARIO01, t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01, t2.F_BAJA_01 SOLFBAJA01,"
				+ " t2.F_INICIO_01 SOLFINICIO01, t2.NUM_ABONADO_01 SOLNUMABONADO01, t2.OBSERVACIONES_01 SOLOBSERVACIONES01, t2.NO_REINTENTAR_01 SOLNOREINTENTAR01, t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01,"
				+ " t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01,"
				+ " t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01,t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01,"
				// + " t2.MOTIV_INST_FUERA_PLAZO_01 SOLMOTIVINSTFUERAPLAZO01, "
				+ " t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01, t2.USU_MODIF_01 SOLUSUMODIF01, t2.F_ALTA_01 SOLFALTA01,"
				+ " t2.F_MODIF_01 SOLFMODIF01, t2.ID_CUENTA_01 SOLIDCUENTA01, t2.ID_PERFIL_01 SOLIDPERFIL01, t2.ID_DIRECCION_01 SOLIDDIRECCION01,t2.ID_VALORACION_01  SOLIDVALORACION01,t2.ES_DENEGACION_SERVICIO_01 ESDENEGACIONSERVICIO01 ,"
				+ " t3.ID_PERFIL_07 PERFILESIDPERFIL07, t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07, t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07, t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07,"
				+ " t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07, t3.DIS_FISICA_07 PERFILESDISFISICA07, t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07, t3.ENF_MENTAL_07 PERFILESENFMENTAL07,"
				+ " t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07, t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07, t3.F_ALTA_07 PERFILESFALTA07, t3.USU_ALTA_07 PERFILESUSUALTA07, t3.ID_PISO_07 PERFILESIDPISO07, "
				+ " t6.ID_CUENTA_05 CUENTASIDCUENTA05, t6.NUM_CUENTA_05 CUENTASNUMCUENTA05, t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05, t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,"
				+ " t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05,"
				+ " t6.F_ALTA_05 CUENTASFALTA05, t6.USU_ALTA_05 CUENTASUSUALTA05,t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05,"
				+ " t7.ID_ESTADO_30 ESTADOSIDESTADO30, t7.DESCRIPCION_ES_30 ESTADOSDESCES30, t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30,"
				+ " t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06, t8.CALLE_06 DIRECCIONESCALLE06, t8.CP_06 DIRECCIONESCP06, t8.ID_CALLE_06 DIRECCIONESIDCALLE06, t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06,"
				+ " t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06, t8.ID_PAIS_06 DIRECCIONESIDPAIS06, t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06, t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06,"
				+ " t8.LETRA_06 DIRECCIONESLETRA06, t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06, t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06, t8.PAIS_06 DIRECCIONESPAIS06, t8.PISO_06 DIRECCIONESPISO06,"
				+ " t8.PORTAL_06 DIRECCIONESPORTAL06, t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06, t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06,"
				+ " t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06, t8.F_ALTA_06 DIRECCIONESFALTA06, t8.USU_ALTA_06 DIRECCIONESUSUALTA06,"
				+ " t11.ID_INTEROP_19 INTEROPIDINTEROP19, t11.CODRESUL_CON_DGP_19 INTEROPCODRESULCONDGP19 , t11.RESUL_CON_DGP_19 INTEROPRESULCONDGP19,"
				+ " t11.CODRESUL_CON_PADRON_19 INTEROPCODRESULCONPADRON19, t11.RESUL_CON_PADRON_19 INTEROPRESULCONPADRON19, t11.CODRESUL_CON_IRPF_19 INTEROPCODRESULCONIRPF19, t11.RESUL_CON_IRPF_19 INTEROPRESULCONIRPF19, t11.CODRESUL_CON_IMSERSO_19 INTEROPCODRESULCONIMSERSO19, t11.RESUL_CON_IMSERSO_19 INTEROPRESULCONIMSERSO19, t11.CODRESUL_CON_CONYU_IRPF_19 INTEROPCODRESULCONCONYUIRPF19, t11.RESUL_CON_CONYU_IRPF_19 INTEROPRESULCONCONYUIRPF19, t11.CODRESUL_DISCAPA_19 INTEROPCODRESULDISCAPA19, t11.RESUL_DISCAPA_19 INTEROPRESULDISCAPA19,"
				+ " t11.DATOS_RETORNO_DGP_19 INTEROPDATOSRETORNODGP19,"

				+ " t8_2.ID_DIRECCION_06 DIRECCIONESNOTIDDIRECCION06, t8_2.CALLE_06 DIRECCIONESNOTCALLE06, t8_2.CP_06 DIRECCIONESNOTCP06, t8_2.ID_CALLE_06 DIRECCIONESNOTIDCALLE06, t8_2.ID_LOCALIDAD_06 DIRECCIONESNOTIDLOCALIDAD06,"
				+ " t8_2.ID_MUNICIPIO_06 DIRECCIONESNOTIDMUNICIPIO06, t8_2.ID_PAIS_06 DIRECCIONESNOTIDPAIS06, t8_2.ID_PORTAL_06 DIRECCIONESNOTIDPORTAL06, t8_2.ID_PROVINCIA_06 DIRECCIONESNOTIDPROVINCIA06,"
				+ " t8_2.LETRA_06 DIRECCIONESNOTLETRA06, t8_2.LOCALIDAD_06 DIRECCIONESNOTLOCALIDAD06, t8_2.MUNICIPIO_06 DIRECCIONESNOTMUNICIPIO06, t8_2.PAIS_06 DIRECCIONESNOTPAIS06, t8_2.PISO_06 DIRECCIONESNOTPISO06,"
				+ " t8_2.PORTAL_06 DIRECCIONESNOTPORTAL06, t8_2.ESCALERA_06 DIRECCIONESNOTESCALERA06, t8_2.PROVINCIA_06 DIRECCIONESNOTPROVINCIA06, t8_2.ID_SOLICITANTE_06 DIRECCIONESNOTIDSOLICITANTE06,"
				+ " t8_2.USU_HISTORICO_06 DIRECCIONESNOTUSUHISTORICO06, t8_2.F_HISTORICO_06 DIRECCIONESNOTFHISTORICO06, t8_2.F_ALTA_06 DIRECCIONESNOTFALTA06, t8_2.USU_ALTA_06 DIRECCIONESNOTUSUALTA06, "

				+ " t12.id_dependencia_04 IDDEPENDENCIA04,t12.id_grado_dependencia_04 IDGRADODEPENDENCIA04,t12.f_resolucion_04 FRESOLUCION04, t12.baremo_04 BAREMO_04, t12.desc_otra_dependencia_04 DESCOTRADEPENDENCIA04, t13.id_discapacidad_71 IDDISCAPACIDAD71 ,t13.desc_discapacidad_71 DESCDISCAPACIDAD71, t13.discapacidad_fisica_71 DISCAPACIDADFISICA71, t13.DISCAPACIDAD_INTELECTO_71 DISCAPACIDADINTELECTO71, t13.DISCAPACIDAD_SENSORIAL_71 DISCAPACIDADSENSORIAL71, "

				+ " t14.F_INSTALACION_52 FINSTALACION52, t14.MOTIV_INST_FUERA_PLAZO_52 MOTIVINSTFUERAPLAZO52"

				+ " FROM EXPEDIENTES t1 , SOLICITANTES t2 , PERFILES t3 , CUENTAS t6 , ESTADOS t7 , DIRECCIONES t8 , DATOS_INTEROP t11 , DIRECCIONES t8_2, DEPENDENCIA t12, DISCAPACIDAD t13, INSTALACIONES t14"
				+ " WHERE t1.ID_SOLICITANTE_00 = ?   AND t1.ID_SOLICITANTE_00= t2.ID_SOLICITANTE_01(+) AND t1.ID_PERFIL_00= t3.ID_PERFIL_07(+) AND t1.ID_CUENTA_00= t6.ID_CUENTA_05(+) AND t1.ID_ESTADO_00= t7.ID_ESTADO_30(+) "
				+ " AND t1.ID_DIRECCION_00= t8.ID_DIRECCION_06(+) AND t1.ID_EXPEDIENTE_00 = t11.ID_EXPEDIENTE_19(+) AND t1.ID_DIRECCION_NOTIF_00= t8_2.ID_DIRECCION_06(+) "
				+ " AND t1.ID_EXPEDIENTE_00 = t12.ID_EXPEDIENTE_04(+) AND t12.F_HISTORICO_04 IS NULL AND t1.ID_EXPEDIENTE_00 = t13.ID_EXPEDIENTE_71(+) AND t13.F_HISTORICO_71 IS NULL"
				+ " AND (t12.f_alta_04 = (select max(ss1.f_alta_04) from dependencia ss1 where ss1.id_expediente_04 = t1.ID_EXPEDIENTE_00)  OR t12.f_alta_04 IS NULL) "
				+ " AND t1.ID_SOLICITANTE_00 = t14.ID_SOLICITANTE_52(+) AND t14.F_HISTORICO_52 IS NULL "
				+ " ORDER BY t1.F_ALTA_00 DESC";

		List<Expedientes> expedientesList = this.jdbcTemplate.query(query, this.rwMapFind,
				filterExpedientes.getSolicitantes().getIdSolicitante01());

		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		if (!expedientesList.isEmpty()) {
			return expedientesList.get(0);
		}

		return null;
//		return (Expedientes) DataAccessUtils.uniqueResult(expedientesList);
	}

	/**
	 * Actualiza la urgencia del expediente de la entrada
	 * 
	 * @param BandejaPapel0
	 */
	public void updateUrgenciaExpedientebyNumRegistro(BandejaPapel0 bandejaPapel0) {
		String query = "UPDATE EXPEDIENTES SET URGENCIA_00=?, F_MODIF_00=SYSDATE, USU_MODIF_00=? WHERE NUM_REGISTRO_00=?";
		this.jdbcTemplate.update(query, bandejaPapel0.getUrgencia12(), bandejaPapel0.getUsuModif12(),
				bandejaPapel0.getNumRegistro12());
	}

	@Override
	public void updateUrgenciaExpedientebyId(BandejaTelematica bandejaTelematica) {
		String query = "UPDATE EXPEDIENTES SET URGENCIA_00=?, F_MODIF_00=SYSDATE, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";
		this.jdbcTemplate.update(query, bandejaTelematica.getUrgencia14(), bandejaTelematica.getUsuModif14(),
				bandejaTelematica.getExpediente().getIdExpediente00());

	}

	@Override
	public List<Expedientes> findBanedejaAllLike(Expedientes filterExpedientes, TableRequestDto tableRequestDto,
			boolean startsWith) {

		try {
			Ad74aDataBaseAudit.identificarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}

		StringBuilder query = new StringBuilder(
				"SELECT  t1.ID_EXPEDIENTE_00 IDEXPEDIENTE00,t1.FOLDER_ID_00 FOLDERID00,t1.F_REGISTRO_00 FREGISTRO00,t1.NUM_REGISTRO_00 NUMREGISTRO00,t1.F_REGISTRO_OTRO_00 FREGISTROOTRO00,t1.NUM_REGISTRO_OTRO_00 NUMREGISTROOTRO00,t1.F_RECEPCION_00 FRECEPCION00,t1.F_APERTURA_EXP_00 FAPERTURAEXP00,t1.F_CIERRE_00 FCIERRE00,t1.F_ARCHIVO_00 FARCHIVO00,t1.F_DESISTIMIENTO_00 FDESISTIMIENTO00,t1.F_RESOL_DESIS_00 FRESOLDESIS00, t1.ID_TIPO_ENTRADA_00 IDTIPOENTRADA00,t1.NUM_EXPEDIENTE_00 NUMEXPEDIENTE00,t1.ID_TIPO_NOT_00 IDTIPONOT00,t1.CANAL_NOT_00 CANALNOT00,t1.EMAIL_NOT_00 EMAILNOT00,t1.TFNO_NOT_00 TFNONOT00,t1.IDIOMA_NOT_00 IDIOMANOT00,t1.ID_PROCEDIMIENTO_00 IDPROCEDIMIENTO00,t1.DE_OFICIO_00 DEOFICIO00,t1.URGENCIA_00 URGENCIA00,t1.RAZON_URGENCIA_00 RAZONURGENCIA00,t1.CODIGO_SGA_00 CODIGOSGA00,t1.PRESENTA_SOL_00 PRESENTASOL00,t1.SE_OPONE_00 SEOPONE00,t1.NOMBRE_CON_00 NOMBRECON00,t1.APELLIDO1_CON_00 APELLIDO1CON00,t1.APELLIDO2_CON_00 APELLIDO2CON00,t1.AUTORIZACION_CON_00 AUTORIZACIONCON00,t1.IDENTIFICADOR_CON_00 IDENTIFICADORCON00,t1.TIPO_IDEN_CON_00 TIPOIDENCON00,t1.EXENCION_SOL_00 EXENCIONSOL00, t1.EXENCION_RES_00 EXENCIONRES00, t1.F_BAJA_00 FBAJA00,t1.ID_MOTIVO_BAJA_00 IDMOTIVOBAJA00,t1.OBSERVACIONES_00 OBSERVACIONES00,t1.EXISTE_INSTALACION_00 EXISTEINSTALACION00,t1.ERROR_EXPEDIENTE_00 ERROREXPEDIENTE00, t1.IDIOMA_SERVICIO_00 IDIOMASERVICIO00, t1.TECNICO_EXPEDIENTE_00 TECNICOEXPEDIENTE00, t1.TIPO_REP_00 TIPOREP00, t1.TIPO_IDENTIFICADOR_REP_00 TIPOIDENTIFICADORREP00, t1.IDENTIFICADOR_REP_00 IDENTIFICADORREP00, t1.NOMBRE_REP_00 NOMBREREP00, t1.APELLIDO1_REP_00 APELLIDO1REP00, t1.APELLIDO2_REP_00 APELLIDO2REP00, t1.SEXO_REP_00 SEXOREP00, t1.RAZON_SOCIAL_REP_00 RAZONSOCIALREP00, t1.CONTACTO_INST_REP_00 CONTACTOINSTREP00, t1.ID_DIRECCION_NOTIF_00 IDDIRECCIONNOTIF00, t1.AUTORIZA_CONSULTA_00 AUTORIZACONSULTA00, t1.AUTORIZA_DAR_INFO_00 AUTORIZADARINFO00, t1.TIPO_DESIS_00 TIPODESIS00, t1.EXONERACION_RES_00 EXONERACIONRES00, t1.ESTADO_NOTIFICACION_00 ESTADONOTIFICACION00, t1.RESULTADO_ESTUDIO_00 RESULTADOESTUDIO00, t1.F_RESOLUCION_00 FRESOLUCION00, t1.PRECIO_FINAL_00 PRECIOFINAL00, t1.DOCUMENTACION_00 DOCUMENTACION00, t1.MOTIVO_INFORME_00 MOTIVOINFORME00, t1.ORIGEN_OFICIO_00 ORIGENOFICIO00, t1.USU_ALTA_00 USUALTA00,t1.USU_MODIF_00 USUMODIF00,t1.F_ALTA_00 FALTA00,t1.F_MODIF_00 FMODIF00,t1.ES_DENEGACION_SERVICIO_00 ESDENEGACIONSERVICIO00, t1.PDTE_SOLICITAR_PADRON_00 PDTESOLICITARPADRON00");
		query.append(
				",t2.ID_SOLICITANTE_01 SOLIDSOLICITANTE01,t2.TIPO_IDENTIFICADOR_01 SOLTIPOIDENTIFICADOR01,t2.IDENTIFICADOR_01 SOLIDENTIFICADOR01,t2.NOMBRE_01 SOLNOMBRE01,t2.APELLIDO1_01 SOLAPELLIDO101,t2.APELLIDO2_01 SOLAPELLIDO201,t2.SEXO_01 SOLSEXO01,t2.F_NACIMIENTO_01 SOLFNACIMIENTO01,t2.NUMSS_01 SOLNUMSS01,t2.NUMTIS_01 SOLNUMTIS01,t2.F_ALTA_TELEASISTENCIA_01 SOLFALTATELEASISTENCIA01,t2.BENEFICIARIO_01 SOLBENEFICIARIO01,t2.F_BENEFICIARIO_01 SOLFBENEFICIARIO01,t2.F_BAJA_01 SOLFBAJA01,t2.F_INICIO_01 SOLFINICIO01,t2.NUM_ABONADO_01 SOLNUMABONADO01,t2.OBSERVACIONES_01 SOLOBSERVACIONES01,t2.NO_REINTENTAR_01 SOLNOREINTENTAR01,t2.IDIOMA_SERVICIO_01 SOLIDIOMASERVICIO01, t2.IDIOMA_SOLICITANTE_01 SOLIDIOMASOLICITANTE01, t2.OTRO_IDIOMA_01 SOLOTROIDIOMA01, t2.TLFNO_SERVICIO_01 SOLTLFNOSERVICIO01, t2.TLFNO_MOVIL_01 SOLTLFNOMOVIL01, t2.EMAIL_01 SOLEMAIL01, t2.TIPO_BENEFICIARIO_01 SOLTIPOBENEFICIARIO01, t2.F_RETIRADA_01 SOLFRETIRADA01, t2.MANTENER_INST_01 SOLMANTENERINST01, t2.EXENCION_01 SOLEXENCION01, t2.EXONERACION_01 SOLEXONERACION01, t2.INSTALADO_01 SOLINSTALADO01, t2.ID_MOTIVO_BAJA_01 SOLIDMOTIVOBAJA01, t2.USU_ALTA_01 SOLUSUALTA01,t2.USU_MODIF_01 SOLUSUMODIF01,t2.F_ALTA_01 SOLFALTA01,t2.F_MODIF_01 SOLFMODIF01,t2.ES_DENEGACION_SERVICIO_01 ESDENEGACIONSERVICIO01,t2.ID_CUENTA_01 SOLIDCUENTA01,t2.ID_PERFIL_01 SOLIDPERFIL01,t2.ID_DIRECCION_01 SOLIDDIRECCION01,t2.ID_VALORACION_01 SOLIDVALORACION01 ");
		query.append(
				",t3.ID_PERFIL_07 PERFILESIDPERFIL07,t3.MAYOR_65_DEP_07 PERFILESMAYOR65DEP07,t3.MAYOR_65_RIESGO_DEP_07 PERFILESMAYOR65RIESGODEP07,t3.MAYOR_75_SOLA_07 PERFILESMAYOR75SOLA07,t3.DIS_INTELECTUAL_07 PERFILESDISINTELECTUAL07,t3.DIS_FISICA_07 PERFILESDISFISICA07,t3.DIS_SENSORIAL_07 PERFILESDISSENSORIAL07,t3.ENF_MENTAL_07 PERFILESENFMENTAL07,t3.RIESGO_AISLAMIENTO_07 PERFILESRIESGOAISLAMIENTO07,t3.PISO_TUTELADO_07 PERFILESPISOTUTELADO07,t3.F_ALTA_07 PERFILESFALTA07,t3.USU_ALTA_07 PERFILESUSUALTA07,t3.ID_PISO_07 PERFILESIDPISO07");
		query.append(
				",t6.ID_CUENTA_05 CUENTASIDCUENTA05,t6.NUM_CUENTA_05 CUENTASNUMCUENTA05,t6.COD_TIPO_IDEN_TITULAR_05 CUENTASCODTIPOIDENTITULAR05,t6.IDEN_TITULAR_05 CUENTASIDENTITULAR05,t6.ID_SOLICITANTE_05 CUENTASIDSOLICITANTE05, t6.USU_HISTORICO_05 CUENTASUSUHISTORICO05, t6.F_HISTORICO_05 CUENTASFHISTORICO05,t6.F_ALTA_05 CUENTASFALTA05,t6.USU_ALTA_05 CUENTASUSUALTA05,t6.NOMBRE_TIT_CUENTA_05 NOMBRETITCUENTA05, t6.APELLIDO1_TIT_CUENTA_05 APELLIDO1TITCUENTA05, t6.APELLIDO2_TIT_CUENTA_05 APELLIDO2TITCUENTA05");
		query.append(
				",t7.ID_ESTADO_30 ESTADOSIDESTADO30,t7.DESCRIPCION_ES_30 ESTADOSDESCES30,t7.DESCRIPCION_EU_30 ESTADOSDESCEU30, t7.ORDEN_30 ORDEN30, t7.VISIBLE_30 VISIBLE30");
		query.append(
				",t8.ID_DIRECCION_06 DIRECCIONESIDDIRECCION06,t8.CALLE_06 DIRECCIONESCALLE06,t8.CP_06 DIRECCIONESCP06,t8.ID_CALLE_06 DIRECCIONESIDCALLE06,t8.ID_LOCALIDAD_06 DIRECCIONESIDLOCALIDAD06,t8.ID_MUNICIPIO_06 DIRECCIONESIDMUNICIPIO06,t8.ID_PAIS_06 DIRECCIONESIDPAIS06,t8.ID_PORTAL_06 DIRECCIONESIDPORTAL06,t8.ID_PROVINCIA_06 DIRECCIONESIDPROVINCIA06,t8.LETRA_06 DIRECCIONESLETRA06,t8.LOCALIDAD_06 DIRECCIONESLOCALIDAD06,t8.MUNICIPIO_06 DIRECCIONESMUNICIPIO06,t8.PAIS_06 DIRECCIONESPAIS06,t8.PISO_06 DIRECCIONESPISO06,t8.PORTAL_06 DIRECCIONESPORTAL06,t8.ESCALERA_06 DIRECCIONESESCALERA06, t8.PROVINCIA_06 DIRECCIONESPROVINCIA06,t8.ID_SOLICITANTE_06 DIRECCIONESIDSOLICITANTE06, t8.USU_HISTORICO_06 DIRECCIONESUSUHISTORICO06, t8.F_HISTORICO_06 DIRECCIONESFHISTORICO06,t8.F_ALTA_06 DIRECCIONESFALTA06,t8.USU_ALTA_06 DIRECCIONESUSUALTA06");
		query.append(
				",t11.ID_INTEROP_19 INTEROPIDINTEROP19, t11.CODRESUL_CON_DGP_19 INTEROPCODRESULCONDGP19 , t11.RESUL_CON_DGP_19 INTEROPRESULCONDGP19  ");
		query.append(" ,t14.F_INSTALACION_52 FINSTALACION52, t14.MOTIV_INST_FUERA_PLAZO_52 MOTIVINSTFUERAPLAZO52 ");

		query.append(" FROM expedientes t1 ");
		query.append(" LEFT JOIN solicitantes t2 ON ( t1.id_solicitante_00 = t2.id_solicitante_01 ) ");
		query.append(" LEFT JOIN perfiles t3 ON ( t1.id_perfil_00 = t3.id_perfil_07 ) ");
		query.append(" LEFT JOIN cuentas t6 ON ( t1.id_cuenta_00 = t6.id_cuenta_05 )");
		query.append(" LEFT JOIN estados t7 ON ( t1.id_estado_00 = t7.id_estado_30 )");
		query.append(" LEFT JOIN direcciones t8 ON ( t1.id_direccion_00 = t8.id_direccion_06 )");
		query.append(
				" LEFT JOIN t17_municipio t9 ON ( t8.id_provincia_06 = t9.provincia_id AND t8.id_municipio_06 = t9.id )");
		query.append(" LEFT JOIN t17_provincia t10 ON ( t8.id_provincia_06 = t10.id )");
		query.append(" LEFT JOIN datos_interop t11 ON ( t1.id_expediente_00 = t11.id_expediente_19 )");
		query.append(
				" LEFT JOIN dependencia t12 ON (t1.id_expediente_00 = t12.id_expediente_04 AND t12.f_historico_04 IS NULL) ");
		query.append(
				" LEFT JOIN discapacidad t13 ON (t1.id_expediente_00 = t13.id_expediente_71 AND t13.f_historico_71 IS NULL) ");

		query.append(
				" LEFT JOIN INSTALACIONES t14 ON (t1.ID_SOLICITANTE_00 = t14.ID_SOLICITANTE_52 AND t14.F_HISTORICO_52 IS NULL) ");

		StringBuilder where = new StringBuilder(" WHERE 1=1 ");

		// Excluir estados que no corresponden
		where.append(" AND t7.ID_ESTADO_30 NOT IN ( ").append(EstadosExpedienteEnum.CERRADO.getId()).append(",")
				.append(EstadosExpedienteEnum.PEND_CERRAR.getId()).append(",")
				.append(EstadosExpedienteEnum.ARCHIVADO.getId()).append(",")
				.append(EstadosExpedienteEnum.PEND_ARCHIVAR.getId()).append(",")
				.append(EstadosExpedienteEnum.TRAMITACION.getId()).append(")");

		// Que sean expedientes abiertos
		where.append(" AND FOLDER_ID_00 is not null");

		// Procedimientos nuevos
		where.append(" AND ID_PROCEDIMIENTO_00 NOT IN ( ?,?,?)");

		List<Object> params = new ArrayList<Object>();

		params.add(ProcedimientosEnum.X87_TEA_1.getId());
		params.add(ProcedimientosEnum.X87_TEA_2.getId());
		params.add(ProcedimientosEnum.X87_TEA_4.getId());

		// folder number
		if (filterExpedientes != null && filterExpedientes.getNumExpediente00() != null) {
			where.append(" AND UPPER(t1.NUM_EXPEDIENTE_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(filterExpedientes.getNumExpediente00().toUpperCase() + "%");
			} else {
				params.add("%" + filterExpedientes.getNumExpediente00().toUpperCase() + "%");
			}
			where.append(" AND t1.NUM_EXPEDIENTE_00 IS NOT NULL");
		}

		// DNI
		if (filterExpedientes != null && filterExpedientes.getSolicitantes() != null
				&& filterExpedientes.getSolicitantes().getIdentificador01() != null) {
			where.append(" AND UPPER(t2.IDENTIFICADOR_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(filterExpedientes.getSolicitantes().getIdentificador01().toUpperCase() + "%");
			} else {
				params.add("%" + filterExpedientes.getSolicitantes().getIdentificador01().toUpperCase() + "%");
			}
			where.append(" AND t2.IDENTIFICADOR_01 IS NOT NULL");
		}

		// NOMBRE
		if (filterExpedientes != null && filterExpedientes.getSolicitantes() != null
				&& filterExpedientes.getSolicitantes().getNombreFilter() != null) {
			where.append(
					" AND (UPPER(nombre_01) || '' || UPPER(apellido1_01) || '' || UPPER(apellido2_01)) like  ?   ESCAPE  '\\'");
			params.add("%" + filterExpedientes.getSolicitantes().getNombreFilter().toUpperCase() + "%");

		}

		// PROCEDIMIENTOS
		if (filterExpedientes != null && filterExpedientes.getIdProcedimiento00() != null) {
			where.append(" AND ID_PROCEDIMIENTO_00 = ? ");
			params.add(filterExpedientes.getIdProcedimiento00());
			where.append(" AND ID_PROCEDIMIENTO_00 IS NOT NULL");
		}

		query.append(where);

		if (tableRequestDto != null) {
			query = TableManager.getPaginationQuery(tableRequestDto, query, ExpedientesDaoImpl.ORDER_BY_WHITE_LIST);
		}

		List<Expedientes> result = (List<Expedientes>) this.jdbcTemplate.query(query.toString(), this.rwMap,
				params.toArray());
		try {
			Ad74aDataBaseAudit.terminarUsuarioAuditor(jdbcTemplate);
		} catch (Exception e) {

		}
		return result;

	}

	@Override
	public Long findBanedejaAllLikeCount(Expedientes filterExpedientes, boolean startsWith) {
		StringBuilder query = new StringBuilder(" SELECT COUNT (*) ");
		query.append(" FROM expedientes t1 ");
		query.append(" LEFT JOIN solicitantes t2 ON ( t1.id_solicitante_00 = t2.id_solicitante_01 ) ");
		query.append(" LEFT JOIN perfiles t3 ON ( t1.id_perfil_00 = t3.id_perfil_07 ) ");
		query.append(" LEFT JOIN cuentas t6 ON ( t1.id_cuenta_00 = t6.id_cuenta_05 )");
		query.append(" LEFT JOIN estados t7 ON ( t1.id_estado_00 = t7.id_estado_30 )");
		query.append(" LEFT JOIN direcciones t8 ON ( t1.id_direccion_00 = t8.id_direccion_06 )");
		query.append(
				" LEFT JOIN t17_municipio t9 ON ( t8.id_provincia_06 = t9.provincia_id AND t8.id_municipio_06 = t9.id )");
		query.append(" LEFT JOIN t17_provincia t10 ON ( t8.id_provincia_06 = t10.id )");
		query.append(" LEFT JOIN datos_interop t11 ON ( t1.id_expediente_00 = t11.id_expediente_19 )");
		query.append(
				" LEFT JOIN dependencia t12 ON (t1.id_expediente_00 = t12.id_expediente_04 AND t12.f_historico_04 IS NULL) ");
		query.append(
				" LEFT JOIN discapacidad t13 ON (t1.id_expediente_00 = t13.id_expediente_71 AND t13.f_historico_71 IS NULL) ");

		query.append(
				" LEFT JOIN INSTALACIONES t14 ON (t1.ID_SOLICITANTE_00 = t14.ID_SOLICITANTE_52 AND t14.F_HISTORICO_52 IS NULL) ");

		StringBuilder where = new StringBuilder(" WHERE 1=1 ");

		// Excluir estados que no corresponden
		where.append(" AND t7.ID_ESTADO_30 NOT IN ( ").append(EstadosExpedienteEnum.CERRADO.getId()).append(",")
				.append(EstadosExpedienteEnum.PEND_CERRAR.getId()).append(",")
				.append(EstadosExpedienteEnum.ARCHIVADO.getId()).append(",")
				.append(EstadosExpedienteEnum.PEND_ARCHIVAR.getId()).append(",")
				.append(EstadosExpedienteEnum.TRAMITACION.getId()).append(")");

		// Que sean expedientes abiertos
		where.append(" AND t1.FOLDER_ID_00 is not null");

		// Procedimientos nuevos
		where.append(" AND t1.ID_PROCEDIMIENTO_00 NOT IN ( ?,?,?)");

		List<Object> params = new ArrayList<Object>();

		params.add(ProcedimientosEnum.X87_TEA_1.getId());
		params.add(ProcedimientosEnum.X87_TEA_2.getId());
		params.add(ProcedimientosEnum.X87_TEA_4.getId());

		// folder number
		if (filterExpedientes != null && filterExpedientes.getNumExpediente00() != null) {
			where.append(" AND UPPER(t1.NUM_EXPEDIENTE_00) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(filterExpedientes.getNumExpediente00().toUpperCase() + "%");
			} else {
				params.add("%" + filterExpedientes.getNumExpediente00().toUpperCase() + "%");
			}
			where.append(" AND t1.NUM_EXPEDIENTE_00 IS NOT NULL");
		}

		// DNI
		if (filterExpedientes != null && filterExpedientes.getSolicitantes() != null
				&& filterExpedientes.getSolicitantes().getIdentificador01() != null) {
			where.append(" AND UPPER(t2.IDENTIFICADOR_01) like ? ESCAPE  '\\'");
			if (startsWith) {
				params.add(filterExpedientes.getSolicitantes().getIdentificador01().toUpperCase() + "%");
			} else {
				params.add("%" + filterExpedientes.getSolicitantes().getIdentificador01().toUpperCase() + "%");
			}
			where.append(" AND t2.IDENTIFICADOR_01 IS NOT NULL");
		}

		// NOMBRE
		if (filterExpedientes != null && filterExpedientes.getSolicitantes() != null
				&& filterExpedientes.getSolicitantes().getNombreFilter() != null) {
			where.append(
					" AND (UPPER(t2.nombre_01) || '' || UPPER(t2.apellido1_01) || '' || UPPER(t2.apellido2_01)) like  ?   ESCAPE  '\\'");
			params.add("%" + filterExpedientes.getSolicitantes().getNombreFilter().toUpperCase() + "%");

		}

		// PROCEDIMIENTOS
		if (filterExpedientes != null && filterExpedientes.getIdProcedimiento00() != null) {
			where.append(" AND t1.ID_PROCEDIMIENTO_00 = ? ");
			params.add(filterExpedientes.getIdProcedimiento00());
			where.append(" AND t1.ID_PROCEDIMIENTO_00 IS NOT NULL");
		}
		query.append(where);
		return this.jdbcTemplate.queryForObject(query.toString(), params.toArray(), Long.class);
	}

	@Override
	public Expedientes updateExisteInstalacion(Expedientes expediente) {
		String usuario = null;
		try {
			usuario = UtilSeguridad.getUsuarioConectado().getUserName();
		} catch (Exception e) {
			usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
		}

		String query = "UPDATE EXPEDIENTES SET EXISTE_INSTALACION_00=? , F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";

		this.jdbcTemplate.update(query, expediente.getExisteInstalacion00(),
				null != expediente.getUsuModif00() ? expediente.getUsuModif00() : usuario,
				expediente.getIdExpediente00());

		return null;
	}

	/**
	 * Recuperar expedientes preparados para archivar
	 **/
	@Transactional(readOnly = true)
	public List<Expedientes> findExpedientesArchivar() {
		// Aquellos expedientes cerrados y pendientes de enviar
		StringBuilder query = new StringBuilder("SELECT ");
		query.append("ID_EXPEDIENTE_00 IDEXPEDIENTE00, NUM_EXPEDIENTE_00 NUMEXPEDIENTE00,");
		query.append("FOLDER_ID_00 FOLDERID00, ARCHIVO_00 ARCHIVO00,ID_ESTADO_00 IDESTADO00");
		query.append(" FROM AD74A00T00");
		query.append(" WHERE ARCHIVO_00=").append(TipoExpedientes.Archivo00.PENDIENTE_ENVIO.getValue());
		query.append(" AND ID_ESTADO_00=10");

		return this.jdbcTemplate.query(query.toString(), this.rwMapArchivo);
	}

	private RowMapper<Expedientes> rwMapArchivo = new RowMapper<Expedientes>() {
		public Expedientes mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			Expedientes exp = new Expedientes();

			exp.setIdExpediente00(resultSet.getBigDecimal("IDEXPEDIENTE00").longValue());
			exp.setNumExpediente00(resultSet.getString("NUMEXPEDIENTE00"));
			exp.setFolderId00(resultSet.getString("FOLDERID00"));
			exp.setArchivo00(resultSet.getString("ARCHIVO00"));

			Estados estado = new Estados();
			estado.setIdEstado30(resultSet.getBigDecimal("IDESTADO00").longValue());
			exp.setEstados(estado);
			return exp;
		}
	};

	/**
	 * Actualiza los datos del paso a archivo del expediente recibido
	 * 
	 * @params Expediente
	 */
	@Override
	public void updateDatosArchivo(Expedientes expediente) {
		StringBuilder query = new StringBuilder();
		query.append("UPDATE AD74A00T00");
		query.append(" SET ARCHIVO_00 = ?, CODIGO_SGA_00 = ?, F_ARCHIVO_00= ?");
		query.append(" WHERE NUM_EXPEDIENTE_00= ?");
		this.jdbcTemplate.update(query.toString(), expediente.getArchivo00(), expediente.getCodigoSga00(),
				expediente.getfArchivo00(), expediente.getNumExpediente00());
	}

	@Override
	public Expedientes updateIdLiquidacion(Expedientes expediente) {
		String usuario = null;
		try {
			usuario = UtilSeguridad.getUsuarioConectado().getUserName();
		} catch (Exception e) {
			usuario = com.ejie.ad74a.constantes.Constantes.COD_APLICACION;
		}

		String query = "UPDATE EXPEDIENTES SET ID_LIQUIDACION_00=? , F_MODIF_00=SYSTIMESTAMP, USU_MODIF_00=? WHERE ID_EXPEDIENTE_00=?";

		this.jdbcTemplate.update(query, expediente.getIdLiquidacion00(),
				null != expediente.getUsuModif00() ? expediente.getUsuModif00() : usuario,
				expediente.getIdExpediente00());

		return null;
	}

	/**
	 * Actualiza los datos del cierre
	 * 
	 * @params Expediente
	 */
	@Override
	public void updatePendienteEnvioArchivo(Expedientes expediente) {
		StringBuilder query = new StringBuilder();
		query.append("UPDATE AD74A00T00");
		query.append(" SET ARCHIVO_00 = ").append(TipoExpedientes.Archivo00.PENDIENTE_ENVIO.getValue());
		query.append(" WHERE NUM_EXPEDIENTE_00= ?");
		this.jdbcTemplate.update(query.toString(), expediente.getNumExpediente00());
	}
}
