0019880: Melhoria Relatório Origem/Destino

bug#19880
dev:valdevir
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@104967 d1611594-4594-4d17-8e1d-87c2c4800839
master
valdir 2021-01-07 20:32:22 +00:00
parent 5d1e48c0c7
commit 74efcabeab
3 changed files with 125 additions and 10 deletions

View File

@ -16,10 +16,13 @@ import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import com.rjconsultores.ventaboletos.entidad.Constante;
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioOrigemDestinoBean;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.beans.PesoOperacional;
import com.rjconsultores.ventaboletos.service.ConstanteService;
import com.rjconsultores.ventaboletos.service.EsquemaCorridaService;
import com.rjconsultores.ventaboletos.service.RutaSecuenciaService;
import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement;
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;
@ -31,10 +34,17 @@ public class RelatorioOrigemDestino extends Relatorio {
private static String CONSTANTE_GRATUIDADE_CRIANCA;
private List<RelatorioOrigemDestinoBean> listaBean = new ArrayList<RelatorioOrigemDestinoBean>();
private RutaSecuenciaService rutaSecuenciaService;
private EsquemaCorridaService esquemaCorridaService;
public RelatorioOrigemDestino(Map<String, Object> parametros, Connection conexao) throws Exception {
public RelatorioOrigemDestino(Map<String, Object> parametros, Connection conexao, RutaSecuenciaService rutaSecuenciaService, EsquemaCorridaService esquemaCorridaService ) throws Exception {
super(parametros, conexao);
this.rutaSecuenciaService = rutaSecuenciaService;
this.esquemaCorridaService = esquemaCorridaService;
// Mantis 15600 - O relatório não tinha um Bean, a consulta SQL era executada dentro do jasper e o relatório não era gerado (ou demorava muito) para o usuário.
CONSTANTE_GRATUIDADE_CRIANCA = buscarConstante("GRATUIDADE_CRIANCA");
@ -73,9 +83,15 @@ public class RelatorioOrigemDestino extends Relatorio {
bean.setAbsoluto_total_corrida(rs.getInt("absoluto_total_corrida"));
bean.setImportetaxaembarque(rs.getBigDecimal("importetaxaembarque"));
bean.setImportepedagio(rs.getBigDecimal("importepedagio"));
bean.setOrigemId(rs.getInt("origen_id"));
bean.setDestinoId(rs.getInt("destino_id"));
bean.setRutaId(rs.getInt("ruta_id"));
listaBean.add(bean);
}
ordenarLista(listaBean);
List<PesoOperacional> listaSqlPesoOperacional = getPesoOperacional(conexao, corridasIds, dataDe, dataAte, bilhetesGratuitos, empresaIds, trechosSemMovimento);
@ -84,6 +100,35 @@ public class RelatorioOrigemDestino extends Relatorio {
this.setCollectionDataSource(new JRBeanCollectionDataSource(listaBean));
}
private void ordenarLista(List<RelatorioOrigemDestinoBean> listaBean2) {
try {
Integer rutaId = null;
Integer numCorrida = null;
EsquemaCorrida esquema = null;
for(RelatorioOrigemDestinoBean listaRel : listaBean2) {
if((rutaId == null || numCorrida == null)|| (!rutaId.equals(listaRel.getRutaId()) || !numCorrida.equals(listaRel.getCorrida_1().intValue()))) {
rutaId = listaRel.getRutaId();
numCorrida = listaRel.getCORRIDA_1().intValue();
esquema = esquemaCorridaService.buscaEsquemaPorRutaSemVigencia(rutaId, numCorrida);
}
List<Short> numSequencias = rutaSecuenciaService.obtenerNumRutaSecuenciaPorCorridaOrigemDestinoId(esquema, listaRel.getOrigemId(), listaRel.getDestinoId());
if(numSequencias != null && !numSequencias.isEmpty() ) {
listaRel.setNumSequencia(new Integer(numSequencias.get(0)));
listaRel.setNumSequencia2(numSequencias.size() > 1 ? new Integer(numSequencias.get(1)) : 0);
}
}
Collections.sort(listaBean2);
} catch (Exception e) {
log.error("Erro ao ordenar lista: ", e);
}
}
@Override
protected void processaParametros() throws Exception {
}
@ -341,7 +386,9 @@ public class RelatorioOrigemDestino extends Relatorio {
sql.append(" RESULTADO_2.disponibilidade, ");
sql.append(" RESULTADO_2.absoluto_total_corrida,");
sql.append(" RESULTADO_2.importetaxaembarque, ");
sql.append(" RESULTADO_2.importepedagio ");
sql.append(" RESULTADO_2.importepedagio, ");
sql.append(" RESULTADO_2.origen_id, ");
sql.append(" RESULTADO_2.destino_id ");
sql.append(" FROM (SELECT RESULTADO.*, ");
sql.append(" (SELECT Count(*) ");
sql.append(" FROM corrida CO ");
@ -378,8 +425,8 @@ public class RelatorioOrigemDestino extends Relatorio {
sql.append(" CO.corrida_id CORRIDA_ID, ");
sql.append(" Max(CO.fechorsalida) FECHORSALIDA, ");
sql.append(" ORI.DESCPARADA ORIGEM, ");
sql.append(" CO.origen_id ORIGEN_ID, ");
sql.append(" CO.destino_id DESTINO_ID, ");
sql.append(" ORI.parada_id ORIGEN_ID, ");
sql.append(" DES.parada_id DESTINO_ID, ");
sql.append(" DES.DESCPARADA DESTINO, ");
sql.append(" CA.numkmviaje KM_TRAMO, ");
sql.append(" RU.ruta_id, ");
@ -411,8 +458,8 @@ public class RelatorioOrigemDestino extends Relatorio {
sql.append(" EM.nombempresa, ");
sql.append(" ORI.DESCPARADA, ");
sql.append(" DES.DESCPARADA, ");
sql.append(" CO.origen_id, ");
sql.append(" CO.destino_id, ");
sql.append(" ORI.parada_id, ");
sql.append(" DES.parada_id, ");
sql.append(" CA.numkmviaje, ");
sql.append(" CO.corrida_id, ");
sql.append(" RU.descruta, ");
@ -455,7 +502,9 @@ public class RelatorioOrigemDestino extends Relatorio {
sql.append(" RESULTADO_2.disponibilidade, ");
sql.append(" RESULTADO_2.absoluto_total_corrida, ");
sql.append(" RESULTADO_2.IMPORTETAXAEMBARQUE, ");
sql.append(" RESULTADO_2.IMPORTEPEDAGIO ");
sql.append(" RESULTADO_2.IMPORTEPEDAGIO, ");
sql.append(" RESULTADO_2.origen_id, ");
sql.append(" RESULTADO_2.destino_id ");
sql.append(" ORDER BY RESULTADO_2.corrida_id) T1 ");
sql.append(" INNER JOIN (SELECT RESULTADO_2.corrida_id CORRIDA_2, ");
sql.append(" Sum(RESULTADO_2.equivalente) EQUIVALENTE_TOTAL_CORRIDA ");

View File

@ -4,7 +4,7 @@ import java.math.BigDecimal;
import java.sql.Timestamp;
//Mantis 15600
public class RelatorioOrigemDestinoBean {
public class RelatorioOrigemDestinoBean implements Comparable<RelatorioOrigemDestinoBean> {
private String nombempresa;
private BigDecimal corrida_1;
@ -24,6 +24,11 @@ public class RelatorioOrigemDestinoBean {
private Integer absoluto_total_corrida;
private BigDecimal importetaxaembarque;
private BigDecimal importepedagio;
private Integer numSequencia;
private Integer numSequencia2;
private Integer origemId;
private Integer destinoId;
private Integer rutaId;
public String getNombempresa() {
return nombempresa;
@ -242,4 +247,58 @@ public class RelatorioOrigemDestinoBean {
public BigDecimal getIMPORTEPEDAGIO() {
return getImportepedagio();
}
public Integer getNumSequencia() {
return numSequencia == null ? 0 : numSequencia;
}
public void setNumSequencia(Integer numSequencia) {
this.numSequencia = numSequencia;
}
public Integer getOrigemId() {
return origemId;
}
public void setOrigemId(Integer origemId) {
this.origemId = origemId;
}
public Integer getDestinoId() {
return destinoId;
}
public void setDestinoId(Integer destinoId) {
this.destinoId = destinoId;
}
public Integer getRutaId() {
return rutaId;
}
public void setRutaId(Integer rutaId) {
this.rutaId = rutaId;
}
public Integer getNumSequencia2() {
return numSequencia2 == null ? 0 : numSequencia2;
}
public void setNumSequencia2(Integer numSequencia2) {
this.numSequencia2 = numSequencia2 ;
}
@Override
public int compareTo(RelatorioOrigemDestinoBean o) {
if(this.getCorrida_1().equals(o.getCorrida_1())){
if(this.getNumSequencia().equals(o.getNumSequencia())) {
return this.getNumSequencia2() - o.getNumSequencia2();
} else {
return this.getNumSequencia() - o.getNumSequencia();
}
}else{
return this.getCorrida_1().compareTo(o.getCorrida_1());
}
}
}

View File

@ -33,6 +33,8 @@ import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioOrigemDestino;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
import com.rjconsultores.ventaboletos.service.CorridaService;
import com.rjconsultores.ventaboletos.service.EmpresaService;
import com.rjconsultores.ventaboletos.service.EsquemaCorridaService;
import com.rjconsultores.ventaboletos.service.RutaSecuenciaService;
import com.rjconsultores.ventaboletos.service.RutaService;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
@ -73,6 +75,11 @@ public class RelatorioOrigemDestinoController extends MyGenericForwardComposer {
private MyComboboxParadaCve cmbParadaOrigemCve;
private MyComboboxParada cmbParadaDestino;
private MyComboboxParadaCve cmbParadaDestinoCve;
@Autowired
private RutaSecuenciaService rutaSecuenciaService;
@Autowired
private EsquemaCorridaService esquemaCorridaService;
public List<Ruta> getLsRuta() {
return lsRuta;
@ -241,7 +248,7 @@ public class RelatorioOrigemDestinoController extends MyGenericForwardComposer {
}
parametros.put("CORRIDAS_SELECIONADAS", corridaIds.substring(1, corridaIds.length()));
Relatorio relatorio = new RelatorioOrigemDestino(parametros, dataSourceRead.getConnection());
Relatorio relatorio = new RelatorioOrigemDestino(parametros, dataSourceRead.getConnection(), rutaSecuenciaService, esquemaCorridaService);
Map<String, Object> args = new HashMap<String, Object>();
args.put("relatorio", relatorio);