SISDAP Relatório ANTT (fixed bug #5247)

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@35248 d1611594-4594-4d17-8e1d-87c2c4800839
master
julio 2014-05-02 21:32:08 +00:00
parent 400c964c7c
commit 0bc35b3779
2 changed files with 163 additions and 200 deletions

View File

@ -3,8 +3,6 @@ package com.rjconsultores.ventaboletos.dao;
import java.util.Date;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.Empresa;
public interface SisdapDAO {
public List<String> getMovimentoLinhas(Date fecInicio, Date fecFinal, Integer empresaId);
public List<String> getMovimentoSecoes(Date fecInicio, Date fecFinal, Integer empresaId);

View File

@ -14,110 +14,101 @@ import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.SisdapDAO;
import com.rjconsultores.ventaboletos.entidad.Empresa;
@Repository("sisdapDAO")
public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO {
@Autowired
public SisdapHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
setSessionFactory(factory);
}
public SisdapHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
setSessionFactory(factory);
}
@Override
public List<String> getMovimentoLinhas(Date fecInicio, Date fecFinal, Integer empresaId) {
List<String> movimentoLinhas = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
StringBuilder qry = new StringBuilder();
qry.append("SELECT DISTINCT e.codantt, ");
qry.append(" r.prefixo, ");
qry.append(" (SELECT Count(DISTINCT bi.origen_id) ");
qry.append(" FROM boleto bi ");
qry.append(" join ruta ri ");
qry.append(" ON ri.ruta_id = bi.ruta_id ");
qry.append(" WHERE bi.empresacorrida_id = b.empresacorrida_id ");
qry.append(" AND bi.motivocancelacion_id IS NULL ");
qry.append(" AND NOT bi.numasiento IS NULL ");
qry.append(" AND ri.indsentidoida = 1 ");
qry.append(" AND bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY')) AS ");
qry.append(" viagens_ida, ");
qry.append(" (SELECT Count(DISTINCT bv.origen_id) ");
qry.append(" FROM boleto bv ");
qry.append(" join ruta rv ");
qry.append(" ON rv.ruta_id = bv.ruta_id ");
qry.append(" WHERE bv.empresacorrida_id = b.empresacorrida_id ");
qry.append(" AND bv.motivocancelacion_id IS NULL ");
qry.append(" AND NOT bv.numasiento IS NULL ");
qry.append(" AND rv.indsentidoida = 0 ");
qry.append(" AND bv.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY')) AS ");
qry.append(" viagens_volta, ");
qry.append(" (SELECT Nvl(SUM(d.cantasientos), SUM(d2.cantasientos)) ");
qry.append(" FROM boleto bi ");
qry.append(" join ruta rv ");
qry.append(" ON rv.ruta_id = bi.ruta_id ");
qry.append(" join corrida c ");
qry.append(" ON bi.corrida_id = c.corrida_id ");
qry.append(" left join diagrama_autobus d ");
qry.append(" ON d.diagramaautobus_id = c.diagramaautobus_id ");
qry.append(" left join rol_operativo ro ");
qry.append(" ON c.roloperativo_id = ro.roloperativo_id ");
qry.append(" left join diagrama_autobus d2 ");
qry.append(" ON d2.diagramaautobus_id = ro.diagramaautobus_id ");
qry.append(" WHERE bi.empresacorrida_id = b.empresacorrida_id ");
qry.append(" AND bi.motivocancelacion_id IS NULL ");
qry.append(" AND rv.indsentidoida = 1 ");
qry.append(" AND NOT bi.numasiento IS NULL ");
qry.append(" AND bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY')) AS ");
qry.append(" lugares_ida, ");
qry.append(" (SELECT Nvl(SUM(d.cantasientos), SUM(d2.cantasientos)) ");
qry.append(" FROM boleto bv ");
qry.append(" join ruta rv ");
qry.append(" ON rv.ruta_id = bv.ruta_id ");
qry.append(" join corrida c ");
qry.append(" ON bv.corrida_id = c.corrida_id ");
qry.append(" left join diagrama_autobus d ");
qry.append(" ON d.diagramaautobus_id = c.diagramaautobus_id ");
qry.append(" left join rol_operativo ro ");
qry.append(" ON c.roloperativo_id = ro.roloperativo_id ");
qry.append(" left join diagrama_autobus d2 ");
qry.append(" ON d2.diagramaautobus_id = ro.diagramaautobus_id ");
qry.append(" WHERE bv.empresacorrida_id = b.empresacorrida_id ");
qry.append(" AND bv.motivocancelacion_id IS NULL ");
qry.append(" AND NOT bv.numasiento IS NULL ");
qry.append(" AND rv.indsentidoida = 0 ");
qry.append(" AND bv.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY')) AS ");
qry.append(" lugares_volta ");
qry.append("FROM boleto b ");
qry.append(" join ruta r ");
qry.append(" ON r.ruta_id = b.ruta_id ");
qry.append(" join empresa e on e.empresa_id = b.empresacorrida_id ");
qry.append("WHERE b.motivocancelacion_id IS NULL ");
qry.append(" AND b.numasiento IS NOT NULL ");
qry.append(" AND e.codantt IS NOT NULL ");
qry.append(" AND e.empresa_id = :empresa_id ");
qry.append(" AND b.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') ");
Query query = getSession().createSQLQuery(qry.toString())
StringBuilder sb = new StringBuilder();
sb.append("select e.codantt, ");
sb.append(" r.prefixo, ");
sb.append(" nvl(case subviagens.sentido ");
sb.append(" when 1 then count(subviagens.ruta) ");
sb.append(" end, 0) viagens_ida, ");
sb.append(" nvl(case subviagens.sentido ");
sb.append(" when 0 then count(subviagens.ruta) ");
sb.append(" end, 0) viagens_volta, ");
sb.append(" nvl(case subviagens.sentido ");
sb.append(" when 1 then ( da.cantasientos * count(subviagens.ruta) ) ");
sb.append(" end, 0) lugares_ida, ");
sb.append(" nvl(case subviagens.sentido ");
sb.append(" when 0 then ( da.cantasientos * count(subviagens.ruta) ) ");
sb.append(" end, 0) lugares_volta, ");
sb.append(" r.ruta_id, ");
sb.append(" e.empresa_id ");
sb.append("from corrida c ");
sb.append(" inner join ruta r ");
sb.append(" on r.ruta_id = c.ruta_id ");
sb.append(" inner join empresa e ");
sb.append(" on e.empresa_id = c.empresacorrida_id ");
sb.append(" left join rol_operativo ro ");
sb.append(" on c.roloperativo_id = ro.roloperativo_id ");
sb.append(" left join diagrama_autobus da ");
sb.append(" on da.diagramaautobus_id = ro.diagramaautobus_id, ");
sb.append(" (select ru.ruta_id as ruta, ");
sb.append(" bo.corrida_id as corrida, ");
sb.append(" bo.feccorrida as feccorrida, ");
sb.append(" bo.empresacorrida_id as empresacorrida, ");
sb.append(" ru.indsentidoida as sentido ");
sb.append(" from boleto bo ");
sb.append(" left join ruta ru ");
sb.append(" on ru.ruta_id = bo.ruta_id ");
sb.append(" where bo.numasiento is not null ");
sb.append(" and bo.motivocancelacion_id is null ");
sb.append(" and bo.feccorrida between to_date(:fecInicio, 'DD/MM/YYYY') and ");
sb.append(" to_date(:fecFinal, 'DD/MM/YYYY') ");
sb.append(" group by ru.ruta_id, ");
sb.append(" bo.corrida_id, ");
sb.append(" bo.feccorrida, ");
sb.append(" bo.empresacorrida_id, ");
sb.append(" ru.indsentidoida) subviagens ");
sb.append("where e.empresa_id = :empresa_id ");
sb.append(" and subviagens.ruta = r.ruta_id ");
sb.append(" and subviagens.corrida = c.corrida_id ");
sb.append(" and subviagens.feccorrida = c.feccorrida ");
sb.append(" and subviagens.empresacorrida = e.empresa_id ");
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(" da.cantasientos, ");
sb.append(" r.ruta_id, ");
sb.append(" e.empresa_id, ");
sb.append(" subviagens.sentido ");
sb.append("order by r.ruta_id ");
Query query = getSession().createSQLQuery(sb.toString())
.setParameter("fecInicio", sdf.format(fecInicio))
.setParameter("fecFinal", sdf.format(fecFinal))
.setParameter("empresa_id", empresaId);
List<Object[]> result = query.list();
movimentoLinhas.add("empresa;prefixo;mes;ano;viagem_ida;viagem_volta;lugar_ida;lugar_volta");
Calendar cal = Calendar.getInstance();
cal.setTime(fecInicio);
int month = cal.get(Calendar.MONTH) + 1; // o mês na classe Calendar é zero based
int year = cal.get(Calendar.YEAR);
for (Object[] row : result){
for (Object[] row : result) {
movimentoLinhas.add(row[0].toString() + ";"
+ row[1].toString() + ";" +
+ month + ";"
+ year + ";"
+ row[2].toString() + ";"
+ row[3].toString() + ";"
+ row[4].toString() + ";"
+month + ";"
+ year + ";"
+ row[2].toString() + ";"
+ row[3].toString() + ";"
+ row[4].toString() + ";"
+ row[5].toString());
}
return movimentoLinhas;
@ -127,134 +118,108 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO
public List<String> getMovimentoSecoes(Date fecInicio, Date fecFinal, Integer empresaId) {
List<String> movimentoSecoes = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
StringBuilder qry = new StringBuilder();
qry.append("select distinct e.codantt, ");
qry.append(" r.prefixo, ");
qry.append(" po.codantt as Local_Origem, ");
qry.append(" pd.codantt as Local_Destino, ");
qry.append(" (select count(bi.boleto_id) ");
qry.append(" from boleto bi ");
qry.append(" join ruta ri ");
qry.append(" on ri.ruta_id = bi.ruta_id ");
qry.append(" where bi.empresacorrida_id = b.empresacorrida_id ");
qry.append(" and bi.motivocancelacion_id is null ");
qry.append(" and not bi.numasiento is null ");
qry.append(" and ri.indsentidoida = 1 ");
qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY')) as passageiros_ida, ");
qry.append(" (select count(bi.boleto_id) ");
qry.append(" from boleto bi ");
qry.append(" join ruta ri ");
qry.append(" on ri.ruta_id = bi.ruta_id ");
qry.append(" where bi.empresacorrida_id = b.empresacorrida_id ");
qry.append(" and bi.motivocancelacion_id is null ");
qry.append(" and not bi.numasiento is null ");
qry.append(" and ri.indsentidoida = 0 ");
qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY')) as passageiros_volta, ");
qry.append(" (select nvl(sum(bi.categoria_id), 0) ");
qry.append(" from boleto bi ");
qry.append(" join ruta ri ");
qry.append(" on ri.ruta_id = bi.ruta_id ");
qry.append(" where bi.empresacorrida_id = b.empresacorrida_id ");
qry.append(" and bi.motivocancelacion_id is null ");
qry.append(" and not bi.numasiento is null ");
qry.append(" and ri.indsentidoida = 1 ");
qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') ");
qry.append(" and bi.categoria_id = 2) as gratuidade_passe_livre_ida, ");
qry.append(" (select nvl(sum(bi.categoria_id), 0) ");
qry.append(" from boleto bi ");
qry.append(" join ruta ri ");
qry.append(" on ri.ruta_id = bi.ruta_id ");
qry.append(" where bi.empresacorrida_id = b.empresacorrida_id ");
qry.append(" and bi.motivocancelacion_id is null ");
qry.append(" and not bi.numasiento is null ");
qry.append(" and ri.indsentidoida = 0 ");
qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') ");
qry.append(" and bi.categoria_id = 2) as gratuidade_passe_livre_volta, ");
qry.append(" (select nvl(sum(bi.categoria_id), 0) ");
qry.append(" from boleto bi ");
qry.append(" join ruta ri ");
qry.append(" on ri.ruta_id = bi.ruta_id ");
qry.append(" where bi.empresacorrida_id = b.empresacorrida_id ");
qry.append(" and bi.motivocancelacion_id is null ");
qry.append(" and not bi.numasiento is null ");
qry.append(" and ri.indsentidoida = 1 ");
qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') ");
qry.append(" and bi.categoria_id = 1) as gratuidade_idoso_ida, ");
qry.append(" (select nvl(sum(bi.categoria_id), 0) ");
qry.append(" from boleto bi ");
qry.append(" join ruta ri ");
qry.append(" on ri.ruta_id = bi.ruta_id ");
qry.append(" where bi.empresacorrida_id = b.empresacorrida_id ");
qry.append(" and bi.motivocancelacion_id is null ");
qry.append(" and not bi.numasiento is null ");
qry.append(" and ri.indsentidoida = 0 ");
qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') ");
qry.append(" and bi.categoria_id = 1) as gratuidade_idoso_volta, ");
qry.append(" (select nvl(sum(bi.categoria_id), 0) ");
qry.append(" from boleto bi ");
qry.append(" join ruta ri ");
qry.append(" on ri.ruta_id = bi.ruta_id ");
qry.append(" where bi.empresacorrida_id = b.empresacorrida_id ");
qry.append(" and bi.motivocancelacion_id is null ");
qry.append(" and not bi.numasiento is null ");
qry.append(" and ri.indsentidoida = 1 ");
qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') ");
qry.append(" and bi.categoria_id = 3) as desconto_idoso_ida, ");
qry.append(" (select nvl(sum(bi.categoria_id), 0) ");
qry.append(" from boleto bi ");
qry.append(" join ruta ri ");
qry.append(" on ri.ruta_id = bi.ruta_id ");
qry.append(" where bi.empresacorrida_id = b.empresacorrida_id ");
qry.append(" and bi.motivocancelacion_id is null ");
qry.append(" and not bi.numasiento is null ");
qry.append(" and ri.indsentidoida = 0 ");
qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') ");
qry.append(" and bi.categoria_id = 3) as desconto_idoso_volta ");
qry.append("from boleto b ");
qry.append(" join ruta r ");
qry.append(" on r.ruta_id = b.ruta_id ");
qry.append(" join parada po ");
qry.append(" on po.parada_id = b.origen_id ");
qry.append(" join parada pd ");
qry.append(" on pd.parada_id = b.destino_id ");
qry.append(" join empresa e on e.empresa_id = b.empresacorrida_id ");
qry.append("where b.motivocancelacion_id is null ");
qry.append(" and b.numasiento IS NOT NULL ");
qry.append(" AND e.codantt IS NOT NULL ");
qry.append(" AND e.empresa_id = :empresa_id ");
qry.append(" and b.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') ");
Query query = getSession().createSQLQuery(qry.toString())
StringBuilder sb = new StringBuilder();
sb.append("select distinct e.codantt, ");
sb.append(" r.ruta_id, ");
sb.append(" r.prefixo, ");
sb.append(" po.codantt as local_origem, ");
sb.append(" pd.codantt as local_destino, ");
sb.append(" nvl(case r.indsentidoida ");
sb.append(" when 1 then count(*) ");
sb.append(" end, 0) passageiros_ida, ");
sb.append(" nvl(case r.indsentidoida ");
sb.append(" when 0 then count(*) ");
sb.append(" end, 0) passageiros_volta, ");
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(" end, 0) gratuidade_passe_livre_ida, ");
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(" end, 0) gratuidade_passe_livre_volta, ");
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) gratuidade_idoso_ida, ");
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) gratuidade_idoso_volta, ");
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) desconto_idoso_ida, ");
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) desconto_idoso_volta ");
sb.append("from boleto b ");
sb.append(" join ruta r ");
sb.append(" on r.ruta_id = b.ruta_id ");
sb.append(" join parada po ");
sb.append(" on po.parada_id = b.origen_id ");
sb.append(" join parada pd ");
sb.append(" on pd.parada_id = b.destino_id ");
sb.append(" join empresa e ");
sb.append(" on e.empresa_id = b.empresacorrida_id ");
sb.append("where 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 = :empresa_id ");
sb.append(" and b.feccorrida between to_date(:fecInicio, 'DD/MM/YYYY') and to_date(:fecFinal, 'DD/MM/YYYY') ");
sb.append("group by e.codantt, ");
sb.append(" r.ruta_id, ");
sb.append(" r.prefixo, ");
sb.append(" po.codantt, ");
sb.append(" pd.codantt, ");
sb.append(" r.indsentidoida, ");
sb.append(" b.categoria_id ");
Query query = getSession().createSQLQuery(sb.toString())
.setParameter("fecInicio", sdf.format(fecInicio))
.setParameter("fecFinal", sdf.format(fecFinal))
.setParameter("empresa_id", empresaId);
List<Object[]> result = query.list();
movimentoSecoes.add("empresa;prefixo;local_origem;local_destino;mes;ano;passageiro_ida;passageiro_volta;gratuidade_ida"+
List<Object[]> result = query.list();
movimentoSecoes.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 ");
Calendar cal = Calendar.getInstance();
cal.setTime(fecInicio);
int month = cal.get(Calendar.MONTH) + 1; // o mês na classe Calendar é zero based
int year = cal.get(Calendar.YEAR);
for (Object[] row : result){
for (Object[] row : result) {
movimentoSecoes.add(row[0].toString() + ";"
+ row[1].toString() + ";"
+ row[2].toString() + ";"
+ row[3].toString() + ";"
+ month + ";"
+ year + ";"
+ row[4].toString() + ";"
+ row[1].toString() + ";"
+ row[2].toString() + ";"
+ row[3].toString() + ";"
+ month + ";"
+ year + ";"
+ row[4].toString() + ";"
+ row[5].toString() + ";"
+ row[6].toString() + ";"
+ row[6].toString() + ";"
+ row[7].toString() + ";"
+ row[8].toString() + ";"
+ row[8].toString() + ";"
+ row[9].toString() + ";"
+ row[10].toString() + ";"
+ row[10].toString() + ";"
+ row[11].toString());
}
return movimentoSecoes;
}
}