*/
private void geraXMLIndicadores(XmlBuilder builder, AcompReferenciaItemAri itemAri) throws ECARException{
try {
AcompRealFisicoDao acompRealFisicoDao = new AcompRealFisicoDao(null);
ExercicioDao exercicioDao = new ExercicioDao(null);
ItemEstrtIndResulDao itemEstrtIndResulDao = new ItemEstrtIndResulDao(null);
EstruturaFuncaoDao estruturaFuncaoDao = new EstruturaFuncaoDao(null);
String mostrarProjecao = (projecao) ? "S" : "N";
//List<ExercicioExe> exercicios = new ExercicioDao(null).getExerciciosProjecao(itemAri.getItemEstruturaIett().getCodIett());
//Ref. mantis 7770: exibir os �ltimos quatro anos...
//Pegando exercicios do mais novo para mais antigo para pegar os ultimos anos primeiro...
//List<ExercicioExe> todosExercicios = exercicioDao.listar(ExercicioExe.class, new String[] {"dataInicialExe","desc"});
//Mantis #11071: Ajustes no Relat�rio do PPA (metas f�sicas de exerc�cios)
List<ExercicioExe> todosExercicios = exercicioDao.getExeByPerExe(itemAri.getAcompReferenciaAref().getExercicioExe());
if(todosExercicios == null || todosExercicios.isEmpty()) {
throw new Exception("N�o existem exerc�cios cadastrado");
}
List<ExercicioExe> exercicios = new ArrayList<ExercicioExe>();
//Obtendo ultimos 4 anos...
int qtdeAnos = 4;
if(todosExercicios.size() < qtdeAnos) {
qtdeAnos = todosExercicios.size();
}
exercicios.addAll(todosExercicios.subList(0, qtdeAnos));
//Re-ordenando do mais antigo para o o mais novo...
Collections.reverse(exercicios);
List indResultados = acompRealFisicoDao.getIndResulByAcompRefItemBySituacao(itemAri, Dominios.TODOS, false);
if(indResultados != null && indResultados.size() > 0){
String exibirSituacaoColuna = "N";
if("N".equals(mostrarProjecao)) {
exibirSituacaoColuna = "S";
}
builder.addNode("indicadores", "labelFuncao=\""
+ builder.normalize(Util.normalizaCaracterMarcador(estruturaFuncaoDao.getLabelIndicadoresResultado(itemAri.getItemEstruturaIett().getEstruturaEtt())))
+ "\" mostrarProjecao=\"" + builder.normalize(Util.normalizaCaracterMarcador(mostrarProjecao)) + "\""
+ " exibirSituacaoColuna=\"" + builder.normalize(Util.normalizaCaracterMarcador(exibirSituacaoColuna)) + "\"");
int numeroExercicios = 0;
for(ExercicioExe exercicio : exercicios){
builder.addClosedNode("columnExercicio", "ano=\"" + builder.normalize(Util.normalizaCaracterMarcador(exercicio.getDescricaoExe())) + "\"");
builder.addClosedNode("indExercicio", "exercicio=\"" + builder.normalize(Util.normalizaCaracterMarcador(exercicio.getDescricaoExe())) + "\"");
numeroExercicios++;
}
String grupoIndicador = "Indicador";
String exibirGrupoIndicador = "N";
//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)