package tca.manifiesto.impo.dao; import java.util.ArrayList; import java.util.List; import javax.annotation.PostConstruct; import javax.sql.DataSource; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport; import org.springframework.stereotype.Repository; import tca.manifiesto.impo.domain.ManifiestoCabecera; import tca.manifiesto.impo.domain.ManifiestoDTO; import tca.manifiesto.impo.domain.ManifiestoDetalle; import tca.manifiesto.impo.domain.StkAvisoCamara; import tca.manifiesto.impo.domain.WitAduana; import tca.manifiesto.impo.domain.WitLugareOperativo; import tca.manifiesto.impo.mapper.ManifiestoCabeceraMapper; import tca.manifiesto.impo.mapper.ManifiestoDTOMapper; import tca.manifiesto.impo.mapper.ManifiestoDetalleMapper; import tca.manifiesto.impo.mapper.StkAvisoCamaraMapper; import tca.manifiesto.impo.mapper.WitAduanaMapper; import tca.manifiesto.impo.mapper.WitLugareOperativoMapper; import tca.manifiesto.impo.mapper.TCAParametrosMapper; import tca.manifiesto.impo.domain.TCAParametros; @SuppressWarnings("deprecation") @Repository public class ManifiestoDaoJdbcImpl extends SimpleJdbcDaoSupport implements ManifiestoDaoJdbc { Logger logg = Logger.getLogger(ManifiestoDaoJdbcImpl.class); @Autowired public ManifiestoDaoJdbcImpl(DataSource dataSource) { setDataSource(dataSource); } @PostConstruct void init() { } private int getValorDiasManiTCAParametros(String parametro){ logger.info("*** getValorDiasManiTCAParametros ***"); try{ String q="select * from tca_parametros_apps where parametro = '"+parametro+"'"; List r = getSimpleJdbcTemplate().query(q,new TCAParametrosMapper()); int ret = Integer.parseInt(r.get(0).getValor()); logger.info("*** PARAMETRO ***"+parametro); logger.info("*** dias cargados correctamente. Valor: ***"+ret); return ret; } catch(Exception e){ //arbitrariamente en caso de error, retornamos 12 dias logger.info("***getValorDiasManiTCAParametros: NO SE PUDO OBTENER LOS DIAS DESDE LA DB ***"); return 12; } } private boolean getValorOcultarTerrestres(String parametro){ logger.info("*** getValorOcultarTerrestres ***"); //1 = Habilitado (Oculta los vuelos) //0 = Deshabilitado (Muestra los vuelos) try{ String q="select * from tca_parametros_apps where parametro = '"+parametro+"'"; List r = getSimpleJdbcTemplate().query(q,new TCAParametrosMapper()); int ret = Integer.parseInt(r.get(0).getValor()); logger.info("*** PARAMETRO ***"+parametro); logger.info("*** valor oculto cargado correctamente. Valor: ***"+ret); return ret == 1; } catch(Exception e){ //arbitrariamente en caso de error, retornamos true logger.info("***getValorOcultarTerrestres: NO SE PUDO OBTENER EL VALOR DESDE LA DB ***"); return true; } } private String getValorCodVuelosOcultar(String parametro){ logger.info("*** getValorCodVuelosOcultar ***"); try{ String q="select * from tca_parametros_apps where parametro = '"+parametro+"'"; List r = getSimpleJdbcTemplate().query(q,new TCAParametrosMapper()); String ret = r.get(0).getValor(); logger.info("*** PARAMETRO ***"+parametro); logger.info("*** Cod. Vuelos cargados correctamente. Valor: \n"+ret+"***"); return ret; } catch(Exception e){ //arbitrariamente en caso de error, retornamos "" logger.info("***getValorCodVuelosOcultar: NO SE PUDO OBTENER EL VALOR DESDE LA DB ***"); return ""; } } public List getAduanas() { logger.info("*** public List getAduanas() ***"); String queryAduanas = "SELECT * " + "FROM WIT_ADUANAS " + "WHERE NM_HABILITADO = 1"; logger.info("query: "+ queryAduanas); List aduanas = getSimpleJdbcTemplate().query(queryAduanas,new WitAduanaMapper()); logger.info("*** Fin getAduanas() ***"); return aduanas; } public Boolean marcaImpreso(String manifiesto) { logger.info("*** public Boolean marcaImpreso(String manifiesto) ***"); String sql = "UPDATE SIDIN " + "SET MIMPRESION = 1 " + "WHERE SUBSTR(SIDIN.NANIO,3,2) || SIDIN.CADUANA || SIDIN.CTPDOCING || SIDIN.NREG || SIDIN.DLETRA = ?"; logger.info("query: "+ sql); int result = getSimpleJdbcTemplate().update(sql, manifiesto); if(result > 0){ logger.info("*** Fin marcaImpreso() ***"); return true; }else{ logger.info("*** Fin marcaImpreso() ***"); return false; } } public WitAduana getAduana(String codAduana) { logger.info("*** public WitAduana getAduana(String codAduana)***"); String sql = "SELECT * " + "FROM WIT_ADUANAS " + "WHERE NM_HABILITADO = 1 " + "AND COD_ADUANA = ?"; logger.info("query: "+ sql); WitAduana aduana = getSimpleJdbcTemplate().queryForObject(sql,new WitAduanaMapper(),codAduana); logger.info("*** Fin getAduana() ***"); return aduana; } public List getLugarOperativo(String codAduana) { logger.info("*** public List getLugarOperativo(String codAduana)***"); String sql = "SELECT DISTINCT SD_ADUANA_PAIS, SD_LUGAR_OPERATIVO, SD_DESCRIPCION, SD_CODIGO FROM WIT_LUGAR_OPER_REFERENCIAL WHERE SD_ADUANA_PAIS = ? AND SD_LUGAR_OPERATIVO != ' '"; logger.info("query: "+ sql); List lugaresOperativos = getSimpleJdbcTemplate().query(sql,new WitLugareOperativoMapper(), codAduana); logger.info("*** Fin getLugarOperativo() ***"); return lugaresOperativos; } public List getManifiestos(String codAduana,String lugarOperativo) { logger.info("*** public List getLugarOperativo(String codAduana)***"); String sql = "SELECT DISTINCT MAX(TO_CHAR(H_FECHA_ALTA,'yyyy/mm/dd hh24:mi:ss')) AS H_FECHA_ALTA," + " WSUM.DS_INDICADORTRANSPORTEVACIO," + " WSUM.DS_INDICADORMERCADERIABORDO," + " WSUM.DS_CODIGOADUANAREGISTRO," + " WSUM.DS_LUGAROPERATIVO," + " DS_PAISTRANSPORTISTA," + " PT.DPAIS AS PAIS_TRANSP," + " DS_PAISMEDIOTRANSPORTE," + " PM.DPAIS AS PAIS_MTRANSP," + " DS_PAISPROCEDENCIA," + " WSUM.DS_NOMBRETRANSPORTISTA," + " DS_MATRICULAMEDIOTRANSPORTE," + " WSUM.DS_NOMBRE_HABILITADO," + " WSUM.DS_IDENTIFICADOR," + " WVUE.NUMERO_VUELO," + " DECODE(SIDIN.MIMPRESION,NULL,'NO',0,'NO',1,'SI') AS MIMPRESION" + " FROM WIT_SLSUMARIABASES WSUM, DOM_PAISES PT, DOM_PAISES PP , DOM_PAISES PM, SIDIN, WIT_SLSUMARIANROVUELO WVUE" + " WHERE WSUM.DS_PAISTRANSPORTISTA = PT.CPAISMARIA"; boolean ocultarTerrestres = getValorOcultarTerrestres("parametro.ocultar.terrestres"); String codVuelosOcultar = getValorCodVuelosOcultar("parametro.cod.vuelos.ocultar"); if (ocultarTerrestres && codVuelosOcultar != null && !codVuelosOcultar.isEmpty()) { codVuelosOcultar = codVuelosOcultar.toUpperCase(); sql += " AND (WVUE.NUMERO_VUELO NOT IN (" +codVuelosOcultar+ ") OR WVUE.NUMERO_VUELO IS NULL)"; logger.info("getValorOcultarTerrestres: Es true"); } sql += " AND WSUM.DS_IDENTIFICADOR = SUBSTR(SIDIN.NANIO,3,2) || SIDIN.CADUANA || SIDIN.CTPDOCING || SIDIN.NREG || SIDIN.DLETRA" + " AND DS_PAISMEDIOTRANSPORTE = PM.CPAISMARIA" + " AND WVUE.DS_IDENTIFICADOR(+) = WSUM.DS_IDENTIFICADOR" + " AND DS_PAISPROCEDENCIA = PP.CPAISMARIA" + " AND PP.CSTATUS = 'A' AND PM.CSTATUS = 'A' AND PT.CSTATUS = 'A'" + " AND WSUM.DS_LUGAROPERATIVO = ?" + " AND WSUM.DS_CODIGOADUANAREGISTRO = ?" + " AND WSUM.DS_IDENTIFICADOR IN" + " (SELECT SUBSTR(SIDIN.NANIO,3,2) || SIDIN.CADUANA || SIDIN.CTPDOCING || SIDIN.NREG || SIDIN.DLETRA" + " FROM SIING , SIDIN, SIGUI" + " WHERE SIING.CESTADO = 'S'" + " AND SIDIN.CREGISTRO = SIING.CREGISTRO" + " AND SIDIN.CREGISTRO = SIGUI.CREGISTRO" + " AND SIGUI.CINT_GUIA = SIING.CINT_ING" + " AND (SIGUI.CTRANS <> 'CCC' AND SIGUI.CTRANS <> 'XXX')" + " AND SIDIN.FHRECEPCION >= SYSDATE - " + getValorDiasManiTCAParametros("parametro.antiguedad.manifiestos") + ")" + " GROUP BY" + " WSUM.DS_INDICADORTRANSPORTEVACIO," + " WSUM.DS_INDICADORMERCADERIABORDO," + " WSUM.DS_CODIGOADUANAREGISTRO," + " WSUM.DS_LUGAROPERATIVO," + " DS_PAISTRANSPORTISTA," + " PT.DPAIS," + " DS_PAISMEDIOTRANSPORTE," + " PM.DPAIS," + " DS_PAISPROCEDENCIA," + " WSUM.DS_NOMBRETRANSPORTISTA," + " DS_MATRICULAMEDIOTRANSPORTE," + " WSUM.DS_NOMBRE_HABILITADO," + " WSUM.DS_IDENTIFICADOR," + " WVUE.NUMERO_VUELO," + " DECODE(SIDIN.MIMPRESION,NULL,'NO',0,'NO',1,'SI')" + " ORDER BY 1 DESC"; logger.info("query: "+ sql); List manifiestoDTOList = new ArrayList(); try{ manifiestoDTOList = getSimpleJdbcTemplate().query(sql,new ManifiestoDTOMapper(), lugarOperativo,codAduana ); } catch(Exception e){ logger.info("***getManifiestos: Error al obtener la lista de manis ***"); } logger.info("*** Fin getManifiestos() ***"); return manifiestoDTOList; } public List getListadoGuiasConAvisoCamara() { logger.info("*** public List getListadoGuiasConAvisoCamara() ***"); String sql_guias_camara = "SELECT ID, " + "NOMBRE, " + "NUMERO_GUIA, " + "FECHA_ESTIMADA_ARRIBO, " + "PREFIJO_GUIA, " + "USUARIO, " + "H_FECHA_MODIFICACION, " + "IMPORTADOR, " + "PREFIJO_GUIA_H, " + "NUMERO_GUIA_H, " + " H_FECHA_ALTA, " + "APELLIDO, " + "TELEFONO, " + "EMAIL, " + "BULTOS_GRADOS_ENTRE_15_25, " + "BULTOS_GRADOS_ENTRE_2_8, " + "BULTOS_GRADOS_MENOS_20, " + "BULTOS, " + "NOMBRE_IMPORTADOR, " + "BULTOS_AMBIENTE, " + "ESTADO, " + "SGUIA, " + "SDCTOING, " + "VUELO, " + "OBSERVACION " + "FROM STK_AVISO_CAMARA sac " + "WHERE H_FECHA_ALTA >= SYSDATE - " + getValorDiasManiTCAParametros("parametro.antiguedad.manifiestos") + "AND ESTADO < 2 " + "AND H_FECHA_MODIFICACION = (select max(H_FECHA_MODIFICACION) from STK_AVISO_CAMARA sac1 " + "WHERE sac1.NUMERO_GUIA=sac.NUMERO_GUIA)"; logger.info("query: "+ sql_guias_camara); List stkAvisoCamaraList = getSimpleJdbcTemplate().query(sql_guias_camara,new StkAvisoCamaraMapper()); return stkAvisoCamaraList; } public List getCabeceraDetalleManifiesto(String manifiesto){ logger.info("*** public List getCabeceraDetalleManifiesto(String manifiesto)***"); String sql_cabecera = "SELECT DISTINCT " + "WSUM.H_FECHA_ALTA AS FECHA, " + "WSUM.DS_INDICADORTRANSPORTEVACIO AS TRANSVACIO, " + "WSUM.DS_INDICADORMERCADERIABORDO AS MERCADERIABORDO, " + "DS_PAISTRANSPORTISTA AS COD_PAIS_TRANSP, " + "PT.DPAIS AS PAIS_TRANSP, " + "DS_PAISMEDIOTRANSPORTE COD_PAIS_NACIONALIDAD, " + "PM.DPAIS AS NACIONALIDAD, " + "DS_PAISPROCEDENCIA AS COD_PAIS_PROCEDENCIA, " + "NUMERO_VUELO AS NUMERO_VUELO, " + "PP.DPAIS AS PAIS_PROCEDENCIA, " + "WSUM.DS_NOMBRETRANSPORTISTA AS NOMBRE_TRANSP, " + "WSUM.DS_MATRICULAMEDIOTRANSPORTE AS MATRICULA, " + "WSUM.DS_NOMBRE_HABILITADO AS NOMBRE_HAB, " + "SUBSTR(wsum.DS_IDENTIFICADOR,0,2) AS ANIO, " + "SUBSTR(wsum.DS_IDENTIFICADOR,3,3) AS ADUANA, " + "SUBSTR(wsum.DS_IDENTIFICADOR,6,4) AS MANI, " + "SUBSTR(wsum.DS_IDENTIFICADOR,10,6) AS NUMERO, " + "SUBSTR(wsum.DS_IDENTIFICADOR,16,1) AS LETRA " + "FROM WIT_SLSUMARIABASES WSUM, " + "DOM_PAISES PT, " + "DOM_PAISES PP, " + "DOM_PAISES PM, " + "WIT_SLTITULOBASES STIT, " + "WIT_SLSUMARIANROVUELO WVUE " + "WHERE WSUM.DS_PAISTRANSPORTISTA = PT.CPAISMARIA " + "AND DS_PAISMEDIOTRANSPORTE = PM.CPAISMARIA " + "AND DS_PAISPROCEDENCIA = PP.CPAISMARIA " + "AND WVUE.DS_IDENTIFICADOR (+) = WSUM.DS_IDENTIFICADOR " + "AND PP.CSTATUS = 'A' " + "AND PM.CSTATUS = 'A' " + "AND PT.CSTATUS = 'A' " + "AND SUBSTR(STIT.IDS_IDENTIFICADORTITULO,-16) = WSUM.DS_IDENTIFICADOR " + "AND WSUM.DS_IDENTIFICADOR = ? "; logger.info("query: "+ sql_cabecera); List manifiestoCabList = getSimpleJdbcTemplate().query(sql_cabecera,new ManifiestoCabeceraMapper(), manifiesto ); String sql_detalle = "SELECT DISTINCT " + "WSUM.DS_IDENTIFICADOR AS MANIFIESTO, " + "SMER.NQ_CANTIDADPARCIAL AS CANTIDAD_PARCIAL, " + "SMER.DS_COMENTARIO AS COMENTARIO, " + "SMER.DS_TIPOMERCADERIA AS NATURALEZA, " + "STIT.DS_PUERTO AS PREFIJO, " + "STIT.DS_CARTAPORTE AS NUMERO, " + "STIT.DS_DESTINATARIOMERCADERIA AS DESTINATARIO, " + "STIT.DS_INDICCONSOLIDADO AS MARCA_CONSOLIDADO, " + "STIT.DS_INDICTRANSITOTRANSBORDO AS TRANSITO, " + "SMER.NN_PESOVOLUMENMANIFIESTO AS PESO, " + "SMER.NQ_CANTIDADTOTALMERCADERIA AS CANTIDAD_TOTAL " + "FROM WIT_SLSUMARIABASES WSUM, " + "WIT_SLTITULOBASES STIT, " + "WIT_SLLINEAMERCADERIAS SMER " + "WHERE STIT.IDS_IDENTIFICADORTITULO = SMER.DS_IDENTIFICADORTITULO " + "AND SUBSTR(STIT.IDS_IDENTIFICADORTITULO,-16) = WSUM.DS_IDENTIFICADOR " + "AND WSUM.DS_IDENTIFICADOR = ? " + "ORDER BY SUBSTR(STIT.DS_CARTAPORTE,LENGTH(STIT.DS_CARTAPORTE)) "; logger.info("query: "+ sql_detalle); List manifiestoDetList = getSimpleJdbcTemplate().query(sql_detalle,new ManifiestoDetalleMapper(), manifiesto ); for(ManifiestoCabecera m : manifiestoCabList ){ m.setManifiestoDetalleList(manifiestoDetList); } logger.info("*** Fin getCabeceraDetalleManifiesto() ***"); return manifiestoCabList; } }