maia_modificado/.svn/pristine/2b/2b9039a846185ea58b45127cd92...

72 lines
3.8 KiB
Plaintext
Executable File

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<TarmDocumentoHabilitante> 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;
}
}