package com.fp.armas.rules.query.webservices; import java.util.List; import javax.persistence.Query; import com.fp.armas.rules.query.webservices.util.CatalogoUtil; import com.fp.armas.rules.query.webservices.util.PersonaUtil; 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.JefeCentroControlDto; import com.fp.persistence.parmas.param.TarmCentroControl; import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; import com.fp.persistence.parmas.soli.TarmSolicitud; import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; import com.fp.persistence.pcustomer.gene.TcustPersonDetail; import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; public class JefeCentroImpresion extends QueryRule { private static final long serialVersionUID = 8341638596202085693L; private static final String QUERY_DOCUMENTO_NUM = "SELECT o FROM TarmDocumentoHabilitante o WHERE o.numerodocumento=:numerodocumento"; private static final String QUERY_SOLICITUD_DOCUMENTO_NUM = "SELECT sd.csolicitud FROM tarmsolicituddocumento sd WHERE sd.cdocumento=:cDocumento and " + " sd.csolicitud = (SELECT max(sd2.csolicitud) FROM tarmsolicituddocumento sd2 inner join tarmsolicitud sol on sol.csolicitud = sd2.csolicitud " + " WHERE sd2.cdocumento=:cDocumento and sol.estado!='ANU')"; /** * Busca el jefe del centro de control de la solicitud asociada al documento expedido */ @SuppressWarnings("unchecked") @Override public QueryRequest process(QueryRequest pRequest) throws Exception { try { JefeCentroControlDto jefeCentroControl = null; String numerodocumento = (String) pRequest.get("NUMERODOCUMENTO"); Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_DOCUMENTO_NUM); query.setParameter("numerodocumento", numerodocumento); List ltarmDocumentoHabilitantes = query.getResultList(); if(ltarmDocumentoHabilitantes != null && !ltarmDocumentoHabilitantes.isEmpty()){ TarmDocumentoHabilitante documentoHabilitante = ltarmDocumentoHabilitantes.iterator().next(); TarmSolicitud solicitud = null; if(documentoHabilitante.getCsolicitud() != null){ solicitud = TarmSolicitud.find(PersistenceHelper.getEntityManager(), documentoHabilitante.getCsolicitud()); }else{ Query querySolicitud = PersistenceHelper.getEntityManager().createNativeQuery(QUERY_SOLICITUD_DOCUMENTO_NUM); querySolicitud.setParameter("cDocumento", documentoHabilitante.getPk()); String codigoSolicitud = querySolicitud.getSingleResult().toString(); if(codigoSolicitud!=null){ solicitud = TarmSolicitud.find(PersistenceHelper.getEntityManager(),codigoSolicitud); } } if(solicitud != null && solicitud.getCcentrocontrol() != null){ TarmCentroControl tarmCentroControl = TarmCentroControl.find(PersistenceHelper.getEntityManager(), solicitud.getCcentrocontrol()); TcustPersonDetail tcustPersonDetail = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), new TcustPersonDetailKey(tarmCentroControl.getPersoncode(), FormatDates.getDefaultExpiryTimestamp())); jefeCentroControl = new JefeCentroControlDto(); jefeCentroControl.setNombre(tcustPersonDetail.getName()); jefeCentroControl.setFirma(tcustPersonDetail.getSign()); jefeCentroControl.setUbicacion(PersonaUtil.getInstancia().obtenerLocacionPersona(tcustPersonDetail.getPk().getPersoncode())); jefeCentroControl.setRangoJefe(CatalogoUtil.getInstancia().getDescripcion(tarmCentroControl.getGrado(), tarmCentroControl.getGradocodigo())); pRequest.getResponse().put("JEFECENTRO", jefeCentroControl); } } } catch (Throwable e) { throw new Exception(e); } return pRequest; } }