293 lines
17 KiB
Plaintext
Executable File
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;
|
|
}
|
|
|
|
}
|