maia_modificado/.svn/pristine/c8/c85b63ed489789999d429a81501...

293 lines
17 KiB
Plaintext
Executable File

package com.fp.armas.rules.query.webservices;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Query;
import com.fp.armas.rules.query.webservices.util.InstitucionSnapEnum;
import com.fp.common.logger.APPLogger;
import com.fp.dto.query.QueryRequest;
import com.fp.dto.rules.QueryRule;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.commondb.helper.FormatDates;
import com.fp.persistence.parmas.dto.ws.DatosSnapDto;
import com.fp.persistence.parmas.dto.ws.InfoGuardiaDto;
import com.fp.persistence.parmas.dto.ws.TramiteDto;
import com.fp.persistence.parmas.dto.ws.DatosArmaDto;
import com.fp.persistence.parmas.eval.TarmEvaluacion;
import com.fp.persistence.parmas.soli.TarmArmaPruebas;
import com.fp.persistence.parmas.soli.TarmArmas;
import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante;
import com.fp.persistence.parmas.soli.TarmGuardias;
import com.fp.persistence.pcustomer.gene.TcustPersonAddress;
import com.fp.persistence.pcustomer.gene.TcustPersonDetail;
import com.fp.persistence.pcustomer.gene.TcustPersonPhone;
import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail;
import com.fp.persistence.pgeneral.gene.TgeneParameters;
/**
* Componente que realiza la búsquedas de los datos de necesarios para el WS de la SNAP
* @author Manuel Cepeda
*
*/
public class DatosPerson extends QueryRule{
private static final long serialVersionUID = -3993166768741911053L;
/**
* Permite obtener todos los datos necesarios para el WS de SNAP
* @param QueryRequest pRequest
* @return QueryRequest
*/
@SuppressWarnings("unchecked")
@Override
public QueryRequest process(QueryRequest pRequest) throws Exception {
Query query;
try {
DatosSnapDto personaSnapDto = new DatosSnapDto();
query = PersistenceHelper.getEntityManager().createQuery("select p from TgeneParameters p where pk.code= :code and pk.companycode=:companycode");
query.setParameter("code", "PATH.ALFRESCO.ARCHIVOS");
query.setParameter("companycode", 1);
List<TgeneParameters> lparametros = query.getResultList();
if(lparametros != null && !lparametros.isEmpty()){
personaSnapDto.setxPathLocation(lparametros.get(0).getTextvalue());
}
String identificacion = (String) pRequest.get("identificacion");
String institucion = (String) pRequest.get("institucion");
String serie = (String) pRequest.get("serie");
query = PersistenceHelper.getEntityManager().createQuery("select pd from TcustPersonDetail pd where pd.identification= :identification and pd.pk.dateto=:dateto order by DATETO DESC");
query.setParameter("identification", identificacion);
query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp());
List<TcustPersonDetail> ltsafeUserDetails = query.getResultList();
if(ltsafeUserDetails != null && !ltsafeUserDetails.isEmpty()){
personaSnapDto.setCodigoPersona(ltsafeUserDetails.get(0).getPk().getPersoncode());
personaSnapDto.setRazonSocial(ltsafeUserDetails.get(0).getName());
}
//direccion principal
query=PersistenceHelper.getEntityManager().createQuery("select pa from TcustPersonAddress pa where pa.pk.personcode=:personcode and pa.pk.dateto=:dateto and pa.principal='Y'");
query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode());
query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp());
List<TcustPersonAddress> lcustPersonAddress = query.getResultList();
if(lcustPersonAddress != null && !lcustPersonAddress.isEmpty()){
personaSnapDto.setDireccion(lcustPersonAddress.get(0).getAddress());
}
//email
query=PersistenceHelper.getEntityManager().createQuery("select pa from TcustPersonAddress pa where pa.pk.personcode=:personcode and pa.pk.dateto=:dateto and pa.addresstypecatalog=3");
query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode());
query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp());
List<TcustPersonAddress> lcustPersonEmail = query.getResultList();
if(lcustPersonEmail != null && !lcustPersonEmail.isEmpty()){
personaSnapDto.setEmail(lcustPersonEmail.get(0).getAddress());
}
//telefono
query=PersistenceHelper.getEntityManager().createQuery("select pp from TcustPersonPhone pp where pp.pk.personcode=:personcode and pp.pk.dateto=:dateto and pp.phonetypecatalog=1");
query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode());
query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp());
List<TcustPersonPhone> lcustPersonTelefono = query.getResultList();
if(lcustPersonTelefono != null && !lcustPersonTelefono.isEmpty()){
personaSnapDto.setTelefonoFijo(lcustPersonTelefono.get(0).getPhonenumber());
}
//celular
query=PersistenceHelper.getEntityManager().createQuery("select pp from TcustPersonPhone pp where pp.pk.personcode=:personcode and pp.pk.dateto=:dateto and pp.phonetypecatalog=2");
query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode());
query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp());
List<TcustPersonPhone> lcustPersonCelular = query.getResultList();
if(lcustPersonCelular != null && !lcustPersonCelular.isEmpty()){
personaSnapDto.setTelefonoCelular(lcustPersonCelular.get(0).getPhonenumber());
}
//test psocilogico
query=PersistenceHelper.getEntityManager().createQuery("select te from TarmEvaluacion te where te.personcode=:personcode and te.tipoevaluacion = 'PSICOLOGICA' order by te.fechaexpiracion desc");
query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode());
List<TarmEvaluacion> listaEvaluacion = query.getResultList();
if(listaEvaluacion != null && !listaEvaluacion.isEmpty() && institucion.equals(InstitucionSnapEnum.COPS.getNombre())){
personaSnapDto.setTestPsicologico(listaEvaluacion.get(0).getInformexpath());
}
//tramites
List<TarmDocumentoHabilitante> listaTramitesHabilitantes = new ArrayList<>();
query=PersistenceHelper.getEntityManager().createQuery("select dh from TarmDocumentoHabilitante dh where dh.pk.personcode=:personcode and dh.ctramite in(73, 179) order by dh.fechaexpiracion desc");
query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode());
List<TarmDocumentoHabilitante> listaTramiteCM = query.getResultList();
if(listaTramiteCM != null && !listaTramiteCM.isEmpty()){
listaTramitesHabilitantes.add(listaTramiteCM.get(0));
}
query=PersistenceHelper.getEntityManager().createQuery("select dh from TarmDocumentoHabilitante dh where dh.pk.personcode=:personcode and dh.ctramite in(74, 180) order by dh.fechaexpiracion desc");
query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode());
List<TarmDocumentoHabilitante> listaTramiteMA = query.getResultList();
if(listaTramiteMA != null && !listaTramiteMA.isEmpty()){
listaTramitesHabilitantes.add(listaTramiteMA.get(0));
}
query=PersistenceHelper.getEntityManager().createQuery("select dh from TarmDocumentoHabilitante dh where dh.pk.personcode=:personcode and dh.ctramite in(76, 182) order by dh.fechaexpiracion desc");
query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode());
List<TarmDocumentoHabilitante> listaTramiteSP = query.getResultList();
if(listaTramiteSP != null && !listaTramiteSP.isEmpty()){
listaTramitesHabilitantes.add(listaTramiteSP.get(0));
}
List<TramiteDto> listaTramites = new ArrayList<>();
if(listaTramitesHabilitantes != null && !listaTramitesHabilitantes.isEmpty()){
for(TarmDocumentoHabilitante tramitesHabilitantes: listaTramitesHabilitantes){
TramiteDto tramiteDto = new TramiteDto();
tramiteDto.setTramite(tramitesHabilitantes.getCtramite().toString());
tramiteDto.setFechaEmision(tramitesHabilitantes.getFechaemision());
tramiteDto.setFechaExpiracion(tramitesHabilitantes.getFechaexpiracion());
//informacion del tramite
query=PersistenceHelper.getEntityManager().createQuery("select CONCAT(tt.description, ' - ', ta.description, ' - ', ca.description, ' - ', ua.description) from TarmTramite t,"
+ " TgeneCatalogDetail tt, TgeneCatalogDetail ta, TgeneCatalogDetail ca, TgeneCatalogDetail ua "
+ " where tt.pk.catalog = t.tipotramite and tt.pk.catalogcode = t.tipotramitecodigo"
+ " and ta.pk.catalog = t.tipoautorizacion and ta.pk.catalogcode = t.tipoautorizacioncodigo"
+ " and ca.pk.catalog = t.categoria and ca.pk.catalogcode = t.categoriacodigo"
+ " and ua.pk.catalog = t.usoactividad and ua.pk.catalogcode = t.usoactividadcodigo"
+ " and t.pk = :ctramite");
query.setParameter("ctramite", tramitesHabilitantes.getCtramite());
List<String> tramiteDescripcion = query.getResultList();
if(tramiteDescripcion != null && !tramiteDescripcion.isEmpty()){
tramiteDto.setNumeroDocumento(tramiteDescripcion.get(0).toString());
}
listaTramites.add(tramiteDto);
}
}
personaSnapDto.setListaTramites(listaTramites);
if(institucion.equals(InstitucionSnapEnum.CRIMINALISTICA.getNombre()) || institucion.equals(InstitucionSnapEnum.COPS.getNombre()) || institucion.equals(InstitucionSnapEnum.FISCALIA_GENERAL.getNombre())){
if("RUC".equals(ltsafeUserDetails.get(0).getIdentificationcatalog())){
query=PersistenceHelper.getEntityManager().createQuery("select g from TarmGuardias g where g.cempresa=:personcode");
query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode());
List<TarmGuardias> listaGuardias = query.getResultList();
if(listaGuardias != null && !listaGuardias.isEmpty()){
List<InfoGuardiaDto> listaInfoGuardias = new ArrayList<>();
for(TarmGuardias tarmGuardias : listaGuardias){
InfoGuardiaDto infoGuardiaDto = new InfoGuardiaDto();
infoGuardiaDto.setEstado(tarmGuardias.getEstado());
query=PersistenceHelper.getEntityManager().createQuery("select pd from TcustPersonDetail pd where pd.pk.personcode=:personcode");
query.setParameter("personcode", tarmGuardias.getPk());
List<TcustPersonDetail> listaPeson = query.getResultList();
if(listaPeson != null && !listaPeson.isEmpty()){
infoGuardiaDto.setNombre(listaPeson.get(0).getName());
}
listaInfoGuardias.add(infoGuardiaDto);
}
personaSnapDto.setListaGuardias(listaInfoGuardias);
}
}else{
query=PersistenceHelper.getEntityManager().createQuery("select g from TarmGuardias g where g.pk=:personcode");
query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode());
List<TarmGuardias> listaPersonaGuardia = query.getResultList();
if(listaPersonaGuardia != null && !listaPersonaGuardia.isEmpty() && listaPersonaGuardia.get(0).getCempresa() != null){
List<InfoGuardiaDto> listaInfoGuardias = new ArrayList<>();
InfoGuardiaDto infoGuardiaDto = new InfoGuardiaDto();
infoGuardiaDto.setEstado(listaPersonaGuardia.get(0).getEstado());
query=PersistenceHelper.getEntityManager().createQuery("select pd from TcustPersonDetail pd where pd.pk.personcode=:personcode");
query.setParameter("personcode", listaPersonaGuardia.get(0).getCempresa());
List<TcustPersonDetail> listaEmpresa = query.getResultList();
if(listaEmpresa != null && !listaEmpresa.isEmpty()){
infoGuardiaDto.setEmpresa(listaEmpresa.get(0).getName());
}
listaInfoGuardias.add(infoGuardiaDto);
personaSnapDto.setListaGuardias(listaInfoGuardias);
}
}
//datos del arma
query=PersistenceHelper.getEntityManager().createQuery("select ta from TarmArmas ta, TarmRegistroArmas regarm, TcustPersonDetail pd "
+ " where ta.cregistro = regarm.pk and pd.pk.personcode = regarm.personcode and pd.pk.dateto = :dateto"
+ " and ta.lote = :lote and ta.ctipoarmaexplosivo in (select te.pk from TarmTipoArmaExplosivo te where te.clase = '0010000001')"
+ " and pd.pk.personcode = :personcode");
query.setParameter("lote", serie);
query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp());
query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode());
List<TarmArmas> listaArma = query.getResultList();
if(listaArma != null && !listaArma.isEmpty()){
List<DatosArmaDto> listaDatosArma = new ArrayList<>();
for(TarmArmas tarmArmas : listaArma){
DatosArmaDto datosArmaDto = new DatosArmaDto();
datosArmaDto.setLote(tarmArmas.getLote());
datosArmaDto.setTipoFabricacion(tarmArmas.getTipofabricacion());
//marca
query=PersistenceHelper.getEntityManager().createQuery("select cat from TgeneCatalogDetail cat, TarmArmas arm "
+ "where cat.pk.catalog = arm.marca and cat.pk.catalogcode = arm.marcacodigo and arm.pk = :carma");
query.setParameter("carma", tarmArmas.getPk());
List<TgeneCatalogDetail> listaCatalogoMarca = query.getResultList();
if(listaCatalogoMarca != null && !listaCatalogoMarca.isEmpty()){
datosArmaDto.setMarca(listaCatalogoMarca.get(0).getDescription());
}
//datosArmaDto.setMarca(tarmArmas.getMarca());
datosArmaDto.setModelo(tarmArmas.getModelo());
datosArmaDto.setEstadoArma(tarmArmas.getEstado());
query=PersistenceHelper.getEntityManager().createQuery("select a from TarmArmaPruebas a where a.personcode = :personcode and a.carma = :carma");
query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode());
query.setParameter("carma", tarmArmas.getPk());
List<TarmArmaPruebas> listaArmaPrueba = query.getResultList();
if(listaArmaPrueba != null && !listaArmaPrueba.isEmpty()){
if(institucion.equals(InstitucionSnapEnum.CRIMINALISTICA.getNombre())){
datosArmaDto.setImagenImpronta(listaArmaPrueba.get(0).getXpathimpronta());
datosArmaDto.setImagenArma(listaArmaPrueba.get(0).getXpathfotografia());
}
datosArmaDto.setFichaTecnicaArma(listaArmaPrueba.get(0).getXpathfichatecarmas());
}
//clase
query=PersistenceHelper.getEntityManager().createQuery("select cat from TarmTipoArmaExplosivo tae, TgeneCatalogDetail cat, TarmArmas arm where cat.pk.catalog = tae.clase and cat.pk.catalogcode = tae.clasecodigo"
+ " and tae.pk = arm.ctipoarmaexplosivo and tae.pk = :ctipoarmaexplosivo and arm.pk = :carma");
query.setParameter("ctipoarmaexplosivo", tarmArmas.getCtipoarmaexplosivo());
query.setParameter("carma", tarmArmas.getPk());
List<TgeneCatalogDetail> listaCatalogoClase = query.getResultList();
if(listaCatalogoClase != null && !listaCatalogoClase.isEmpty()){
datosArmaDto.setDescripcionClase(listaCatalogoClase.get(0).getDescription());
}
//tipo
query=PersistenceHelper.getEntityManager().createQuery("select cat from TarmTipoArmaExplosivo tae, TgeneCatalogDetail cat, TarmArmas arm where cat.pk.catalog = tae.tipoarmaexplosivo and cat.pk.catalogcode = tae.tipoarmaexplosivocodigo"
+ " and tae.pk = arm.ctipoarmaexplosivo and tae.pk = :ctipoarmaexplosivo and arm.pk = :carma");
query.setParameter("ctipoarmaexplosivo", tarmArmas.getCtipoarmaexplosivo());
query.setParameter("carma", tarmArmas.getPk());
List<TgeneCatalogDetail> listaCatalogoTipo = query.getResultList();
if(listaCatalogoTipo != null && !listaCatalogoTipo.isEmpty()){
datosArmaDto.setDescripcionTipo(listaCatalogoTipo.get(0).getDescription());
}
//calibre
query=PersistenceHelper.getEntityManager().createQuery("select cat from TarmTipoArmaExplosivo tae, TgeneCatalogDetail cat, TarmArmas arm where cat.pk.catalog = tae.calibre and cat.pk.catalogcode = tae.calibrecodigo"
+ " and tae.pk = arm.ctipoarmaexplosivo and tae.pk = :ctipoarmaexplosivo and arm.pk = :carma");
query.setParameter("ctipoarmaexplosivo", tarmArmas.getCtipoarmaexplosivo());
query.setParameter("carma", tarmArmas.getPk());
List<TgeneCatalogDetail> listaCatalogoCalibre = query.getResultList();
if(listaCatalogoCalibre != null && !listaCatalogoCalibre.isEmpty()){
datosArmaDto.setCalibre(listaCatalogoCalibre.get(0).getDescription());
}
listaDatosArma.add(datosArmaDto);
}
personaSnapDto.setListaDatosArma(listaDatosArma);
}
}
pRequest.getResponse().put("DATOSPERSONSNAP", personaSnapDto);
} catch (Throwable e) {
APPLogger.getLogger().error(e.getMessage(), e);
}
return pRequest;
}
}