128 lines
4.1 KiB
Plaintext
Executable File
128 lines
4.1 KiB
Plaintext
Executable File
package com.fp.viaticos.rules.consulta.solicitud;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.util.Calendar;
|
|
import java.util.List;
|
|
|
|
import com.fp.bpm.query.QueryJsf;
|
|
import com.fp.dto.Response;
|
|
import com.fp.dto.query.QueryRequest;
|
|
import com.fp.dto.rules.QueryRule;
|
|
import com.fp.persistence.commondb.PersistenceHelper;
|
|
import com.fp.persistence.pviaticos.hra.Empleado;
|
|
import com.fp.persistence.pviaticos.hra.EmpleadoJpql;
|
|
import com.fp.persistence.pviaticos.param.ViaDiasAcumulados;
|
|
import com.fp.persistence.pviaticos.param.ViaDiasAcumuladosKey;
|
|
import com.fp.persistence.pviaticos.solicitud.ViaSolicitud;
|
|
import com.fp.persistence.pviaticos.solicitud.ViaSolicitudIntegrantes;
|
|
import com.fp.viaticos.rules.query.destino.DestinoQuery;
|
|
|
|
public class ConsultaSolicitud extends QueryRule{
|
|
|
|
/**
|
|
*
|
|
*/
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
@Override
|
|
public QueryRequest process(QueryRequest pQrequest) throws Exception {
|
|
Response response = pQrequest.getResponse();
|
|
QueryJsf query = new QueryJsf();
|
|
query.execute(pQrequest);
|
|
Object solicitud = (Object) response.get("SOLICITUD");
|
|
List<Object> integrantes = (List<Object>)response.get("SOLICITUDINTEGRANTES");
|
|
this.completeInfoSolicitud(solicitud);
|
|
this.completeInfoIntegrantes(integrantes);
|
|
return pQrequest;
|
|
}
|
|
|
|
/**
|
|
* Completa los datos de la solicitud
|
|
* @param object Objeto ViaSolicitud
|
|
* @throws Exception
|
|
*/
|
|
public void completeInfoSolicitud(Object object) throws Exception{
|
|
if(object==null){
|
|
return;
|
|
}
|
|
ViaSolicitud solicitud = (ViaSolicitud)object;
|
|
Empleado emp = null;
|
|
EmpleadoJpql e = new EmpleadoJpql();
|
|
DestinoQuery qry = new DestinoQuery();
|
|
|
|
//Funcionario ingresa
|
|
emp = e.findPorUsuarioWeb(solicitud.getCod_usuario().toLowerCase());
|
|
if(emp!=null){
|
|
solicitud.modifiedData.put("cod_ingreso", emp.getCodigo());
|
|
solicitud.modifiedData.put("nom_ingreso", emp.getNombre());
|
|
}
|
|
//jefe
|
|
if(solicitud.getCod_jefe()!=null){
|
|
emp = e.find(solicitud.getCod_jefe());
|
|
if(emp!=null){
|
|
solicitud.modifiedData.put("nombrejefe", emp.getNombre());
|
|
solicitud.modifiedData.put("cargojefe", emp.getNombreCargo());
|
|
}
|
|
}
|
|
//Responsable
|
|
if(solicitud.getCod_responsable()!=null){
|
|
emp = e.find(solicitud.getCod_responsable());
|
|
if(emp!=null){
|
|
solicitud.modifiedData.put("nombreresponsable", emp.getNombre());
|
|
solicitud.modifiedData.put("cargoresponsable", emp.getNombreCargo());
|
|
}
|
|
}
|
|
//Destino
|
|
Object obj = qry.find(solicitud.getCod_destino());
|
|
if(obj!=null){
|
|
Object[] destino = (Object[])obj;
|
|
solicitud.modifiedData.put("destinoname", destino[1]);
|
|
}
|
|
//Dias acumulados por destino
|
|
Calendar calendar = Calendar.getInstance();
|
|
calendar.setTime(solicitud.getFec_creacion());
|
|
BigDecimal dias = this.diasPorDestino(solicitud.getCod_empleado(), solicitud.getCod_destino(),calendar.get(Calendar.YEAR));
|
|
solicitud.modifiedData.put("comisionciudad", solicitud.getNum_dias().add(dias));
|
|
}
|
|
|
|
/**
|
|
* Completa la informacion de los integrantes
|
|
* @param objeto
|
|
*/
|
|
public void completeInfoIntegrantes(List<Object> objetos)throws Exception{
|
|
if(objetos==null || objetos.isEmpty()){
|
|
return;
|
|
}
|
|
for(Object obj:objetos){
|
|
ViaSolicitudIntegrantes integrante = (ViaSolicitudIntegrantes)obj;
|
|
EmpleadoJpql e = new EmpleadoJpql();
|
|
Empleado emp = e.find(integrante.getPk().getCod_empleado());
|
|
if(emp!=null){
|
|
integrante.modifiedData.put("empleado", emp.getNombre());
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Entrega los dias acumulados por ciudad
|
|
* @param codEmpleado
|
|
* @param codDestino
|
|
* @param periodo
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
private BigDecimal diasPorDestino(String codEmpleado, String codDestino, Integer periodo)throws Exception{
|
|
BigDecimal valor = new BigDecimal("0.0");
|
|
ViaDiasAcumuladosKey key = new ViaDiasAcumuladosKey();
|
|
key.setCod_empleado(codEmpleado);
|
|
key.setCod_destino(codDestino);
|
|
key.setCod_ejercicio(periodo);
|
|
ViaDiasAcumulados acumulados = ViaDiasAcumulados.find(PersistenceHelper.getEntityManager(), key);
|
|
if(acumulados!=null){
|
|
valor.add(acumulados.getNum_dias());
|
|
}
|
|
return valor;
|
|
}
|
|
}
|