//Melhoria de performance
//Iterator itIndResult = indResultados.iterator();
//while(itIndResult.hasNext()){
for(Iterator itIndResult = indResultados.iterator(); itIndResult.hasNext();){
AcompRealFisicoArf indicador = (AcompRealFisicoArf) itIndResult.next();
String tipoQtde = indicador.getItemEstrtIndResulIettr().getIndTipoQtde();
String situacao = "";
if(indicador.getSituacaoSit()!=null) {
situacao = indicador.getSituacaoSit().getDescricaoSit();
}
//TODO: tempor�rio para SEPL:
// if("/ecar".equals(request.getContextPath())) {
// if("".equals(situacao)) {
// situacao = "Em andamento";
// }
// }
exibirGrupoIndicador = "N";
if(configura.getSisGrupoAtributoSgaByCodSgaGrAtrMetasFisicas() != null){
if(indicador.getItemEstrtIndResulIettr().getSisAtributoSatb() != null && !grupoIndicador.equals(indicador.getItemEstrtIndResulIettr().getSisAtributoSatb().getDescricaoSatb())){
grupoIndicador = indicador.getItemEstrtIndResulIettr().getSisAtributoSatb().getDescricaoSatb();
exibirGrupoIndicador = "S";
}
else if(indicador.getItemEstrtIndResulIettr().getSisAtributoSatb() == null && !"".equals(grupoIndicador)) {
exibirGrupoIndicador = "S";
}
}
double totalRealizado = 0;
double totalPrevisto = 0;
String labelSituacaoParecer = new ConfiguracaoDao(request).getConfiguracao().getLabelSituacaoParecer();
builder.addNode("indicadorAcomp",
"nome=\"" + builder.normalize(Util.normalizaCaracterMarcador(indicador.getItemEstrtIndResulIettr().getNomeIettir())) + "\"" +
" labelSituacaoParecer=\"" + builder.normalize(Util.normalizaCaracterMarcador(labelSituacaoParecer)) + "\"" +
" situacao=\"" + builder.normalize(Util.normalizaCaracterMarcador(situacao)) + "\"" +
" realizadoNoMes=\"" + builder.normalize(Pagina.trocaNullMoeda(indicador.getQtdRealizadaArf()) + " " + indicador.getItemEstrtIndResulIettr().getUnidMedidaIettr()) + "\"" +
" numeroExercicios=\"" + builder.normalize(String.valueOf(numeroExercicios)) + "\"" +
" mostrarProjecao=\"" + builder.normalize(Util.normalizaCaracterMarcador(mostrarProjecao)) + "\"" +
" grupoIndicador=\"" + builder.normalize(Util.normalizaCaracterMarcador(grupoIndicador)) + "\"" +
" exibirGrupoIndicador=\"" + builder.normalize(Util.normalizaCaracterMarcador(exibirGrupoIndicador)) + "\"" +
" numeroExe=\"" + builder.normalize(Util.normalizaCaracterMarcador(String.valueOf(numeroExercicios))) + "\""
);
if(indicador.getItemEstrtIndResulIettr().getSisAtributoSatb() == null && !"".equals(grupoIndicador)) {
grupoIndicador = "";
}
List valoresR = new ArrayList();
List valoresP = new ArrayList();
for(ExercicioExe exercicio : exercicios){
double realizadoNoExercicio = 0;
//Comentado por aleixo em 18/04/2007
// if(exercicio.equals(itemAri.getAcompReferenciaAref().getExercicioExe())){
// // Se o exerc�cio em quest�o � mesmo exercicio do periodo de refer�ncia e o indicador for acumul�vel
// // soma todas as quantidades at� o mes/ano do periodo
// if("S".equals(indicador.getItemEstrtIndResulIettr().getIndAcumulavelIettr())){
// AcompReferenciaAref aref = itemAri.getAcompReferenciaAref();
// int mesRef = Integer.valueOf(aref.getMesAref()).intValue();
// int anoRef = Integer.valueOf(aref.getAnoAref()).intValue();
// realizadoNoExercicio = acompRealFisicoDao.getQtdRealizadaExercicio(exercicio, indicador.getItemEstrtIndResulIettr(), mesRef, anoRef);
// } else {
// //se n�o for acumul�vel o realizado no exercicio � o realizado no periodo
// /*if (indicador.getQtdRealizadaArf() != null)
// realizadoNoExercicio = indicador.getQtdRealizadaArf().doubleValue();
// */
// realizadoNoExercicio = acompRealFisicoDao.getQtdRealizadaExercicioNaoAcumulavel(exercicio, indicador.getItemEstrtIndResulIettr(), itemAri.getAcompReferenciaAref());
// }
// } else {
// if("S".equals(indicador.getItemEstrtIndResulIettr().getIndAcumulavelIettr())){
// realizadoNoExercicio = acompRealFisicoDao.getQtdRealizadaExercicio(exercicio, indicador.getItemEstrtIndResulIettr(), itemAri.getAcompReferenciaAref());
// } else {
// realizadoNoExercicio = acompRealFisicoDao.getQtdRealizadaExercicioNaoAcumulavel(exercicio, indicador.getItemEstrtIndResulIettr(), itemAri.getAcompReferenciaAref());
// }
// }
if("S".equals(indicador.getItemEstrtIndResulIettr().getIndAcumulavelIettr())){
realizadoNoExercicio = acompRealFisicoDao.getQtdRealizadaExercicio(exercicio, indicador.getItemEstrtIndResulIettr(), aref);
} else {
realizadoNoExercicio = acompRealFisicoDao.getQtdRealizadaExercicioNaoAcumulavel(exercicio, indicador.getItemEstrtIndResulIettr(), aref);
}
double previstoNoExercicio = itemEstrtIndResulDao.getQtdPrevistoExercicio(indicador.getItemEstrtIndResulIettr(), exercicio);
if("S".equals(indicador.getItemEstrtIndResulIettr().getIndAcumulavelIettr())){
totalRealizado += realizadoNoExercicio;
totalPrevisto += previstoNoExercicio;
}else{
totalRealizado = realizadoNoExercicio;
totalPrevisto = previstoNoExercicio;
}
valoresR.add(realizadoNoExercicio);
valoresP.add(previstoNoExercicio);
String strPrevistoExe = "";
String strRealizadoExe = "";
if ("Q".equalsIgnoreCase(tipoQtde)){ //Quantidade --> sem casas decimais
strPrevistoExe = Pagina.trocaNullNumeroSemDecimal(previstoNoExercicio);
strRealizadoExe = Pagina.trocaNullNumeroSemDecimal(realizadoNoExercicio);
}
else {
strPrevistoExe = Pagina.trocaNullMoeda(previstoNoExercicio);
strRealizadoExe = Pagina.trocaNullMoeda(realizadoNoExercicio);
}
builder.addClosedNode("valorExercicio",
"exercicio=\"" + builder.normalize(Util.normalizaCaracterMarcador(exercicio.getDescricaoExe())) + "\"" +
// " valorPrevisto=\"" + builder.normalize(Pagina.trocaNullMoeda(previstoNoExercicio)) + "\"" +
// " valorRealizado=\"" + builder.normalize(Pagina.trocaNullMoeda(realizadoNoExercicio)) + "\"");
" valorPrevisto=\"" + builder.normalize(strPrevistoExe) + "\"" +
" valorRealizado=\"" + builder.normalize(strRealizadoExe) + "\"");
}
Collections.reverse(valoresR);
Collections.reverse(valoresP);
totalPrevisto = acompRealFisicoDao.getSomaValoresArfs(indicador.getItemEstrtIndResulIettr(), valoresP).doubleValue();
totalRealizado = acompRealFisicoDao.getSomaValoresArfs(indicador.getItemEstrtIndResulIettr(), valoresR).doubleValue();
double realizadoPrevisto = 0;
if(totalPrevisto > 0) {
realizadoPrevisto = ((totalRealizado/totalPrevisto) * 100);
}
String strTotalPrevisto = "";
String strTotalRealizado = "";
if ("Q".equalsIgnoreCase(tipoQtde)){ //Quantidade --> sem casas decimais
strTotalPrevisto = Pagina.trocaNullNumeroSemDecimal(totalPrevisto);
strTotalRealizado = Pagina.trocaNullNumeroSemDecimal(totalRealizado);
}
else {
strTotalPrevisto = Pagina.trocaNullMoeda(totalPrevisto);
strTotalRealizado = Pagina.trocaNullMoeda(totalRealizado);
}
builder.addClosedNode("valorTotal",
" percentualRealizadoPrevisto=\"" + builder.normalize(Pagina.trocaNullMoeda(new Double((realizadoPrevisto)))) + "\"" +
// " totalPrevisto=\"" + builder.normalize(Pagina.trocaNullMoeda(new Double(totalPrevisto))) + "\"" +
// " totalRealizado=\"" + builder.normalize(Pagina.trocaNullMoeda(new Double(totalRealizado))) + "\""
" totalPrevisto=\"" + builder.normalize(strTotalPrevisto) + "\"" +
" totalRealizado=\"" + builder.normalize(strTotalRealizado) + "\""
);
String strProjecao = "";
String dataProjecao = "-";
if("S".equals(indicador.getItemEstrtIndResulIettr().getIndProjecaoIettr()) && totalRealizado > 0 && totalPrevisto > 0){
//double resultado = this.acompRefItemDao.calculoProjecao(indicador.getItemEstrtIndResulIettr(), itemAri);
double resultado = this.acompRefItemDao.calculoProjecao(indicador.getItemEstrtIndResulIettr(),itemAri);
ExercicioExe exercicioPrevisto = itemEstrtIndResulDao.getMaiorExercicioIndicador(indicador.getItemEstrtIndResulIettr());
//double qtdePrevista = itemEstrtIndResulDao.getQtdPrevistoExercicio(indicador.getItemEstrtIndResulIettr(), exercicioPrevisto);
Mensagem msg = new Mensagem(this.request.getSession().getServletContext());
if(resultado == totalPrevisto)
strProjecao = msg.getMensagem("acompRelatorio.indicadorResultado.projecao.seraAtingida");
if(resultado > totalPrevisto)
strProjecao = msg.getMensagem("acompRelatorio.indicadorResultado.projecao.seraAtingidaAntes");
if(resultado < totalPrevisto){
strProjecao = msg.getMensagem("acompRelatorio.indicadorResultado.projecao.naoSeraAtingida");
}
//Double porcentagem = new Double((resultado/totalPrevisto) * 100);
GregorianCalendar dataTermino = acompRefItemDao.getProjecaoDataTermino(indicador.getItemEstrtIndResulIettr(),itemAri,totalPrevisto);
//strPorcentual = Pagina.trocaNullNumeroDecimalSemMilhar(porcentagem);
if (totalPrevisto > 0){
DateFormat month = new SimpleDateFormat("MMMMM");