try{
StringBuilder baseQuery = null;
StringBuilder where = null;
DetalhamentoTotaisConta detalheConta = new DetalhamentoTotaisConta();
if(efItem.getIndAcumuladoEfiec() == null || "".equals(efItem.getIndAcumuladoEfiec().trim())) {
return detalheConta;
}
Calendar dataIniExe = Data.getGregorianCalendar(exercicio.getDataInicialExe());
Calendar dataFimExe = Data.getGregorianCalendar(exercicio.getDataFinalExe());
/* O Calendar retorna os meses de 0 a 11 */
/* e para comparar no HQL soma-se 1 */
int mesIniExe = dataIniExe.get(Calendar.MONTH) + 1;
int mesFimExe = dataFimExe.get(Calendar.MONTH) + 1;
Query query = null;
String indManual = "N";
List lista = new ArrayList();
if("S".equals(efItem.getIndAcumuladoEfiec())) {
for(int i=0; i<=1; i++) {
baseQuery = new StringBuilder();
where = new StringBuilder();
baseQuery.append("select itemEstRealizado.valor1Efier, ")
.append("itemEstRealizado.valor2Efier,")
.append("itemEstRealizado.valor3Efier,")
.append("itemEstRealizado.valor4Efier,")
.append("itemEstRealizado.valor5Efier,")
.append("itemEstRealizado.valor6Efier,")
.append("itemEstRealizado.indManualEfier ")
.append("from EfItemEstRealizadoEfier itemEstRealizado ");
where.append(" where itemEstRealizado.contaSistemaOrcEfier like :conta ")
.append(" and (((itemEstRealizado.anoReferenciaEfier = :anoIni and itemEstRealizado.mesReferenciaEfier >= :mesIni)")
.append(" or itemEstRealizado.anoReferenciaEfier > :anoIni )")
.append(" and ((itemEstRealizado.anoReferenciaEfier = :anoFim and itemEstRealizado.mesReferenciaEfier <= :mesFim)")
.append(" or itemEstRealizado.anoReferenciaEfier < :anoFim))")
.append(" and itemEstRealizado.indManualEfier = :indManualEfier))")
.append(" order by itemEstRealizado.anoReferenciaEfier desc, itemEstRealizado.mesReferenciaEfier desc");
query = this.getSession().createQuery(baseQuery.toString() + where);
//N�o apagar essas linhas de forma nenhuma.
query.setString("conta", efItem.getContaSistemaOrcEfiec());
// String[] parametros = efItem.getContaSistemaOrcEfiec().split(" ");
// query.setString("conta", parametros[0] + "%" + parametros[2] + " " + parametros[3]);
// query.setString("conta", parametros[0] + "%" + parametros[1] + " " + parametros[2]);
query.setLong("anoIni", Long.parseLong(String.valueOf(dataIniExe.get(Calendar.YEAR))));
query.setLong("mesIni", Long.parseLong(String.valueOf(mesIniExe)));
query.setLong("anoFim", Long.parseLong(String.valueOf(dataFimExe.get(Calendar.YEAR))));
query.setLong("mesFim", Long.parseLong(String.valueOf(mesFimExe)));
query.setString("indManualEfier", indManual);
query.setMaxResults(1);
lista.addAll(query.list());
if("S".equals(indManual)) {
indManual = "S";
}
}
} else if("N".equals(efItem.getIndAcumuladoEfiec())) {
baseQuery.append("select sum(itemEstRealizado.valor1Efier), ")
.append("sum(itemEstRealizado.valor2Efier),")
.append("sum(itemEstRealizado.valor3Efier),")
.append("sum(itemEstRealizado.valor4Efier),")
.append("sum(itemEstRealizado.valor5Efier),")
.append("sum(itemEstRealizado.valor6Efier),")
.append("itemEstRealizado.indManualEfier ")
.append("from EfItemEstRealizadoEfier itemEstRealizado ");
where.append(" where itemEstRealizado.contaSistemaOrcEfier like :conta ")
.append(" and (((itemEstRealizado.anoReferenciaEfier = :anoIni and itemEstRealizado.mesReferenciaEfier >= :mesIni)")
.append(" or itemEstRealizado.anoReferenciaEfier > :anoIni )")
.append(" and ((itemEstRealizado.anoReferenciaEfier = :anoFim and itemEstRealizado.mesReferenciaEfier <= :mesFim)")
.append(" or itemEstRealizado.anoReferenciaEfier < :anoFim))")
.append(" group by itemEstRealizado.indManualEfier")
.append(" order by itemEstRealizado.indManualEfier asc");
query = this.getSession().createQuery(baseQuery.toString() + where);
//N�o apagar essas linhas de forma nenhuma.
query.setString("conta", efItem.getContaSistemaOrcEfiec());
// String[] parametros = efItem.getContaSistemaOrcEfiec().split(" ");
// query.setString("conta", parametros[0] + "%" + parametros[2] + " " + parametros[3]);
// query.setString("conta", parametros[0] + "%" + parametros[1] + " " + parametros[2]);
query.setLong("anoIni", Long.parseLong(String.valueOf(dataIniExe.get(Calendar.YEAR))));
query.setLong("mesIni", Long.parseLong(String.valueOf(mesIniExe)));
query.setLong("anoFim", Long.parseLong(String.valueOf(dataFimExe.get(Calendar.YEAR))));
query.setLong("mesFim", Long.parseLong(String.valueOf(mesFimExe)));
lista.addAll(query.list());
}
Iterator it = lista.iterator();
Double[][] arrayDetalhesContas = detalheConta.getDetalhesContas();
int linha = 0;
while (it.hasNext()){
Object aux[] = (Object[]) it.next();