0005247: B6 - SISDAP Relatório ANTT
Tempo: 18 horas git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@36035 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
ca4bc531d4
commit
ae91009f83
|
@ -2,9 +2,13 @@ package com.rjconsultores.ventaboletos.dao.hibernate;
|
|||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang.math.NumberUtils;
|
||||
import org.hibernate.Query;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.transform.AliasToBeanResultTransformer;
|
||||
|
@ -18,67 +22,131 @@ import org.springframework.stereotype.Repository;
|
|||
import com.rjconsultores.ventaboletos.dao.SisdapDAO;
|
||||
import com.rjconsultores.ventaboletos.relatorios.MovimentoLinha;
|
||||
import com.rjconsultores.ventaboletos.relatorios.MovimentoSecoes;
|
||||
import com.rjconsultores.ventaboletos.relatorios.PrefixoAntt;
|
||||
|
||||
@Repository("sisdapDAO")
|
||||
public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO {
|
||||
|
||||
private static String HYPHEN = "-";
|
||||
|
||||
@Autowired
|
||||
public SisdapHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
|
||||
setSessionFactory(factory);
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
@Override
|
||||
public List<String> getMovimentoLinhas(Date fecInicio, Date fecFinal, Integer empresaId) {
|
||||
|
||||
List<String> movimentoLinhas = new ArrayList<String>();
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
|
||||
List<MovimentoLinha> list = consultaMovimentoLinhas(fecInicio, fecFinal, empresaId);
|
||||
|
||||
List<MovimentoLinha> result = new ArrayList<MovimentoLinha>();
|
||||
|
||||
for (MovimentoLinha movimentoLinha : list) {
|
||||
boolean insert = agrupaMovimentoLinhas(result, movimentoLinha);
|
||||
if (insert)
|
||||
result.add(movimentoLinha);
|
||||
}
|
||||
|
||||
List<String> periodos = new ArrayList<String>();
|
||||
for (MovimentoLinha movimentoLinha : result) {
|
||||
String periodo = movimentoLinha.getAno() + HYPHEN + movimentoLinha.getMes();
|
||||
if (!periodos.contains(periodo)) {
|
||||
periodos.add(periodo);
|
||||
}
|
||||
}
|
||||
|
||||
List<PrefixoAntt> prefixos = buscaPrefixoEmpresa(empresaId);
|
||||
|
||||
HashMap<String, List<PrefixoAntt>> periodosPrefixos = new HashMap<String, List<PrefixoAntt>>();
|
||||
for (String pd : periodos) {
|
||||
periodosPrefixos.put(pd, prefixos);
|
||||
}
|
||||
|
||||
for (MovimentoLinha movimentoLinha : result) {
|
||||
String periodo = movimentoLinha.getAno() + HYPHEN + movimentoLinha.getMes();
|
||||
|
||||
PrefixoAntt prefixoAntt = new PrefixoAntt();
|
||||
prefixoAntt.setAntt(movimentoLinha.getAntt());
|
||||
prefixoAntt.setPrefixo(movimentoLinha.getPrefixo());
|
||||
|
||||
if (periodosPrefixos.get(periodo).contains(prefixoAntt)) {
|
||||
periodosPrefixos.get(periodo).remove(prefixoAntt);
|
||||
}
|
||||
}
|
||||
|
||||
for (String key : periodosPrefixos.keySet()) {
|
||||
String[] periodo = key.split(HYPHEN);
|
||||
Integer ano = Integer.parseInt(periodo[0]);
|
||||
Integer mes = Integer.parseInt(periodo[1]);
|
||||
|
||||
for (PrefixoAntt prefixoAntt : periodosPrefixos.get(key)) {
|
||||
MovimentoLinha linha = new MovimentoLinha();
|
||||
linha.setAno(ano);
|
||||
linha.setMes(mes);
|
||||
linha.setAntt(prefixoAntt.getAntt());
|
||||
linha.setPrefixo(prefixoAntt.getPrefixo());
|
||||
linha.setLugaresIda(NumberUtils.INTEGER_ZERO);
|
||||
linha.setLugaresVolta(NumberUtils.INTEGER_ZERO);
|
||||
linha.setViagensIda(NumberUtils.INTEGER_ZERO);
|
||||
linha.setViagensVolta(NumberUtils.INTEGER_ZERO);
|
||||
|
||||
result.add(linha);
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(result, new Comparator() {
|
||||
public int compare(Object o1, Object o2) {
|
||||
MovimentoLinha c1 = (MovimentoLinha) o1;
|
||||
MovimentoLinha c2 = (MovimentoLinha) o2;
|
||||
|
||||
int result = c1.getAno().compareTo(c2.getAno());
|
||||
if (result == 0) {
|
||||
result = c1.getMes().compareTo(c2.getMes());
|
||||
}
|
||||
if (result == 0) {
|
||||
result = c1.getAntt().compareToIgnoreCase(c2.getAntt());
|
||||
}
|
||||
if (result == 0) {
|
||||
return c1.getPrefixo().compareToIgnoreCase(c2.getPrefixo());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
});
|
||||
|
||||
List<String> movimentoLinhas = new ArrayList<String>();
|
||||
movimentoLinhas.add("empresa;prefixo;mes;ano;viagem_ida;viagem_volta;lugar_ida;lugar_volta");
|
||||
for (MovimentoLinha movimentoLinha : result) {
|
||||
movimentoLinhas.add(movimentoLinha.toString());
|
||||
}
|
||||
|
||||
return movimentoLinhas;
|
||||
}
|
||||
|
||||
private List<MovimentoLinha> consultaMovimentoLinhas(Date fecInicio, Date fecFinal, Integer empresaId) {
|
||||
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("select distinct e.codantt antt, ");
|
||||
sb.append(" r.prefixo prefixo, ");
|
||||
sb.append(" to_char(c.feccorrida, 'MM') mes, ");
|
||||
sb.append(" to_char(c.feccorrida, 'yyyy') ano, ");
|
||||
sb.append(" nvl(case r.indsentidoida ");
|
||||
sb.append(" when 1 then count(r.prefixo) ");
|
||||
sb.append(" end, 0) viagensida, ");
|
||||
sb.append(" nvl(case r.indsentidoida ");
|
||||
sb.append(" when 0 then count(r.prefixo) ");
|
||||
sb.append(" end, 0) viagensvolta, ");
|
||||
sb.append(" nvl(case r.indsentidoida ");
|
||||
sb.append(" when 1 then sum(da.cantasientos) ");
|
||||
sb.append(" end, 0) lugaresida, ");
|
||||
sb.append(" nvl(case r.indsentidoida ");
|
||||
sb.append(" when 0 then sum(da.cantasientos) ");
|
||||
sb.append(" end, 0) lugaresvolta ");
|
||||
sb.append("from ruta_empresa re ");
|
||||
sb.append(" left join marca m ");
|
||||
sb.append(" on m.marca_id = re.empresa_id ");
|
||||
sb.append(" left join empresa e ");
|
||||
sb.append(" on m.empresa_id = e.empresa_id ");
|
||||
sb.append(" left join ruta r ");
|
||||
sb.append(" on re.ruta_id = r.ruta_id ");
|
||||
sb.append(" left join corrida c ");
|
||||
sb.append(" on c.ruta_id = r.ruta_id ");
|
||||
sb.append(" left outer join rol_operativo ro ");
|
||||
sb.append(" on c.roloperativo_id = ro.roloperativo_id ");
|
||||
sb.append(" left outer join diagrama_autobus da ");
|
||||
sb.append(" on da.diagramaautobus_id = ro.diagramaautobus_id ");
|
||||
sb.append("where m.marca_id = :empresaId ");
|
||||
sb.append(" and r.orgaoconcedente_id = 3 ");
|
||||
sb.append(" and e.codantt is not null ");
|
||||
sb.append(" and c.feccorrida between to_date(:fecInicio, 'DD/MM/YYYY') and ");
|
||||
sb.append(" to_date(:fecFinal, 'DD/MM/YYYY') ");
|
||||
sb.append("group by e.codantt, ");
|
||||
sb.append(" r.prefixo, ");
|
||||
sb.append(" r.indsentidoida, ");
|
||||
sb.append(" to_char(c.feccorrida, 'MM'), ");
|
||||
sb.append(" to_char(c.feccorrida, 'yyyy') ");
|
||||
sb.append("order by mes, ");
|
||||
sb.append(" ano, ");
|
||||
sb.append(" e.codantt, ");
|
||||
sb.append(" r.prefixo, ");
|
||||
sb.append(" viagensida, ");
|
||||
sb.append(" viagensvolta ");
|
||||
sb.append("select e.codantt antt, r.prefixo prefixo, ");
|
||||
sb.append(" to_char(c.feccorrida, 'MM') mes, to_char(c.feccorrida, 'yyyy') ano, ");
|
||||
sb.append(" nvl(case r.indsentidoida when 1 then count(r.prefixo) end, 0) viagensida, ");
|
||||
sb.append(" nvl(case r.indsentidoida when 0 then count(r.prefixo) end, 0) viagensvolta, ");
|
||||
sb.append(" nvl(case r.indsentidoida when 1 then sum(da.cantasientos) end, 0) lugaresida, ");
|
||||
sb.append(" nvl(case r.indsentidoida when 0 then sum(da.cantasientos) end, 0) lugaresvolta ");
|
||||
sb.append("from ruta_empresa re ");
|
||||
sb.append(" left join marca m on m.marca_id = re.empresa_id ");
|
||||
sb.append(" left join empresa e on m.empresa_id = e.empresa_id ");
|
||||
sb.append(" left join ruta r on re.ruta_id = r.ruta_id ");
|
||||
sb.append(" left join corrida c on c.ruta_id = r.ruta_id ");
|
||||
sb.append(" left outer join rol_operativo ro on c.roloperativo_id = ro.roloperativo_id ");
|
||||
sb.append(" left outer join diagrama_autobus da on da.diagramaautobus_id = ro.diagramaautobus_id ");
|
||||
sb.append("where m.marca_id = :empresaId and re.activo = 1 and r.activo = 1 ");
|
||||
sb.append(" and r.orgaoconcedente_id = 3 and e.codantt is not null ");
|
||||
sb.append(" and c.feccorrida between to_date(:fecInicio, 'DD/MM/YYYY') and ");
|
||||
sb.append(" to_date(:fecFinal, 'DD/MM/YYYY') ");
|
||||
sb.append("group by e.codantt, r.prefixo, r.indsentidoida, ");
|
||||
sb.append(" to_char(c.feccorrida, 'MM'), to_char(c.feccorrida, 'yyyy') ");
|
||||
sb.append("order by mes, ano, e.codantt, r.prefixo, viagensida, viagensvolta ");
|
||||
|
||||
Query query = getSession().createSQLQuery(sb.toString())
|
||||
.addScalar("antt", StringType.INSTANCE)
|
||||
|
@ -95,23 +163,30 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO
|
|||
query.setParameter("fecFinal", sdf.format(fecFinal));
|
||||
query.setParameter("empresaId", empresaId);
|
||||
|
||||
List<MovimentoLinha> list = query.list();
|
||||
return query.list();
|
||||
}
|
||||
|
||||
movimentoLinhas.add("empresa;prefixo;mes;ano;viagem_ida;viagem_volta;lugar_ida;lugar_volta");
|
||||
private List<PrefixoAntt> buscaPrefixoEmpresa(Integer empresaId) {
|
||||
|
||||
List<MovimentoLinha> result = new ArrayList<MovimentoLinha>();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(" select e.codantt antt, r.prefixo prefixo ");
|
||||
sb.append(" from ruta_empresa re ");
|
||||
sb.append(" left join marca m on m.marca_id = re.empresa_id ");
|
||||
sb.append(" left join empresa e on m.empresa_id = e.empresa_id ");
|
||||
sb.append(" left join ruta r on re.ruta_id = r.ruta_id ");
|
||||
sb.append(" where re.empresa_id = :empresaId and r.orgaoconcedente_id = 3 ");
|
||||
sb.append(" and re.activo = 1 and r.activo = 1 ");
|
||||
sb.append(" group by e.codantt, r.prefixo ");
|
||||
sb.append(" order by e.codantt, r.prefixo ");
|
||||
|
||||
for (MovimentoLinha movimentoLinha : list) {
|
||||
boolean insert = agrupaMovimentoLinhas(result, movimentoLinha);
|
||||
if (insert)
|
||||
result.add(movimentoLinha);
|
||||
}
|
||||
Query query = getSession().createSQLQuery(sb.toString())
|
||||
.addScalar("antt", StringType.INSTANCE)
|
||||
.addScalar("prefixo", StringType.INSTANCE);
|
||||
query.setResultTransformer(new AliasToBeanResultTransformer(PrefixoAntt.class));
|
||||
|
||||
for (MovimentoLinha movimentoLinha : result) {
|
||||
movimentoLinhas.add(movimentoLinha.toString());
|
||||
}
|
||||
query.setParameter("empresaId", empresaId);
|
||||
|
||||
return movimentoLinhas;
|
||||
return query.list();
|
||||
}
|
||||
|
||||
private boolean agrupaMovimentoLinhas(List<MovimentoLinha> resul, MovimentoLinha movimentoLinha) {
|
||||
|
@ -140,101 +215,180 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO
|
|||
return true;
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
@Override
|
||||
public List<String> getMovimentoSecoes(Date fecInicio, Date fecFinal, Integer empresaId) {
|
||||
|
||||
List<MovimentoSecoes> list = consultaMovimentoSecoes(fecInicio, fecFinal, empresaId);
|
||||
|
||||
List<MovimentoSecoes> result = new ArrayList<MovimentoSecoes>();
|
||||
|
||||
for (MovimentoSecoes ms : list) {
|
||||
boolean insert = agrupaMovimentoSecoes(result, ms);
|
||||
if (insert)
|
||||
result.add(ms);
|
||||
}
|
||||
|
||||
List<String> periodos = new ArrayList<String>();
|
||||
for (MovimentoSecoes ms : result) {
|
||||
String periodo = ms.getAno() + HYPHEN + ms.getMes();
|
||||
if (!periodos.contains(periodo)) {
|
||||
periodos.add(periodo);
|
||||
}
|
||||
}
|
||||
|
||||
List<PrefixoAntt> prefixos = buscaPrefixoEmpresaOrigenDestino(empresaId);
|
||||
|
||||
HashMap<String, List<PrefixoAntt>> periodosPrefixos = new HashMap<String, List<PrefixoAntt>>();
|
||||
for (String pd : periodos) {
|
||||
periodosPrefixos.put(pd, prefixos);
|
||||
}
|
||||
|
||||
for (MovimentoSecoes ms : result) {
|
||||
String periodo = ms.getAno() + HYPHEN + ms.getMes();
|
||||
|
||||
PrefixoAntt prefixoAntt = new PrefixoAntt();
|
||||
prefixoAntt.setAntt(ms.getAntt());
|
||||
prefixoAntt.setPrefixo(ms.getPrefixo());
|
||||
prefixoAntt.setLocalDestino(ms.getLocalDestino());
|
||||
prefixoAntt.setLocalOrigem(ms.getLocalOrigem());
|
||||
|
||||
if (periodosPrefixos.get(periodo).contains(prefixoAntt)) {
|
||||
periodosPrefixos.get(periodo).remove(prefixoAntt);
|
||||
}
|
||||
}
|
||||
|
||||
for (String key : periodosPrefixos.keySet()) {
|
||||
String[] periodo = key.split(HYPHEN);
|
||||
Integer ano = Integer.parseInt(periodo[0]);
|
||||
Integer mes = Integer.parseInt(periodo[1]);
|
||||
|
||||
for (PrefixoAntt prefixoAntt : periodosPrefixos.get(key)) {
|
||||
MovimentoSecoes ms = new MovimentoSecoes();
|
||||
ms.setAno(ano);
|
||||
ms.setMes(mes);
|
||||
|
||||
ms.setAntt(prefixoAntt.getAntt());
|
||||
ms.setPrefixo(prefixoAntt.getPrefixo());
|
||||
ms.setLocalDestino(prefixoAntt.getLocalDestino());
|
||||
ms.setLocalOrige(prefixoAntt.getLocalOrigem());
|
||||
|
||||
ms.setDescontoIdosoIda(NumberUtils.INTEGER_ZERO);
|
||||
ms.setDescontoIdosoVolta(NumberUtils.INTEGER_ZERO);
|
||||
ms.setGratuidadeIdosoIda(NumberUtils.INTEGER_ZERO);
|
||||
ms.setGratuidadeIdosoVolta(NumberUtils.INTEGER_ZERO);
|
||||
ms.setGratuidadePasseLivreIda(NumberUtils.INTEGER_ZERO);
|
||||
ms.setGratuidadePasseLivreVolta(NumberUtils.INTEGER_ZERO);
|
||||
ms.setPassageirosIda(NumberUtils.INTEGER_ZERO);
|
||||
ms.setPassageirosVolta(NumberUtils.INTEGER_ZERO);
|
||||
|
||||
result.add(ms);
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(result, new Comparator() {
|
||||
public int compare(Object o1, Object o2) {
|
||||
MovimentoSecoes c1 = (MovimentoSecoes) o1;
|
||||
MovimentoSecoes c2 = (MovimentoSecoes) o2;
|
||||
|
||||
int result = c1.getAno().compareTo(c2.getAno());
|
||||
if (result == 0) {
|
||||
result = c1.getMes().compareTo(c2.getMes());
|
||||
}
|
||||
if (result == 0) {
|
||||
result = c1.getAntt().compareToIgnoreCase(c2.getAntt());
|
||||
}
|
||||
if (result == 0) {
|
||||
return c1.getPrefixo().compareToIgnoreCase(c2.getPrefixo());
|
||||
}
|
||||
if (result == 0) {
|
||||
return c1.getLocalOrigem().compareToIgnoreCase(c2.getLocalOrigem());
|
||||
}
|
||||
if (result == 0) {
|
||||
return c1.getLocalDestino().compareToIgnoreCase(c2.getLocalDestino());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
});
|
||||
|
||||
List<String> movimentosSecoes = new ArrayList<String>();
|
||||
movimentosSecoes.add("empresa;prefixo;local_origem;local_destino;mes;ano;passageiro_ida;passageiro_volta;gratuidade_ida" +
|
||||
";gratuidade_volta;idoso_ida;idoso_volta;desconto_ida;desconto_volta ");
|
||||
|
||||
for (MovimentoSecoes ms : result) {
|
||||
movimentosSecoes.add(ms.toString());
|
||||
}
|
||||
|
||||
return movimentosSecoes;
|
||||
}
|
||||
|
||||
private List<MovimentoSecoes> consultaMovimentoSecoes(Date fecInicio, Date fecFinal, Integer empresaId) {
|
||||
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("SELECT DISTINCT e.codantt antt, ");
|
||||
sb.append(" r.prefixo prefixo, ");
|
||||
sb.append(" To_char(c.feccorrida, 'MM') mes, ");
|
||||
sb.append(" To_char(c.feccorrida, 'yyyy') ano, ");
|
||||
sb.append(" CASE r.indsentidoida ");
|
||||
sb.append(" WHEN 1 THEN po.codantt ");
|
||||
sb.append(" ELSE pd.codantt ");
|
||||
sb.append(" END localOrigem, ");
|
||||
sb.append(" CASE r.indsentidoida ");
|
||||
sb.append(" WHEN 1 THEN pd.codantt ");
|
||||
sb.append(" ELSE po.codantt ");
|
||||
sb.append(" END localDestino, ");
|
||||
sb.append(" Nvl(CASE r.indsentidoida ");
|
||||
sb.append(" WHEN 1 THEN Count(*) ");
|
||||
sb.append(" END, 0) passageirosIda, ");
|
||||
sb.append(" Nvl(CASE r.indsentidoida ");
|
||||
sb.append(" WHEN 0 THEN Count(*) ");
|
||||
sb.append(" END, 0) passageirosVolta, ");
|
||||
sb.append(" Nvl(CASE ");
|
||||
sb.append(" WHEN r.indsentidoida = 1 ");
|
||||
sb.append(" AND b.categoria_id IN (SELECT categoria_id ");
|
||||
sb.append(" FROM categoria ");
|
||||
sb.append(" WHERE grupocategoria_id IN ( 1, 2 )) THEN Count(* ");
|
||||
sb.append(" ) ");
|
||||
sb.append(" END, 0) gratuidadePasseLivreIda, ");
|
||||
sb.append(" Nvl(CASE ");
|
||||
sb.append(" WHEN r.indsentidoida = 0 ");
|
||||
sb.append(" AND b.categoria_id IN (SELECT categoria_id ");
|
||||
sb.append(" FROM categoria ");
|
||||
sb.append(" WHERE grupocategoria_id IN ( 1, 2 )) THEN Count(* ");
|
||||
sb.append(" ) ");
|
||||
sb.append(" END, 0) gratuidadePasseLivreVolta, ");
|
||||
sb.append(" Nvl(CASE ");
|
||||
sb.append(" WHEN r.indsentidoida = 1 ");
|
||||
sb.append(" AND b.categoria_id IN (SELECT categoria_id ");
|
||||
sb.append(" FROM categoria ");
|
||||
sb.append(" WHERE grupocategoria_id = 1) THEN Count(*) ");
|
||||
sb.append(" END, 0) gratuidadeIdosoIda, ");
|
||||
sb.append(" Nvl(CASE ");
|
||||
sb.append(" WHEN r.indsentidoida = 0 ");
|
||||
sb.append(" AND b.categoria_id IN (SELECT categoria_id ");
|
||||
sb.append(" FROM categoria ");
|
||||
sb.append(" WHERE grupocategoria_id = 1) THEN Count(*) ");
|
||||
sb.append(" END, 0) gratuidadeIdosoVolta, ");
|
||||
sb.append(" Nvl(CASE ");
|
||||
sb.append(" WHEN r.indsentidoida = 1 ");
|
||||
sb.append(" AND b.categoria_id IN (SELECT categoria_id ");
|
||||
sb.append(" FROM categoria ");
|
||||
sb.append(" WHERE grupocategoria_id = 3) THEN Count(*) ");
|
||||
sb.append(" END, 0) descontoIdosoIda, ");
|
||||
sb.append(" Nvl(CASE ");
|
||||
sb.append(" WHEN r.indsentidoida = 0 ");
|
||||
sb.append(" AND b.categoria_id IN (SELECT categoria_id ");
|
||||
sb.append(" FROM categoria ");
|
||||
sb.append(" WHERE grupocategoria_id = 3) THEN Count(*) ");
|
||||
sb.append(" END, 0) descontoIdosoVolta ");
|
||||
sb.append("FROM corrida c ");
|
||||
sb.append(" left join boleto b ");
|
||||
sb.append(" ON c.corrida_id = b.corrida_id ");
|
||||
sb.append(" AND c.feccorrida = b.feccorrida ");
|
||||
sb.append(" left join ruta r ");
|
||||
sb.append(" ON r.ruta_id = c.ruta_id ");
|
||||
sb.append(" left join parada po ");
|
||||
sb.append(" ON po.parada_id = b.origen_id ");
|
||||
sb.append(" left join parada pd ");
|
||||
sb.append(" ON pd.parada_id = b.destino_id ");
|
||||
sb.append(" left join empresa e ");
|
||||
sb.append(" ON e.empresa_id = b.empresacorrida_id ");
|
||||
sb.append("WHERE r.orgaoconcedente_id = 3 ");
|
||||
sb.append(" AND b.numasiento IS NOT NULL ");
|
||||
sb.append(" AND b.motivocancelacion_id IS NULL ");
|
||||
sb.append(" AND e.codantt IS NOT NULL ");
|
||||
sb.append(" AND e.empresa_id = :empresaId ");
|
||||
sb.append(" AND c.feccorrida BETWEEN To_date(:fecInicio, 'DD/MM/YYYY') AND ");
|
||||
sb.append(" To_date(:fecFinal, 'DD/MM/YYYY') ");
|
||||
sb.append("GROUP BY e.codantt, ");
|
||||
sb.append("select e.codantt antt, ");
|
||||
sb.append(" r.prefixo prefixo, ");
|
||||
sb.append(" to_char(c.feccorrida, 'MM') mes, ");
|
||||
sb.append(" to_char(c.feccorrida, 'yyyy') ano, ");
|
||||
sb.append(" case r.indsentidoida when 1 then po.codantt else pd.codantt end localorigem, ");
|
||||
sb.append(" case r.indsentidoida when 1 then pd.codantt else po.codantt end localdestino, ");
|
||||
sb.append(" nvl(case when r.indsentidoida = 1 and b.categoria_id in ");
|
||||
sb.append(" (select categoria_id from categoria where grupocategoria_id is null) ");
|
||||
sb.append(" then count(*) end, 0) passageirosida, ");
|
||||
sb.append(" nvl(case when r.indsentidoida = 0 and b.categoria_id in ");
|
||||
sb.append(" (select categoria_id from categoria where grupocategoria_id is null) ");
|
||||
sb.append(" then count(*) end, 0) passageirosvolta, ");
|
||||
sb.append(" nvl(case when r.indsentidoida = 1 and b.categoria_id in ");
|
||||
sb.append(" (select categoria_id from categoria where grupocategoria_id in ( 2 )) ");
|
||||
sb.append(" then count(*) end, 0) gratuidadepasselivreida, ");
|
||||
sb.append(" nvl(case when r.indsentidoida = 0 and b.categoria_id in ");
|
||||
sb.append(" (select categoria_id from categoria where grupocategoria_id in ( 2 )) ");
|
||||
sb.append(" then count(*) end, 0) gratuidadepasselivrevolta, ");
|
||||
sb.append(" nvl(case when r.indsentidoida = 1 and b.categoria_id in ");
|
||||
sb.append(" (select categoria_id from categoria where grupocategoria_id in ( 1 )) ");
|
||||
sb.append(" then count(*) end, 0) gratuidadeidosoida, ");
|
||||
sb.append(" nvl(case when r.indsentidoida = 0 and b.categoria_id in ");
|
||||
sb.append(" (select categoria_id from categoria where grupocategoria_id in ( 1 )) ");
|
||||
sb.append(" then count(*) end, 0) gratuidadeidosovolta, ");
|
||||
sb.append(" nvl(case when r.indsentidoida = 1 and b.categoria_id in ");
|
||||
sb.append(" (select categoria_id from categoria where grupocategoria_id in ( 3 )) ");
|
||||
sb.append(" then count(*) end, 0) descontoidosoida, ");
|
||||
sb.append(" nvl(case when r.indsentidoida = 0 and b.categoria_id in ");
|
||||
sb.append(" (select categoria_id from categoria where grupocategoria_id in ( 3 )) ");
|
||||
sb.append(" then count(*) end, 0) descontoidosovolta ");
|
||||
sb.append("from ruta_empresa re ");
|
||||
sb.append(" left join marca m on m.marca_id = re.empresa_id ");
|
||||
sb.append(" left join empresa e on m.empresa_id = e.empresa_id ");
|
||||
sb.append(" left join ruta r on re.ruta_id = r.ruta_id ");
|
||||
sb.append(" left join corrida c on c.ruta_id = r.ruta_id ");
|
||||
sb.append(" left outer join boleto b on c.corrida_id = b.corrida_id ");
|
||||
sb.append(" and c.feccorrida = b.feccorrida ");
|
||||
sb.append(" left outer join parada po on po.parada_id = b.origen_id ");
|
||||
sb.append(" left outer join parada pd on pd.parada_id = b.destino_id ");
|
||||
sb.append("where m.marca_id = :empresaId ");
|
||||
sb.append(" and re.activo = 1 ");
|
||||
sb.append(" and r.activo = 1 ");
|
||||
sb.append(" and r.orgaoconcedente_id = 3 ");
|
||||
sb.append(" and b.numasiento is not null ");
|
||||
sb.append(" and b.motivocancelacion_id is null ");
|
||||
sb.append(" and e.codantt is not null ");
|
||||
sb.append(" and c.feccorrida between to_date(:fecInicio, 'DD/MM/YYYY') and ");
|
||||
sb.append(" to_date(:fecFinal, 'DD/MM/YYYY') ");
|
||||
sb.append("group by e.codantt, ");
|
||||
sb.append(" r.prefixo, ");
|
||||
sb.append(" To_char(c.feccorrida, 'MM'), ");
|
||||
sb.append(" To_char(c.feccorrida, 'yyyy'), ");
|
||||
sb.append(" to_char(c.feccorrida, 'MM'), ");
|
||||
sb.append(" to_char(c.feccorrida, 'yyyy'), ");
|
||||
sb.append(" po.codantt, ");
|
||||
sb.append(" pd.codantt, ");
|
||||
sb.append(" r.indsentidoida, ");
|
||||
sb.append(" b.categoria_id ");
|
||||
sb.append("ORDER BY mes, ");
|
||||
sb.append("order by mes, ");
|
||||
sb.append(" ano, ");
|
||||
sb.append(" e.codantt, ");
|
||||
sb.append(" r.prefixo, ");
|
||||
sb.append(" localOrigem, ");
|
||||
sb.append(" localDestino ");
|
||||
sb.append(" localorigem, ");
|
||||
sb.append(" localdestino ");
|
||||
|
||||
Query query = getSession().createSQLQuery(sb.toString())
|
||||
.addScalar("antt", StringType.INSTANCE)
|
||||
|
@ -258,24 +412,95 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO
|
|||
query.setParameter("fecFinal", sdf.format(fecFinal));
|
||||
query.setParameter("empresaId", empresaId);
|
||||
|
||||
List<MovimentoSecoes> list = query.list();
|
||||
return query.list();
|
||||
}
|
||||
|
||||
movimentosSecoes.add("empresa;prefixo;local_origem;local_destino;mes;ano;passageiro_ida;passageiro_volta;gratuidade_ida" +
|
||||
";gratuidade_volta;idoso_ida;idoso_volta;desconto_ida;desconto_volta ");
|
||||
private List<PrefixoAntt> buscaPrefixoEmpresaOrigenDestino(Integer empresaId) {
|
||||
|
||||
List<MovimentoSecoes> result = new ArrayList<MovimentoSecoes>();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("SELECT e.codantt antt, ");
|
||||
sb.append(" ru.prefixo prefixo, ");
|
||||
sb.append(" po.codantt localOrigem, ");
|
||||
sb.append(" pd.codantt localDestino ");
|
||||
sb.append("FROM ruta_empresa re ");
|
||||
sb.append(" left join marca m ON m.marca_id = re.empresa_id ");
|
||||
sb.append(" left join empresa e ON m.empresa_id = e.empresa_id ");
|
||||
sb.append(" left join ruta ru ON re.ruta_id = ru.ruta_id, ");
|
||||
sb.append(" parada po, ");
|
||||
sb.append(" parada pd ");
|
||||
sb.append("WHERE re.empresa_id = :empresaId ");
|
||||
sb.append(" AND ru.orgaoconcedente_id = 3 ");
|
||||
sb.append(" AND re.activo = 1 AND ru.activo = 1 ");
|
||||
sb.append(" AND po.parada_id = (SELECT t.origen_id FROM tramo t ");
|
||||
sb.append(" WHERE t.tramo_id = ");
|
||||
sb.append(" (SELECT rs.tramo_id FROM ruta r ");
|
||||
sb.append(" left join ruta_secuencia rs ON rs.ruta_id = r.ruta_id ");
|
||||
sb.append(" WHERE r.prefixo IN ( ru.prefixo ) ");
|
||||
sb.append(" AND r.indsentidoida = 1 ");
|
||||
sb.append(" AND r.activo = 1 ");
|
||||
sb.append(" AND rs.activo = 1 ");
|
||||
sb.append(" AND ROWNUM <= 1 ");
|
||||
sb.append(" AND rs.numsecuencia IN ");
|
||||
sb.append(" (SELECT Min(rs.numsecuencia) ");
|
||||
sb.append(" FROM ruta r ");
|
||||
sb.append(" left join ruta_secuencia rs ");
|
||||
sb.append(" ON rs.ruta_id = ");
|
||||
sb.append(" r.ruta_id ");
|
||||
sb.append(" WHERE ");
|
||||
sb.append(" r.prefixo IN ( ru.prefixo ) ");
|
||||
sb.append(" AND r.indsentidoida = 1 ");
|
||||
sb.append(" AND r.activo = 1 ");
|
||||
sb.append(" AND rs.activo = 1) ");
|
||||
sb.append(" GROUP BY rs.tramo_id) ");
|
||||
sb.append(" AND ROWNUM <= 1) ");
|
||||
sb.append(" AND pd.parada_id = (SELECT t.destino_id ");
|
||||
sb.append(" FROM tramo t ");
|
||||
sb.append(" WHERE t.tramo_id = (SELECT rs.tramo_id ");
|
||||
sb.append(" FROM ruta r ");
|
||||
sb.append(" left join ruta_secuencia ");
|
||||
sb.append(" rs ");
|
||||
sb.append(" ON rs.ruta_id = ");
|
||||
sb.append(" r.ruta_id ");
|
||||
sb.append(" WHERE r.prefixo IN ");
|
||||
sb.append(" ( ru.prefixo ) ");
|
||||
sb.append(" AND r.indsentidoida = 1 ");
|
||||
sb.append(" AND r.activo = 1 ");
|
||||
sb.append(" AND rs.activo = 1 ");
|
||||
sb.append(" AND ROWNUM <= 1 ");
|
||||
sb.append(" AND rs.numsecuencia IN ");
|
||||
sb.append(" (SELECT Max(rs.numsecuencia) ");
|
||||
sb.append(" FROM ruta r ");
|
||||
sb.append(" left join ruta_secuencia rs ");
|
||||
sb.append(" ON rs.ruta_id = ");
|
||||
sb.append(" r.ruta_id ");
|
||||
sb.append(" WHERE ");
|
||||
sb.append(" r.prefixo IN ( ru.prefixo ) ");
|
||||
sb.append(" AND r.indsentidoida = 1 ");
|
||||
sb.append(" AND r.activo = 1 ");
|
||||
sb.append(" AND rs.activo = 1) ");
|
||||
sb.append(" GROUP BY rs.tramo_id)) ");
|
||||
sb.append("GROUP BY e.codantt, ");
|
||||
sb.append(" ru.prefixo, ");
|
||||
sb.append(" po.descparada, ");
|
||||
sb.append(" po.codantt, ");
|
||||
sb.append(" pd.descparada, ");
|
||||
sb.append(" pd.codantt ");
|
||||
sb.append("ORDER BY e.codantt, ");
|
||||
sb.append(" ru.prefixo, ");
|
||||
sb.append(" po.descparada, ");
|
||||
sb.append(" po.codantt ");
|
||||
|
||||
for (MovimentoSecoes ms : list) {
|
||||
boolean insert = agrupaMovimentoSecoes(result, ms);
|
||||
if (insert)
|
||||
result.add(ms);
|
||||
}
|
||||
Query query = getSession().createSQLQuery(sb.toString())
|
||||
.addScalar("antt", StringType.INSTANCE)
|
||||
.addScalar("prefixo", StringType.INSTANCE)
|
||||
.addScalar("localOrigem", StringType.INSTANCE)
|
||||
.addScalar("localDestino", StringType.INSTANCE);
|
||||
query.setResultTransformer(new AliasToBeanResultTransformer(PrefixoAntt.class));
|
||||
|
||||
for (MovimentoSecoes ms : result) {
|
||||
movimentosSecoes.add(ms.toString());
|
||||
}
|
||||
query.setParameter("empresaId", empresaId);
|
||||
|
||||
return query.list();
|
||||
|
||||
return movimentosSecoes;
|
||||
}
|
||||
|
||||
private boolean agrupaMovimentoSecoes(List<MovimentoSecoes> resul, MovimentoSecoes movimentoSecao) {
|
||||
|
|
|
@ -131,7 +131,7 @@ public class MovimentoSecoes {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return antt + ";" + prefixo + ";" + mes + ";" + ano + ";" + localOrigem + ";" + localDestino + ";" + passageirosIda + ";" + passageirosVolta + ";" + gratuidadePasseLivreIda + ";" + gratuidadePasseLivreVolta + ";" + gratuidadeIdosoIda + ";" + gratuidadeIdosoVolta + ";" + descontoIdosoIda + ";" + descontoIdosoVolta;
|
||||
return antt + ";" + prefixo + ";" + localOrigem + ";" + localDestino + ";" + mes + ";" + ano + ";" + passageirosIda + ";" + passageirosVolta + ";" + gratuidadePasseLivreIda + ";" + gratuidadePasseLivreVolta + ";" + gratuidadeIdosoIda + ";" + gratuidadeIdosoVolta + ";" + descontoIdosoIda + ";" + descontoIdosoVolta;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
package com.rjconsultores.ventaboletos.relatorios;
|
||||
|
||||
public class PrefixoAntt {
|
||||
private String antt;
|
||||
private String prefixo;
|
||||
private String localOrigem;
|
||||
private String localDestino;
|
||||
|
||||
public String getAntt() {
|
||||
return antt;
|
||||
}
|
||||
|
||||
public void setAntt(String antt) {
|
||||
this.antt = antt;
|
||||
}
|
||||
|
||||
public String getPrefixo() {
|
||||
return prefixo;
|
||||
}
|
||||
|
||||
public void setPrefixo(String prefixo) {
|
||||
this.prefixo = prefixo;
|
||||
}
|
||||
|
||||
public String getLocalOrigem() {
|
||||
return localOrigem;
|
||||
}
|
||||
|
||||
public void setLocalOrigem(String localOrigem) {
|
||||
this.localOrigem = localOrigem;
|
||||
}
|
||||
|
||||
public String getLocalDestino() {
|
||||
return localDestino;
|
||||
}
|
||||
|
||||
public void setLocalDestino(String localDestino) {
|
||||
this.localDestino = localDestino;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((antt == null) ? 0 : antt.hashCode());
|
||||
result = prime * result + ((localDestino == null) ? 0 : localDestino.hashCode());
|
||||
result = prime * result + ((localOrigem == null) ? 0 : localOrigem.hashCode());
|
||||
result = prime * result + ((prefixo == null) ? 0 : prefixo.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
PrefixoAntt other = (PrefixoAntt) obj;
|
||||
if (antt == null) {
|
||||
if (other.antt != null)
|
||||
return false;
|
||||
} else if (!antt.equals(other.antt))
|
||||
return false;
|
||||
if (localDestino == null) {
|
||||
if (other.localDestino != null)
|
||||
return false;
|
||||
} else if (!localDestino.equals(other.localDestino))
|
||||
return false;
|
||||
if (localOrigem == null) {
|
||||
if (other.localOrigem != null)
|
||||
return false;
|
||||
} else if (!localOrigem.equals(other.localOrigem))
|
||||
return false;
|
||||
if (prefixo == null) {
|
||||
if (other.prefixo != null)
|
||||
return false;
|
||||
} else if (!prefixo.equals(other.prefixo))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue