140 lines
4.6 KiB
Plaintext
Executable File
140 lines
4.6 KiB
Plaintext
Executable File
package com.fp.viaticos.rules.query.informe;
|
||
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
|
||
import com.fp.bpm.query.QueryJsf;
|
||
import com.fp.dto.Response;
|
||
import com.fp.dto.query.DtoQuery;
|
||
import com.fp.dto.query.Filter;
|
||
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.pviaticos.solicitud.ViaSolicitud;
|
||
import com.fp.persistence.pviaticos.solicitud.ViaSolicitudIntegrantes;
|
||
import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey;
|
||
import com.fp.persistence.pviaticos.solicitud.ViaSolicitudTransporte;
|
||
import com.fp.viaticos.rules.consulta.solicitud.ConsultaSolicitud;
|
||
import com.fp.viaticos.rules.enums.EnumCodigos;
|
||
|
||
public class Informe extends QueryRule{
|
||
|
||
/**
|
||
* Clase que clona los objetos de la solicitud para el informe
|
||
*/
|
||
private static final long serialVersionUID = 1L;
|
||
|
||
/**
|
||
* Metodo sobreescrito para gestionar la respuesta de la consulta
|
||
*/
|
||
@SuppressWarnings("unchecked")
|
||
@Override
|
||
public QueryRequest process(QueryRequest pQueryRequest) throws Exception {
|
||
|
||
String codSolicitud = (String)pQueryRequest.get("csolicitud");
|
||
|
||
ViaSolicitud informe = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(codSolicitud, EnumCodigos.INFORME.getCodigo()));
|
||
if(informe!=null){
|
||
return pQueryRequest;
|
||
}
|
||
|
||
this.fijaFiltrosSolicitud(pQueryRequest);
|
||
|
||
Response response = pQueryRequest.getResponse();
|
||
QueryJsf query = new QueryJsf();
|
||
query.execute(pQueryRequest);
|
||
|
||
Object object=response.get("SOLICITUD");
|
||
List<Object> objectIntegrantes=(List<Object>)response.get("SOLICITUDINTEGRANTES");
|
||
List<Object> objectTransporte=(List<Object>)response.get("SOLICITUDTRANSPORTE");
|
||
|
||
if(object == null){
|
||
return pQueryRequest;
|
||
}
|
||
|
||
ViaSolicitud solicitud = (ViaSolicitud) object;
|
||
solicitud = (ViaSolicitud)solicitud.cloneMe();
|
||
solicitud.setIsnew(true);
|
||
ConsultaSolicitud data = new ConsultaSolicitud();
|
||
solicitud.setFec_creacion(FormatDates.getInstance().getDataBaseDate());
|
||
data.completeInfoSolicitud(solicitud);
|
||
|
||
response.put("SOLICITUD", solicitud);
|
||
response.put("SOLICITUDINTEGRANTES", this.cloneIntegrantes(objectIntegrantes));
|
||
response.put("SOLICITUDTRANSPORTE", this.cloneTransporte(objectTransporte));
|
||
response.put("CLONE", "Y");
|
||
|
||
return pQueryRequest;
|
||
}
|
||
/**
|
||
* Método para cambio de filtros
|
||
*/
|
||
public void fijaFiltrosSolicitud(QueryRequest pQueryRequest) throws Exception{
|
||
|
||
DtoQuery dtoQuery = (DtoQuery)pQueryRequest.getQueryTables().get("SOLICITUD");
|
||
DtoQuery dtoQueryInt = (DtoQuery)pQueryRequest.getQueryTables().get("SOLICITUDINTEGRANTES");
|
||
DtoQuery dtoQueryTra = (DtoQuery)pQueryRequest.getQueryTables().get("SOLICITUDTRANSPORTE");
|
||
|
||
List<Filter> filtros = dtoQuery.getLfilter();
|
||
List<Filter> filtrosInt = dtoQueryInt.getLfilter();
|
||
List<Filter> filtrosTra = dtoQueryTra.getLfilter();
|
||
|
||
for(Filter filtro: filtros){
|
||
if(filtro.getField().equals("pk.cod_tipo")){
|
||
filtro.setValue(EnumCodigos.SOLICITUD.getCodigo());
|
||
break;
|
||
}
|
||
}
|
||
for(Filter filtro: filtrosInt){
|
||
if(filtro.getField().equals("pk.cod_tipo")){
|
||
filtro.setValue(EnumCodigos.SOLICITUD.getCodigo());
|
||
break;
|
||
}
|
||
}
|
||
for(Filter filtro: filtrosTra){
|
||
if(filtro.getField().equals("pk.cod_tipo")){
|
||
filtro.setValue(EnumCodigos.SOLICITUD.getCodigo());
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
/**
|
||
* M<>todo para clonar la lista de objetos ViaSolicitudIntegrantes
|
||
* @param object
|
||
*/
|
||
private List<ViaSolicitudIntegrantes> cloneIntegrantes(List<Object> objects) throws Exception {
|
||
List<ViaSolicitudIntegrantes> listIntegrantes = new ArrayList<ViaSolicitudIntegrantes>();
|
||
ViaSolicitudIntegrantes integrante;
|
||
|
||
for(Object objeto:objects)
|
||
{
|
||
integrante = (ViaSolicitudIntegrantes)objeto;
|
||
ViaSolicitudIntegrantes inte = (ViaSolicitudIntegrantes)integrante.cloneMe();
|
||
listIntegrantes.add(inte);
|
||
}
|
||
ConsultaSolicitud data = new ConsultaSolicitud();
|
||
data.completeInfoIntegrantes(objects);
|
||
return listIntegrantes;
|
||
}
|
||
|
||
/**
|
||
* M<>todo para clonar la lista de objetos ViaSolicitudTransporte
|
||
* @param object
|
||
*/
|
||
private List<ViaSolicitudTransporte> cloneTransporte(List<Object> objects) throws Exception {
|
||
List<ViaSolicitudTransporte> listTransporte = new ArrayList<ViaSolicitudTransporte>();
|
||
ViaSolicitudTransporte transporte;
|
||
|
||
for(Object objeto:objects)
|
||
{
|
||
transporte = (ViaSolicitudTransporte)objeto;
|
||
ViaSolicitudTransporte trans = (ViaSolicitudTransporte)transporte.cloneMe();
|
||
trans.getPk().setCod_secuencia(null);
|
||
listTransporte.add(trans);
|
||
}
|
||
return listTransporte;
|
||
}
|
||
|
||
}
|