Solução mantis 5479

fixes bug 5479

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@50537 d1611594-4594-4d17-8e1d-87c2c4800839
master
thiago.penido 2015-11-24 17:32:10 +00:00
parent 45cba8bef5
commit c4a164bb2e
1 changed files with 137 additions and 192 deletions

View File

@ -219,18 +219,24 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO
@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<MovimentoSecoes> listResultConsulta = consultaMovimentoSecoes(fecInicio, fecFinal, empresaId);
List<MovimentoSecoes> listResultIdaVoltaInvertida = new ArrayList<MovimentoSecoes>();
for (MovimentoSecoes ms : listResultConsulta) {
for (MovimentoSecoes ms2 : listResultConsulta) {
if(ms.getLocalOrigem().equals(ms2.getLocalDestino()) && ms2.getLocalOrigem().equals(ms.getLocalDestino()) && isIda(ms)) {
ms.setDescontoIdosoVolta(ms2.getDescontoIdosoVolta());
ms.setGratuidadeIdosoVolta(ms2.getGratuidadeIdosoVolta());
ms.setGratuidadePasseLivreVolta(ms2.getGratuidadePasseLivreVolta());
ms.setPassageirosVolta(ms2.getPassageirosVolta());
listResultIdaVoltaInvertida.add(ms);
break;
}
}
}
List<String> periodos = new ArrayList<String>();
for (MovimentoSecoes ms : result) {
for (MovimentoSecoes ms : listResultIdaVoltaInvertida) {
String periodo = ms.getAno() + HYPHEN + ms.getMes();
if (!periodos.contains(periodo)) {
periodos.add(periodo);
@ -244,7 +250,7 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO
periodosPrefixos.put(pd, prefixos);
}
for (MovimentoSecoes ms : result) {
for (MovimentoSecoes ms : listResultIdaVoltaInvertida) {
String periodo = ms.getAno() + HYPHEN + ms.getMes();
PrefixoAntt prefixoAntt = new PrefixoAntt();
@ -282,11 +288,11 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO
ms.setPassageirosIda(NumberUtils.INTEGER_ZERO);
ms.setPassageirosVolta(NumberUtils.INTEGER_ZERO);
result.add(ms);
listResultIdaVoltaInvertida.add(ms);
}
}
Collections.sort(result, new Comparator() {
Collections.sort(listResultIdaVoltaInvertida, new Comparator() {
public int compare(Object o1, Object o2) {
MovimentoSecoes c1 = (MovimentoSecoes) o1;
MovimentoSecoes c2 = (MovimentoSecoes) o2;
@ -315,13 +321,19 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO
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) {
for (MovimentoSecoes ms : listResultIdaVoltaInvertida) {
movimentosSecoes.add(ms.toString());
}
return movimentosSecoes;
}
private boolean isIda(MovimentoSecoes ms) {
Integer somaVolta = (ms.getDescontoIdosoVolta() + ms.getGratuidadeIdosoVolta() + ms.getGratuidadePasseLivreVolta() + ms.getPassageirosVolta());
Integer somaIda = (ms.getDescontoIdosoIda() + ms.getGratuidadeIdosoIda() + ms.getGratuidadePasseLivreIda() + ms.getPassageirosIda());
return (somaVolta.intValue() == 0) && (somaIda.intValue() > 0);
}
private List<MovimentoSecoes> consultaMovimentoSecoes(Date fecInicio, Date fecFinal, Integer empresaId) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
@ -333,133 +345,71 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO
sb.append(" subAlias.ano, ");
sb.append(" po.codantt localOrigem, ");
sb.append(" pd.codantt localDestino, ");
sb.append(" subAlias.passageirosida, ");
sb.append(" subAlias.passageirosvolta, ");
sb.append(" subAlias.gratuidadepasselivreida, ");
sb.append(" subAlias.gratuidadepasselivrevolta, ");
sb.append(" subAlias.gratuidadeidosoida, ");
sb.append(" subAlias.gratuidadeidosovolta, ");
sb.append(" subAlias.descontoidosoida, ");
sb.append(" subAlias.descontoidosovolta ");
sb.append("FROM (SELECT subResp.antt antt, ");
sb.append(" sum(subAlias.passageirosida) as passageirosida, ");
sb.append(" sum(subAlias.passageirosvolta) as passageirosvolta, ");
sb.append(" sum(subAlias.gratuidadepasselivreida) as gratuidadepasselivreida, ");
sb.append(" sum(subAlias.gratuidadepasselivrevolta) as gratuidadepasselivrevolta, ");
sb.append(" sum(subAlias.gratuidadeidosoida) as gratuidadeidosoida, ");
sb.append(" sum(subAlias.gratuidadeidosovolta) as gratuidadeidosovolta, ");
sb.append(" sum(subAlias.descontoidosoida) as descontoidosoida, ");
sb.append(" sum(subAlias.descontoidosovolta) as descontoidosovolta ");
sb.append("FROM (SELECT distinct subResp.antt antt, ");
sb.append(" subResp.prefixo prefixo, ");
sb.append(" subResp.mes mes, ");
sb.append(" subResp.ano ano, ");
sb.append(" Nvl(ase.aliasorigen_id, subResp.localorigem) aliasorigen, ");
sb.append(" Nvl(ase.aliasdestino_id, subResp.localdestino) aliasdestino, ");
sb.append(" subResp.passageirosida passageirosida, ");
sb.append(" subResp.passageirosvolta passageirosvolta, ");
sb.append(" subResp.gratuidadepasselivreida ");
sb.append(" gratuidadepasselivreida, ");
sb.append(" subResp.gratuidadepasselivrevolta ");
sb.append(" gratuidadepasselivrevolta ");
sb.append(" , ");
sb.append(" subResp.gratuidadeidosoida ");
sb.append(" gratuidadeidosoida, ");
sb.append(" subResp.gratuidadeidosovolta ");
sb.append(" gratuidadeidosovolta, ");
sb.append(" subResp.descontoidosoida descontoidosoida, ");
sb.append(" subResp.descontoidosovolta descontoidosovolta ");
sb.append(" FROM (SELECT e.codantt antt, ");
sb.append(" coalesce(ase.aliasorigen_id, subResp.localorigem) aliasorigen, ");
sb.append(" coalesce(ase.aliasdestino_id, subResp.localdestino) aliasdestino, ");
sb.append(" subResp.passageirosida passageirosida, ");
sb.append(" subResp.passageirosvolta passageirosvolta, ");
sb.append(" subResp.gratuidadepasselivreida gratuidadepasselivreida, ");
sb.append(" subResp.gratuidadepasselivrevolta gratuidadepasselivrevolta, ");
sb.append(" subResp.gratuidadeidosoida gratuidadeidosoida, ");
sb.append(" subResp.gratuidadeidosovolta gratuidadeidosovolta, ");
sb.append(" subResp.descontoidosoida descontoidosoida, ");
sb.append(" subResp.descontoidosovolta descontoidosovolta ");
sb.append(" FROM (SELECT distinct r.ruta_id ruta_id, ");
sb.append(" 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.parada_id ");
sb.append(" ELSE pd.parada_id ");
sb.append(" END localorigem, ");
sb.append(" CASE r.indsentidoida ");
sb.append(" WHEN 1 THEN pd.parada_id ");
sb.append(" ELSE po.parada_id ");
sb.append(" END localdestino, ");
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 ");
sb.append(" grupocategoria_id IS NULL) THEN ");
sb.append(" Count(* ");
sb.append(" ) ");
sb.append(" END, 0) passageirosida, ");
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 ");
sb.append(" grupocategoria_id IS NULL) THEN ");
sb.append(" Count(* ");
sb.append(" ) ");
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 ");
sb.append(" grupocategoria_id IN ( 2 )) ");
sb.append(" 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 ");
sb.append(" grupocategoria_id IN ( 2 )) ");
sb.append(" 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 ");
sb.append(" grupocategoria_id IN ( 1 )) ");
sb.append(" THEN Count( ");
sb.append(" *) ");
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 ");
sb.append(" grupocategoria_id IN ( 1 )) ");
sb.append(" THEN Count( ");
sb.append(" *) ");
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 ");
sb.append(" grupocategoria_id IN ( 3 )) ");
sb.append(" THEN Count( ");
sb.append(" *) ");
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 ");
sb.append(" grupocategoria_id IN ( 3 )) ");
sb.append(" THEN Count( ");
sb.append(" *) ");
sb.append(" END, 0) descontoidosovolta ");
sb.append(" po.parada_id localorigem, ");
sb.append(" pd.parada_id localdestino, ");
sb.append(" Nvl(CASE WHEN r.indsentidoida = 1 AND b.categoria_id IN (SELECT categoria_id ");
sb.append(" FROM categoria ");
sb.append(" WHERE grupocategoria_id IS NULL) THEN Count(*) END, 0) passageirosida, ");
sb.append(" Nvl(CASE WHEN r.indsentidoida = 0 AND b.categoria_id IN (SELECT categoria_id ");
sb.append(" FROM categoria ");
sb.append(" WHERE grupocategoria_id IS NULL) THEN Count(*) END, 0) passageirosvolta, ");
sb.append(" Nvl(CASE WHEN r.indsentidoida = 1 AND b.categoria_id IN (SELECT categoria_id ");
sb.append(" FROM categoria ");
sb.append(" WHERE grupocategoria_id IN ( 2 )) THEN Count(*) END, 0) gratuidadepasselivreida, ");
sb.append(" Nvl(CASE WHEN r.indsentidoida = 0 AND b.categoria_id IN (SELECT categoria_id ");
sb.append(" FROM categoria ");
sb.append(" WHERE grupocategoria_id IN ( 2 )) THEN Count(*) END, 0) gratuidadepasselivrevolta, ");
sb.append(" Nvl(CASE WHEN r.indsentidoida = 1 AND b.categoria_id IN (SELECT categoria_id ");
sb.append(" FROM categoria ");
sb.append(" WHERE grupocategoria_id IN ( 1 )) THEN Count(*) END, 0) gratuidadeidosoida, ");
sb.append(" Nvl(CASE WHEN r.indsentidoida = 0 AND b.categoria_id IN (SELECT categoria_id ");
sb.append(" FROM categoria ");
sb.append(" WHERE grupocategoria_id IN ( 1 )) THEN Count(*) END, 0) gratuidadeidosovolta, ");
sb.append(" Nvl(CASE WHEN r.indsentidoida = 1 AND b.categoria_id IN (SELECT categoria_id ");
sb.append(" FROM categoria ");
sb.append(" WHERE grupocategoria_id IN ( 3 )) THEN Count(*) END, 0) descontoidosoida, ");
sb.append(" Nvl(CASE WHEN r.indsentidoida = 0 AND b.categoria_id IN (SELECT categoria_id ");
sb.append(" FROM categoria ");
sb.append(" WHERE grupocategoria_id IN ( 3 )) THEN Count(*) END, 0) descontoidosovolta ");
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 boleto b ");
sb.append(" ON c.corrida_id = b.corrida_id ");
sb.append(" AND c.feccorrida = b.feccorrida ");
sb.append(" left outer join parada po ");
sb.append(" ON po.parada_id = b.origen_id ");
sb.append(" left outer join parada pd ");
sb.append(" ON pd.parada_id = b.destino_id ");
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 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 ");
@ -467,11 +417,7 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO
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, ");
sb.append(" 'DD/MM/YYYY') AND ");
sb.append(" To_date ");
sb.append(" ( ");
sb.append(" :fecFinal, 'DD/MM/YYYY') ");
sb.append(" AND c.feccorrida BETWEEN To_date(:fecInicio, 'DD/MM/YYYY') AND To_date (:fecFinal, 'DD/MM/YYYY') ");
sb.append(" GROUP BY e.codantt, ");
sb.append(" r.prefixo, ");
sb.append(" To_char(c.feccorrida, 'MM'), ");
@ -479,34 +425,33 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO
sb.append(" po.parada_id, ");
sb.append(" pd.parada_id, ");
sb.append(" r.indsentidoida, ");
sb.append(" b.categoria_id) subResp ");
sb.append(" left join alias_servico ase ");
sb.append(" ON ( subResp.localorigem = ase.origen_id ");
sb.append(" AND subResp.localdestino = ase.destino_id ) ");
sb.append(" GROUP BY subResp.antt, ");
sb.append(" subResp.prefixo, ");
sb.append(" subResp.mes, ");
sb.append(" subResp.ano, ");
sb.append(" Nvl(ase.aliasorigen_id, subResp.localorigem), ");
sb.append(" Nvl(ase.aliasdestino_id, subResp.localdestino), ");
sb.append(" subResp.passageirosida, ");
sb.append(" subResp.passageirosvolta, ");
sb.append(" subResp.gratuidadepasselivreida, ");
sb.append(" subResp.gratuidadepasselivrevolta, ");
sb.append(" subResp.gratuidadeidosoida, ");
sb.append(" subResp.gratuidadeidosovolta, ");
sb.append(" subResp.descontoidosoida, ");
sb.append(" subResp.descontoidosovolta) subAlias ");
sb.append(" inner join parada po ");
sb.append(" ON ( subAlias.aliasorigen = po.parada_id ) ");
sb.append(" inner join parada pd ");
sb.append(" ON ( subAlias.aliasdestino = pd.parada_id ) ");
sb.append(" b.categoria_id, ");
sb.append(" r.ruta_id ");
sb.append( " ORDER BY e.codantt, ");
sb.append( " r.prefixo) subResp ");
sb.append(" left join alias_servico ase ON ( subResp.localorigem = ase.origen_id AND subResp.localdestino = ase.destino_id and ase.ruta_id = subResp.ruta_id) ");
sb.append( " ORDER BY subResp.antt,");
sb.append( " subResp.prefixo");
sb.append( " ) subAlias");
sb.append(" inner join parada po ON ( subAlias.aliasorigen = po.parada_id ) ");
sb.append(" inner join parada pd ON ( subAlias.aliasdestino = pd.parada_id ) ");
sb.append("GROUP BY mes, ");
sb.append(" ano, ");
sb.append(" antt, ");
sb.append(" prefixo, ");
sb.append(" po.codantt, ");
sb.append(" pd.codantt ");
sb.append("ORDER BY mes, ");
sb.append(" ano, ");
sb.append(" antt, ");
sb.append(" prefixo, ");
sb.append(" localorigem, ");
sb.append(" localdestino ");
sb.append(" localOrigem, ");
sb.append(" localDestino ");
Query query = getSession().createSQLQuery(sb.toString())
.addScalar("antt", StringType.INSTANCE)
@ -670,34 +615,34 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO
}
private boolean agrupaMovimentoSecoes(List<MovimentoSecoes> resul, MovimentoSecoes movimentoSecao) {
if (resul.isEmpty()) {
return true;
} else {
for (MovimentoSecoes ms : resul) {
if (ms.getPrefixo().equals(movimentoSecao.getPrefixo()) && ms.getMes().equals(movimentoSecao.getMes())
&& ms.getAno().equals(movimentoSecao.getAno()) && ms.getLocalOrigem().equals(movimentoSecao.getLocalOrigem())
&& ms.getLocalDestino().equals(movimentoSecao.getLocalDestino())) {
ms.setDescontoIdosoIda(ms.getDescontoIdosoIda() + movimentoSecao.getDescontoIdosoIda());
ms.setDescontoIdosoVolta(ms.getDescontoIdosoVolta() + movimentoSecao.getDescontoIdosoVolta());
ms.setGratuidadeIdosoIda(ms.getGratuidadeIdosoIda() + movimentoSecao.getGratuidadeIdosoIda());
ms.setGratuidadeIdosoVolta(ms.getGratuidadeIdosoVolta() + movimentoSecao.getGratuidadeIdosoVolta());
ms.setGratuidadePasseLivreIda(ms.getGratuidadePasseLivreIda() + movimentoSecao.getGratuidadePasseLivreIda());
ms.setGratuidadePasseLivreVolta(ms.getGratuidadePasseLivreVolta() + movimentoSecao.getGratuidadePasseLivreVolta());
ms.setPassageirosIda(ms.getPassageirosIda() + movimentoSecao.getPassageirosIda());
ms.setPassageirosVolta(ms.getPassageirosVolta() + movimentoSecao.getPassageirosVolta());
return false;
}
}
}
return true;
}
// private boolean agrupaMovimentoSecoes(List<MovimentoSecoes> resul, MovimentoSecoes movimentoSecao) {
//
// if (resul.isEmpty()) {
// return true;
// } else {
// for (MovimentoSecoes ms : resul) {
// if (ms.getPrefixo().equals(movimentoSecao.getPrefixo()) && ms.getMes().equals(movimentoSecao.getMes())
// && ms.getAno().equals(movimentoSecao.getAno()) && ms.getLocalOrigem().equals(movimentoSecao.getLocalOrigem())
// && ms.getLocalDestino().equals(movimentoSecao.getLocalDestino())) {
//
// ms.setDescontoIdosoIda(ms.getDescontoIdosoIda() + movimentoSecao.getDescontoIdosoIda());
// ms.setDescontoIdosoVolta(ms.getDescontoIdosoVolta() + movimentoSecao.getDescontoIdosoVolta());
//
// ms.setGratuidadeIdosoIda(ms.getGratuidadeIdosoIda() + movimentoSecao.getGratuidadeIdosoIda());
// ms.setGratuidadeIdosoVolta(ms.getGratuidadeIdosoVolta() + movimentoSecao.getGratuidadeIdosoVolta());
//
// ms.setGratuidadePasseLivreIda(ms.getGratuidadePasseLivreIda() + movimentoSecao.getGratuidadePasseLivreIda());
// ms.setGratuidadePasseLivreVolta(ms.getGratuidadePasseLivreVolta() + movimentoSecao.getGratuidadePasseLivreVolta());
//
// ms.setPassageirosIda(ms.getPassageirosIda() + movimentoSecao.getPassageirosIda());
// ms.setPassageirosVolta(ms.getPassageirosVolta() + movimentoSecao.getPassageirosVolta());
//
// return false;
// }
// }
// }
//
// return true;
// }
}