1 package ecar.servlet.relatorio;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.Date;
6 import java.util.HashSet;
7 import java.util.Iterator;
8 import java.util.List;
9 import java.util.Set;
10
11 import javax.servlet.http.HttpServletRequest;
12
13 import org.hibernate.HibernateException;
14
15 import comum.util.Data;
16 import comum.util.Mensagem;
17 import comum.util.Pagina;
18 import comum.util.Util;
19 import comum.util.XmlBuilder;
20
21 import ecar.bean.AtributoEstruturaListagemItens;
22 import ecar.dao.AcompRealFisicoDao;
23 import ecar.dao.AcompReferenciaDao;
24 import ecar.dao.AcompReferenciaItemDao;
25 import ecar.dao.ConfiguracaoDao;
26 import ecar.dao.CorDao;
27 import ecar.dao.EstruturaDao;
28 import ecar.dao.EstruturaFuncaoDao;
29 import ecar.dao.ExercicioDao;
30 import ecar.dao.ItemEstrtIndResulDao;
31 import ecar.dao.ItemEstruturaContaOrcamentoDao;
32 import ecar.dao.ItemEstruturaDao;
33 import ecar.dao.ItemEstruturaPrevisaoDao;
34 import ecar.dao.ItemEstruturaRealizadoDao;
35 import ecar.dao.TipoAcompanhamentoDao;
36 import ecar.exception.ECARException;
37 import ecar.login.SegurancaECAR;
38 import ecar.permissao.ValidaPermissao;
39 import ecar.pojo.AcompRealFisicoArf;
40 import ecar.pojo.AcompReferenciaAref;
41 import ecar.pojo.AcompReferenciaItemAri;
42 import ecar.pojo.AcompRelatorioArel;
43 import ecar.pojo.AtributoLivre;
44 import ecar.pojo.ConfiguracaoCfg;
45 import ecar.pojo.EfItemEstContaEfiec;
46 import ecar.pojo.EfItemEstPrevisaoEfiep;
47 import ecar.pojo.ExercicioExe;
48 import ecar.pojo.ItemEstruturaIett;
49 import ecar.pojo.ItemEstruturaSisAtributoIettSatb;
50 import ecar.pojo.ObjetoEstrutura;
51 import ecar.pojo.StatusRelatorioSrl;
52 import ecar.pojo.TipoAcompanhamentoTa;
53 import ecar.pojo.TipoFuncAcompTpfa;
54 import ecar.util.Dominios;
55
56
57
58
59
60
61
62 public class RelatorioAcompanhamentoImpresso extends AbstractServletReportXmlXsl {
63
64
65
66
67 private static final long serialVersionUID = 3230673174665052076L;
68
69 private String realPath;
70
71 private ConfiguracaoCfg configura;
72 private List listaIett = new ArrayList();
73 private List listFunAcomp;
74
75 boolean posicoes;
76 boolean funcoes;
77 boolean dadosGerais;
78 boolean indicadores;
79 boolean financeiro;
80 boolean projecao;
81
82 private HttpServletRequest request;
83 private String codAriFilhos[];
84 private List listaCompletaOrdenada = new ArrayList();
85 private List listaAriCompleta = new ArrayList();
86 private AcompReferenciaAref aref;
87
88 private ItemEstruturaDao itemDao;
89 private AcompReferenciaItemDao acompRefItemDao;
90
91
92
93
94 private static final int COMBOBOX = 1;
95 private static final int CHECKBOX = 2;
96 private static final int LISTBOX = 3;
97 private static final int RADIO_BUTTON = 4;
98 private static final int TEXT = 5;
99 private static final int IMAGEM = 6;
100 private static final int MULTITEXTO = 7;
101 private static final int VALIDACAO = 8;
102 private static final int MULTIPLO = 9;
103 private static final int TEXTAREA = 10;
104
105
106
107
108
109
110
111
112
113
114
115 public StringBuffer getXml(HttpServletRequest request) throws ECARException{
116 ConfiguracaoDao configuracaoDao = new ConfiguracaoDao(null);
117 this.itemDao = new ItemEstruturaDao(null);
118 TipoAcompanhamentoDao tipoAcompDao = new TipoAcompanhamentoDao(null);
119 AcompReferenciaDao acompReferenciaDao = new AcompReferenciaDao(null);
120 this.acompRefItemDao = new AcompReferenciaItemDao(null);
121
122 Util.liberarImagem();
123
124 this.request = request;
125
126
127 XmlBuilder builder = new XmlBuilder();
128
129 configura = configuracaoDao.getConfiguracao();
130
131 listFunAcomp = new ArrayList();
132
133 posicoes = false;
134 funcoes = false;
135 dadosGerais = false;
136 indicadores = false;
137 financeiro = false;
138
139
140 String protocol = ( request.getRequestURL().indexOf("https") == 0 ? "https://" : "http://" );
141 realPath = protocol + request.getLocalName() + ":" + request.getLocalPort();
142 this.defineFuncoes();
143
144 String datahora = Data.parseDateHour(new Date()).substring(0,16);
145
146
147 Set listaItensSelecionadosComDescendentes = new HashSet();
148 String codigosItensSelecionadosTela = Pagina.getParamStr(request, "codigosItemSelecionadosTela");
149 if(!"".equals(codigosItensSelecionadosTela)){
150 String[] iettSelecionado = codigosItensSelecionadosTela.split(";");
151 for(int i = 0; i < iettSelecionado.length; i++){
152 if(!"".equals(iettSelecionado[i])){
153 ItemEstruturaIett iett = (ItemEstruturaIett) itemDao.buscar(ItemEstruturaIett.class, new Long(iettSelecionado[i]));
154 if(iett != null) {
155 listaItensSelecionadosComDescendentes.add(iett);
156
157
158 }
159 }
160 }
161 }
162
163
164
165 System.gc();
166
167
168 if("/ecar".equals(request.getContextPath())) {
169
170
171
172
173
174 for(Iterator it = listaItensSelecionadosComDescendentes.iterator(); it.hasNext();){
175 ItemEstruturaIett iett = (ItemEstruturaIett) it.next();
176
177 if(iett.getNivelIett().intValue() > 4) {
178 it.remove();
179 }
180 }
181 }
182
183 List listaCodigos = new ArrayList();
184
185 String codigosAri = Pagina.getParamStr(request, "codigosAri");
186 if(!"".equals(codigosAri)){
187 String[] codAri = codigosAri.split(";");
188 for(int i = 0; i < codAri.length; i++){
189 if(!"".equals(codAri[i])){
190 listaCodigos.add(codAri[i]);
191 }
192 }
193 }
194 codAriFilhos = request.getParameterValues("codAriFilhos");
195
196 TipoAcompanhamentoTa tipoAcomp = (TipoAcompanhamentoTa) tipoAcompDao.buscar(TipoAcompanhamentoTa.class, Long.valueOf(Pagina.getParamStr(request, "codTipoAcompanhamento")));
197 aref = (AcompReferenciaAref) acompReferenciaDao.buscar(AcompReferenciaAref.class, Long.valueOf(Pagina.getParamStr(request, "mesReferencia")));
198
199 listaCompletaOrdenada = itemDao.getItensOrdenados(new ArrayList(listaItensSelecionadosComDescendentes), aref.getTipoAcompanhamentoTa());
200
201 String tipoDadosGerais = Pagina.getParamStr(request, "indTipoDadosGerais");
202
203 if("S".equals(Pagina.getParamStr(request, "dadosGerais"))) {
204 if("L".equals(tipoDadosGerais)) {
205 tipoDadosGerais = "Relação";
206 } else if("R".equals(tipoDadosGerais)) {
207 tipoDadosGerais = "Resumo";
208 } else if("C".equals(tipoDadosGerais)) {
209 tipoDadosGerais = "Completo";
210 }
211 } else {
212 tipoDadosGerais = "";
213 }
214
215 builder.addNode("relatorio",
216 "titulo=\"" + builder.normalize(this.configura.getTituloSistema()) + "\"" +
217 " datahora=\"" + builder.normalize(datahora) + "\"" +
218 " tipoAcomp=\"" + builder.normalize(tipoAcomp.getDescricaoTa()) + "\"" +
219 " mesReferencia=\""+ builder.normalize(aref.getNomeAref() + " (" + aref.getMesAref() + "/" + aref.getAnoAref() + ")") +"\"" +
220 " tipoDadosGerais=\"" + builder.normalize(tipoDadosGerais) + "\"");
221
222
223 if (listaCodigos != null && !listaCodigos.isEmpty()) {
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239 List[] arisIetts = this.acompRefItemDao.listarArisAndIetts(listaCodigos);
240 listaAriCompleta.addAll(arisIetts[0]);
241 listaIett.addAll(arisIetts[1]);
242
243 } else {
244 String codAri = Pagina.getParamStr(request, "codAri");
245
246 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) acompRefItemDao.buscar(AcompReferenciaItemAri.class, Long.valueOf(codAri));
247
248 if(ari != null) {
249 listaAriCompleta.add(ari);
250 listaIett.add(ari.getItemEstruturaIett());
251 }
252
253 }
254
255
256 if(codAriFilhos != null) {
257 List listaCodAriFilhos = new ArrayList();
258 for (int i = 0; i < codAriFilhos.length; i++) {
259
260
261
262
263
264
265
266
267 listaCodAriFilhos.add(Long.valueOf(codAriFilhos[i]));
268 }
269
270 List[] arisIetts = this.acompRefItemDao.listarArisAndIetts(listaCodAriFilhos);
271 listaAriCompleta.addAll(arisIetts[0]);
272 listaIett.addAll(arisIetts[1]);
273 }
274
275 geraXMLItensGeral(builder);
276 builder.closeNode("relatorio");
277
278
279 return builder.toStringBuffer();
280 }
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308 private void defineFuncoes() throws ECARException
309 {
310 String funcoesAcomp[] = request.getParameterValues("tipoFuncAcompTpfa");
311 if(funcoesAcomp != null){
312 for (int i = 0; i < funcoesAcomp.length; i++) {
313 TipoFuncAcompTpfa funcao = (TipoFuncAcompTpfa) this.itemDao.buscar(TipoFuncAcompTpfa.class, Long.valueOf(funcoesAcomp[i]));
314 listFunAcomp.add(funcao);
315 }
316 }
317
318 posicoes = false;
319 funcoes = false;
320 dadosGerais = false;
321 indicadores = false;
322 financeiro = false;
323 projecao = false;
324
325 if("S".equals(Pagina.getParamStr(request, "todosOsItens"))) {
326 posicoes = true;
327 funcoes = true;
328 dadosGerais = true;
329 indicadores = true;
330 projecao = true;
331 financeiro = true;
332 }
333
334 if("S".equals(Pagina.getParamStr(request, "posicoes")))
335 posicoes = true;
336
337 if(!listFunAcomp.isEmpty())
338 funcoes = true;
339
340 if("S".equals(Pagina.getParamStr(request, "dadosGerais")))
341 dadosGerais = true;
342
343 if("S".equals(Pagina.getParamStr(request, "indicadores")))
344 indicadores = true;
345
346 if("S".equals(Pagina.getParamStr(request, "financeiro")))
347 financeiro = true;
348
349 if("S".equals(Pagina.getParamStr(request, "projecao")))
350 projecao = true;
351 }
352
353
354
355
356
357
358
359
360
361
362 private void geraXMLItensGeral(XmlBuilder builder) throws ECARException{
363 String mesRef = "";
364 mesRef = aref.getMesAref() + "/";
365 mesRef = mesRef + aref.getAnoAref();
366
367 builder.addNode("itensGeral");
368
369 geraXMLItens(builder);
370
371 builder.closeNode("itensGeral");
372 }
373
374
375
376
377
378
379
380
381
382 public String getXslFileName() {
383 return "posicoes.xsl";
384 }
385
386
387
388
389
390
391
392
393
394
395
396 public String getErrorPage(HttpServletRequest request, String mensagem){
397 String errorPage = "acompanhamento/relAcompanhamento/relatorios/relatorioImpresso2.jsp?codAri=" + Pagina.getParamStr(request, "codAri") + "&mesReferencia=" + Pagina.getParamStr(request, "mesReferencia") + "&msgOperacao=" + mensagem;
398 return errorPage;
399 }
400
401
402
403
404
405
406
407
408
409
410 private void geraXMLItens(XmlBuilder builder) throws ECARException{
411 if(!listaCompletaOrdenada.isEmpty()) {
412
413 builder.addNode("itens");
414
415
416
417
418 for(Iterator it = listaCompletaOrdenada.iterator(); it.hasNext();){
419
420 AtributoEstruturaListagemItens ae = (AtributoEstruturaListagemItens) it.next();
421 ItemEstruturaIett iett = ae.getItem();
422
423 String nomeItem = "";
424
425 if(iett.getSiglaIett() != null && !"".equals(iett.getSiglaIett())){
426 nomeItem = iett.getSiglaIett() + " - ";
427 }
428
429 nomeItem = iett.getEstruturaEtt().getNomeEtt() + ": " + nomeItem + ae.getDescricao();
430
431 builder.addNode("item", "nomeItem=\"" + builder.normalize(nomeItem) + "\"");
432 geraXMLHierarquia(builder, iett);
433
434 if(this.dadosGerais) {
435 geraXMLDadosGerais(builder, iett);
436 }
437
438
439 if(listaIett.contains(iett)) {
440
441
442
443
444 for(Iterator itAri = listaAriCompleta.iterator(); itAri.hasNext();){
445 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) itAri.next();
446
447 if(ari.getItemEstruturaIett().equals(iett)) {
448 geraXMLItemAri(builder, ari);
449 break;
450 }
451 }
452 }
453
454 builder.closeNode("item");
455 }
456
457
458
459 System.gc();
460
461 builder.closeNode("itens");
462 }
463 }
464
465
466
467
468
469
470
471
472
473
474
475 private void geraXMLItemAri(XmlBuilder builder, AcompReferenciaItemAri itemAri) throws ECARException{
476 itemAri = (AcompReferenciaItemAri) this.acompRefItemDao.buscar(AcompReferenciaItemAri.class, itemAri.getCodAri());
477
478 if(this.posicoes || this.funcoes) {
479
480 if (itemAri.getAcompRelatorioArels() != null && itemAri.getAcompRelatorioArels().size() > 0){
481 geraXMLAvaliacoes(builder, itemAri);
482 }
483 }
484
485 if(this.indicadores) {
486 geraXMLIndicadores(builder, itemAri);
487 }
488
489 if(this.financeiro) {
490 geraXMLEvolucaoFinanceira(builder, itemAri);
491 }
492 }
493
494
495
496
497
498
499
500
501
502
503
504
505 private void geraXMLHierarquia(XmlBuilder builder, ItemEstruturaIett iett) throws ECARException{
506 try {
507 List lista = this.itemDao.getAscendentes(iett);
508 lista.add(iett);
509
510 if(lista == null || lista.isEmpty()) {
511 return;
512 }
513
514
515
516
517 builder.addNode("hierarquia");
518
519
520 for(Iterator it = lista.iterator(); it.hasNext();){
521 ItemEstruturaIett item = (ItemEstruturaIett) it.next();
522
523 String descricaoItem = "";
524
525
526
527
528
529 for(Iterator it2 = listaCompletaOrdenada.iterator(); it2.hasNext();){
530 AtributoEstruturaListagemItens ae = (AtributoEstruturaListagemItens) it2.next();
531 if(ae.getItem().equals(item)) {
532 descricaoItem = ae.getDescricao();
533 break;
534 }
535 }
536
537 String destacarItem = "N";
538 if(iett.equals(item)) {
539 destacarItem = "S";
540 }
541
542 builder.addClosedNode("itemHierarquia", "nome=\"" + builder.normalize(descricaoItem) + "\"" +
543 " nomeEstrutura=\"" + builder.normalize(item.getEstruturaEtt().getNomeEtt()) + "\"" +
544 " nivel=\"" + builder.normalize(String.valueOf(item.getNivelIett().intValue()-1)) + "\"" +
545 " destacarItem=\"" + builder.normalize(destacarItem) + "\"");
546 }
547 builder.closeNode("hierarquia");
548
549 } catch(Exception e){
550 this.logger.error(e);
551 throw new ECARException("Erro na criação do relatório: Hierarquia - " + e.getMessage());
552 }
553 }
554
555
556
557
558
559
560
561
562
563
564
565 private void geraXMLAvaliacoes(XmlBuilder builder, AcompReferenciaItemAri itemAri) throws ECARException{
566 try{
567 CorDao corDao = new CorDao(null);
568
569 String exigeLiberarAcompanhamento = itemAri.getAcompReferenciaAref().getTipoAcompanhamentoTa().getIndLiberarAcompTa();
570
571 String labelSituacaoListaParecer = new ConfiguracaoDao(request).getConfiguracao().getLabelSituacaoListaPareceres();
572 builder.addNode("avaliacoes",
573 " labelSituacaoListaParecer=\"" + builder.normalize(labelSituacaoListaParecer) + "\"");
574
575 List lista = new ArrayList();
576 if("N".equals(exigeLiberarAcompanhamento) || itemAri.getAcompRelatorioArels() != null){
577 lista = this.acompRefItemDao.getAcompRelatorioArelOrderByFuncaoAcomp(itemAri);
578 }
579
580 String ocultarObservacoesParecer = new ConfiguracaoDao(request).getConfiguracao().getIndOcultarObservacoesParecer();
581
582
583
584
585 String descricao = "";
586 String atribuidoPor = "";
587 String situacao = "";
588 String cor = "";
589 String statusLiberadoRelatorio = "N";
590 String complemento = "";
591 String ultManutencao = "";
592
593 StatusRelatorioSrl statusLiberado = (StatusRelatorioSrl) this.acompRefItemDao.buscar(StatusRelatorioSrl.class, Long.valueOf(AcompReferenciaItemDao.STATUS_LIBERADO));
594 TipoAcompanhamentoTa tipoAcompanhamento = itemAri.getAcompReferenciaAref().getTipoAcompanhamentoTa();
595 SegurancaECAR seguranca = (SegurancaECAR) request.getSession().getAttribute("seguranca");
596 ValidaPermissao validaPermissao = new ValidaPermissao();
597 List listaPermissaoTpfa = validaPermissao.permissaoVisualizarPareceres(tipoAcompanhamento,seguranca.getGruposAcesso());
598
599
600 for(Iterator it = lista.iterator(); it.hasNext();){
601 AcompRelatorioArel acompRelatorio = (AcompRelatorioArel) it.next();
602
603 if(listaPermissaoTpfa.contains(acompRelatorio.getTipoFuncAcompTpfa())){
604
605 if(acompRelatorio.getUsuarioUsuUltimaManutencao() != null)
606 atribuidoPor = acompRelatorio.getUsuarioUsuUltimaManutencao().getNomeUsuSent();
607 else
608 atribuidoPor = "N/I";
609
610 if(acompRelatorio.getIndLiberadoArel() == null || "N".equals(acompRelatorio.getIndLiberadoArel())) {
611 descricao = "";
612 situacao = "";
613 cor = "";
614 statusLiberadoRelatorio = "N";
615 complemento = "";
616 } else if("N".equals(exigeLiberarAcompanhamento) || acompRelatorio.getAcompReferenciaItemAri().getStatusRelatorioSrl().equals(statusLiberado)) {
617 statusLiberadoRelatorio = "S";
618
619 if(acompRelatorio.getDescricaoArel() != null)
620 descricao = Util.stripHTML(Util.normalizaCaracterMarcador(acompRelatorio.getDescricaoArel()));
621 else
622 descricao = "N/I";
623
624 if(acompRelatorio.getSituacaoSit() != null)
625 situacao = acompRelatorio.getSituacaoSit().getDescricaoSit();
626 else
627 situacao = "N/I";
628
629 cor = realPath + request.getContextPath() + "/images/" + corDao.getImagemSinalRelPosicoes(acompRelatorio.getCor(), acompRelatorio.getTipoFuncAcompTpfa());
630
631
632 if(acompRelatorio.getComplementoArel() != null)
633 complemento = Util.normalizaCaracterMarcador(acompRelatorio.getComplementoArel());
634 else
635 complemento = "N/I";
636
637
638 if(acompRelatorio.getDataUltManutArel() != null)
639 ultManutencao = Data.parseDate(acompRelatorio.getDataUltManutArel());
640 else if(acompRelatorio.getDataInclusaoArel() != null)
641 ultManutencao = Data.parseDate(acompRelatorio.getDataInclusaoArel());
642 else
643 ultManutencao = "N/I";
644 }
645
646
647
648
649
650
651
652
653
654
655
656 String labelSituacaoParecer = new ConfiguracaoDao(request).getConfiguracao().getLabelSituacaoParecer();
657
658 if(this.posicoes){
659
660 if (ocultarObservacoesParecer == null || ocultarObservacoesParecer.equals("N")){
661
662 builder.addClosedNode("avaliacao",
663 "label=\"" + builder.normalize(acompRelatorio.getTipoFuncAcompTpfa().getLabelPosicaoTpfa()) + "\"" +
664 " responsavel=\"" + builder.normalize(atribuidoPor) + "\"" +
665 " labelSituacaoParecer=\"" + builder.normalize(labelSituacaoParecer) + "\"" +
666 " situacao=\"" + builder.normalize(situacao) + "\"" +
667 " cor=\"" + builder.normalize(cor) + "\"" +
668 " descricao=\"" + builder.normalize(descricao) + "\"" +
669 " complemento=\"" + builder.normalize(complemento) + "\"" +
670 " statusLiberado=\"" + builder.normalize(statusLiberadoRelatorio) + "\"" +
671 " ultManutencao=\"" + builder.normalize(ultManutencao) + "\"");
672 }
673 else{
674
675 builder.addClosedNode("avaliacao",
676 "label=\"" + builder.normalize(acompRelatorio.getTipoFuncAcompTpfa().getLabelPosicaoTpfa()) + "\"" +
677 " responsavel=\"" + builder.normalize(atribuidoPor) + "\"" +
678 " labelSituacaoParecer=\"" + builder.normalize(labelSituacaoParecer) + "\"" +
679 " situacao=\"" + builder.normalize(situacao) + "\"" +
680 " cor=\"" + builder.normalize(cor) + "\"" +
681 " descricao=\"" + builder.normalize(descricao) + "\"" +
682 " complemento=\"ocultar\"" +
683 " statusLiberado=\"" + builder.normalize(statusLiberadoRelatorio) + "\"" +
684 " ultManutencao=\"" + builder.normalize(ultManutencao) + "\"");
685 }
686 }
687 else if (funcoes){
688 if(listFunAcomp.contains(acompRelatorio.getTipoFuncAcompTpfa())){
689
690 if (ocultarObservacoesParecer == null || ocultarObservacoesParecer.equals("N")){
691
692 builder.addClosedNode("avaliacao",
693 "label=\"" + builder.normalize(acompRelatorio.getTipoFuncAcompTpfa().getLabelPosicaoTpfa()) + "\"" +
694 " responsavel=\"" + builder.normalize(atribuidoPor) + "\"" +
695 " labelSituacaoParecer=\"" + builder.normalize(labelSituacaoParecer) + "\"" +
696 " situacao=\"" + builder.normalize(situacao) + "\"" +
697 " cor=\"" + builder.normalize(cor) + "\"" +
698 " descricao=\"" + builder.normalize(descricao) + "\"" +
699 " complemento=\"" + builder.normalize(complemento) + "\"" +
700 " statusLiberado=\"" + builder.normalize(statusLiberadoRelatorio) + "\"" +
701 " ultManutencao=\"" + builder.normalize(ultManutencao) + "\"");
702 }
703 else{
704
705 builder.addClosedNode("avaliacao",
706 "label=\"" + builder.normalize(acompRelatorio.getTipoFuncAcompTpfa().getLabelPosicaoTpfa()) + "\"" +
707 " responsavel=\"" + builder.normalize(atribuidoPor) + "\"" +
708 " labelSituacaoParecer=\"" + builder.normalize(labelSituacaoParecer) + "\"" +
709 " situacao=\"" + builder.normalize(situacao) + "\"" +
710 " cor=\"" + builder.normalize(cor) + "\"" +
711 " descricao=\"" + builder.normalize(descricao) + "\"" +
712 " complemento=\"\"" +
713 " statusLiberado=\"" + builder.normalize(statusLiberadoRelatorio) + "\"" +
714 " ultManutencao=\"" + builder.normalize(ultManutencao) + "\"");
715 }
716 }
717 }
718 }
719
720 }
721
722 builder.closeNode("avaliacoes");
723 } catch(Exception e){
724 this.logger.error(e);
725 throw new ECARException("Erro na criação do relatório: Avaliações - " + e.getMessage());
726 }
727 }
728
729
730
731
732
733
734
735
736
737
738
739 private void geraXMLDadosGerais(XmlBuilder builder, ItemEstruturaIett iett) throws ECARException{
740 try{
741 builder.addNode("dadosGerais");
742
743 EstruturaDao estruturaDao = new EstruturaDao(null);
744 List atributos = estruturaDao.getAtributosEstruturaRelatorio(iett.getEstruturaEtt(), Pagina.getParamStr(request, "indTipoDadosGerais"));
745
746
747
748
749 for(Iterator itAtributos = atributos.iterator(); itAtributos.hasNext();){
750 ObjetoEstrutura atributo = (ObjetoEstrutura) itAtributos.next();
751
752 String label = atributo.iGetLabel();
753 String conteudo = atributo.iGetValor(iett);
754
755
756
757 if(iett.getItemEstruturaSisAtributoIettSatbs() != null){
758 int tam = iett.getItemEstruturaSisAtributoIettSatbs().size();
759 int pos = 1;
760 Iterator itAtribLivres = iett.getItemEstruturaSisAtributoIettSatbs().iterator();
761 while(itAtribLivres.hasNext()){
762 ItemEstruturaSisAtributoIettSatb atr = (ItemEstruturaSisAtributoIettSatb) itAtribLivres.next();
763 AtributoLivre atributoLivre = new AtributoLivre();
764 atributoLivre.setSisAtributoSatb(atr.getSisAtributoSatb());
765 atributoLivre.setInformacao(atr.getInformacaoIettSatb());
766
767 if(!atributoLivre.getSisAtributoSatb().getSisGrupoAtributoSga().equals(atributo.iGetGrupoAtributosLivres()))
768 continue;
769
770 if((atributoLivre.getSisAtributoSatb()
771 .getSisGrupoAtributoSga()
772 .getSisTipoExibicGrupoSteg()
773 .getCodSteg().intValue() != TEXT) &&
774 (atributoLivre.getSisAtributoSatb()
775 .getSisGrupoAtributoSga()
776 .getSisTipoExibicGrupoSteg()
777 .getCodSteg().intValue() != TEXTAREA)) {
778
779 String separador = "";
780 if(tam > 1 && pos < tam){
781 separador = ", ";
782 }
783
784 if(atributoLivre.getSisAtributoSatb() != null)
785 conteudo += atributoLivre.getSisAtributoSatb().getDescricaoSatb() + separador;
786 else
787 conteudo += atributoLivre.getInformacao() + separador;
788
789 pos++;
790 } else {
791 conteudo = atributoLivre.getInformacao();
792 }
793 }
794 }
795
796
797
798
799 if(label != null && !"".equals(label) && conteudo != null && !"".equals(conteudo)){
800
801
802
803
804
805
806
807
808
809
810 builder.addClosedNode("atributosDadosGerais",
811 "label=\"" + builder.normalize(label) + "\"" +
812 " conteudo=\"" + builder.normalize(conteudo) + "\"");
813 }
814 }
815
816 builder.closeNode("dadosGerais");
817 geraXMLDadosAbasItem(builder, iett);
818 } catch(Exception e){
819 this.logger.error(e);
820 throw new ECARException("Erro na criação do relatório: Dados Gerais Itens Sem ARI - " + e.getMessage());
821 }
822 }
823
824
825
826
827
828
829
830
831
832
833
834 private void geraXMLDadosAbasItem(XmlBuilder builder, ItemEstruturaIett iett) throws ECARException{
835 try{
836 RelatorioItemEstrutura relatorioItemEstrutura = new RelatorioItemEstrutura();
837
838
839
840
841
842
843 relatorioItemEstrutura.geraXMLFuncoes(builder, iett, Pagina.getParamStr(request, "indTipoDadosGerais"), false);
844 } catch(Exception e){
845 this.logger.error(e);
846 throw new ECARException("Erro na criação do relatório: Dados Gerais - " + e.getMessage());
847 }
848 }
849
850
851
852
853
854
855
856
857
858
859
860 private void geraXMLIndicadores(XmlBuilder builder, AcompReferenciaItemAri itemAri) throws ECARException{
861 try {
862 AcompRealFisicoDao acompRealFisicoDao = new AcompRealFisicoDao(null);
863 ExercicioDao exercicioDao = new ExercicioDao(null);
864 ItemEstrtIndResulDao itemEstrtIndResulDao = new ItemEstrtIndResulDao(null);
865 EstruturaFuncaoDao estruturaFuncaoDao = new EstruturaFuncaoDao(null);
866
867 String mostrarProjecao = (projecao) ? "S" : "N";
868
869
870
871
872
873
874 List<ExercicioExe> todosExercicios = exercicioDao.getExeByPerExe(itemAri.getAcompReferenciaAref().getExercicioExe());
875
876
877 if(todosExercicios == null || todosExercicios.isEmpty()) {
878 throw new Exception("Não existe exercícios cadastrado");
879 }
880 List<ExercicioExe> exercicios = new ArrayList<ExercicioExe>();
881
882 int qtdeAnos = 4;
883 if(todosExercicios.size() < qtdeAnos) {
884 qtdeAnos = todosExercicios.size();
885 }
886 exercicios.addAll(todosExercicios.subList(0, qtdeAnos));
887
888 Collections.reverse(exercicios);
889
890 List indResultados = acompRealFisicoDao.getIndResulByAcompRefItemBySituacao(itemAri, Dominios.TODOS, true);
891 if(indResultados != null && indResultados.size() > 0){
892
893 String exibirSituacaoColuna = "N";
894 if("N".equals(mostrarProjecao)) {
895 exibirSituacaoColuna = "S";
896 }
897 builder.addNode("indicadores", "labelFuncao=\""
898 + builder.normalize(estruturaFuncaoDao.getLabelIndicadoresResultado(itemAri.getItemEstruturaIett().getEstruturaEtt()))
899 + "\" mostrarProjecao=\"" + builder.normalize(mostrarProjecao) + "\""
900 + " exibirSituacaoColuna=\"" + builder.normalize(exibirSituacaoColuna) + "\"");
901
902 int numeroExercicios = 0;
903 for(ExercicioExe exercicio : exercicios){
904 builder.addClosedNode("columnExercicio", "ano=\"" + builder.normalize(exercicio.getDescricaoExe()) + "\"");
905 builder.addClosedNode("indExercicio", "exercicio=\"" + builder.normalize(exercicio.getDescricaoExe()) + "\"");
906 numeroExercicios++;
907 }
908
909 String grupoIndicador = "Indicador";
910 String exibirGrupoIndicador = "N";
911
912
913
914
915 for(Iterator itIndResult = indResultados.iterator(); itIndResult.hasNext();){
916 AcompRealFisicoArf indicador = (AcompRealFisicoArf) itIndResult.next();
917 String tipoQtde = indicador.getItemEstrtIndResulIettr().getIndTipoQtde();
918 String situacao = "";
919 if(indicador.getSituacaoSit()!=null) {
920 situacao = indicador.getSituacaoSit().getDescricaoSit();
921 }
922
923
924
925
926
927
928
929
930 exibirGrupoIndicador = "N";
931
932 if(configura.getSisGrupoAtributoSgaByCodSgaGrAtrMetasFisicas() != null){
933 if(indicador.getItemEstrtIndResulIettr().getSisAtributoSatb() != null && !grupoIndicador.equals(indicador.getItemEstrtIndResulIettr().getSisAtributoSatb().getDescricaoSatb())){
934 grupoIndicador = indicador.getItemEstrtIndResulIettr().getSisAtributoSatb().getDescricaoSatb();
935 exibirGrupoIndicador = "S";
936 }
937 else if(indicador.getItemEstrtIndResulIettr().getSisAtributoSatb() == null && !"".equals(grupoIndicador)) {
938 exibirGrupoIndicador = "S";
939 }
940 }
941
942 double totalRealizado = 0;
943 double totalPrevisto = 0;
944 String labelSituacaoParecer = new ConfiguracaoDao(request).getConfiguracao().getLabelSituacaoParecer();
945
946 builder.addNode("indicadorAcomp",
947 "nome=\"" + builder.normalize(indicador.getItemEstrtIndResulIettr().getNomeIettir()) + "\"" +
948 " labelSituacaoParecer=\"" + builder.normalize(labelSituacaoParecer) + "\"" +
949 " situacao=\"" + builder.normalize(situacao) + "\"" +
950 " realizadoNoMes=\"" + builder.normalize(Pagina.trocaNullMoeda(indicador.getQtdRealizadaArf()) + " " + indicador.getItemEstrtIndResulIettr().getUnidMedidaIettr()) + "\"" +
951 " numeroExercicios=\"" + builder.normalize(String.valueOf(numeroExercicios)) + "\"" +
952 " mostrarProjecao=\"" + builder.normalize(mostrarProjecao) + "\"" +
953 " grupoIndicador=\"" + builder.normalize(grupoIndicador) + "\"" +
954 " exibirGrupoIndicador=\"" + builder.normalize(exibirGrupoIndicador) + "\"" +
955 " numeroExe=\"" + builder.normalize(String.valueOf(numeroExercicios)) + "\""
956 );
957
958 if(indicador.getItemEstrtIndResulIettr().getSisAtributoSatb() == null && !"".equals(grupoIndicador)) {
959 grupoIndicador = "";
960 }
961
962 List valoresR = new ArrayList();
963 List valoresP = new ArrayList();
964
965 for(ExercicioExe exercicio : exercicios){
966 double realizadoNoExercicio = 0;
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991 if("S".equals(indicador.getItemEstrtIndResulIettr().getIndAcumulavelIettr())){
992 realizadoNoExercicio = acompRealFisicoDao.getQtdRealizadaExercicio(exercicio, indicador.getItemEstrtIndResulIettr(), aref);
993 } else {
994 realizadoNoExercicio = acompRealFisicoDao.getQtdRealizadaExercicioNaoAcumulavel(exercicio, indicador.getItemEstrtIndResulIettr(), aref);
995 }
996
997 double previstoNoExercicio = itemEstrtIndResulDao.getQtdPrevistoExercicio(indicador.getItemEstrtIndResulIettr(), exercicio);
998 if("S".equals(indicador.getItemEstrtIndResulIettr().getIndAcumulavelIettr())){
999 totalRealizado += realizadoNoExercicio;
1000 totalPrevisto += previstoNoExercicio;
1001 }else{
1002 totalRealizado = realizadoNoExercicio;
1003 totalPrevisto = previstoNoExercicio;
1004 }
1005
1006 valoresR.add(realizadoNoExercicio);
1007 valoresP.add(previstoNoExercicio);
1008
1009 String strPrevistoExe = "";
1010 String strRealizadoExe = "";
1011 if ("Q".equalsIgnoreCase(tipoQtde)){
1012 strPrevistoExe = Pagina.trocaNullNumeroSemDecimal(previstoNoExercicio);
1013 strRealizadoExe = Pagina.trocaNullNumeroSemDecimal(realizadoNoExercicio);
1014 }
1015 else {
1016 strPrevistoExe = Pagina.trocaNullMoeda(previstoNoExercicio);
1017 strRealizadoExe = Pagina.trocaNullMoeda(realizadoNoExercicio);
1018 }
1019
1020
1021 builder.addClosedNode("valorExercicio",
1022 "exercicio=\"" + builder.normalize(exercicio.getDescricaoExe()) + "\"" +
1023
1024
1025 " valorPrevisto=\"" + builder.normalize(strPrevistoExe) + "\"" +
1026 " valorRealizado=\"" + builder.normalize(strRealizadoExe) + "\"");
1027 }
1028
1029 Collections.reverse(valoresR);
1030 Collections.reverse(valoresP);
1031
1032 totalPrevisto = acompRealFisicoDao.getSomaValoresArfs(indicador.getItemEstrtIndResulIettr(), valoresP).doubleValue();
1033 totalRealizado = acompRealFisicoDao.getSomaValoresArfs(indicador.getItemEstrtIndResulIettr(), valoresR).doubleValue();
1034
1035 double realizadoPrevisto = 0;
1036 if(totalPrevisto > 0) {
1037 realizadoPrevisto = ((totalRealizado/totalPrevisto) * 100);
1038 }
1039
1040 String strTotalPrevisto = "";
1041 String strTotalRealizado = "";
1042 if ("Q".equalsIgnoreCase(tipoQtde)){
1043 strTotalPrevisto = Pagina.trocaNullNumeroSemDecimal(totalPrevisto);
1044 strTotalRealizado = Pagina.trocaNullNumeroSemDecimal(totalRealizado);
1045 }
1046 else {
1047 strTotalPrevisto = Pagina.trocaNullMoeda(totalPrevisto);
1048 strTotalRealizado = Pagina.trocaNullMoeda(totalRealizado);
1049 }
1050
1051
1052 builder.addClosedNode("valorTotal",
1053 " percentualRealizadoPrevisto=\"" + builder.normalize(Pagina.trocaNullMoeda(new Double((realizadoPrevisto)))) + "\"" +
1054
1055
1056 " totalPrevisto=\"" + builder.normalize(strTotalPrevisto) + "\"" +
1057 " totalRealizado=\"" + builder.normalize(strTotalRealizado) + "\""
1058 );
1059
1060
1061 String strProjecao = "";
1062 String strPorcentual = "-";
1063
1064 if("S".equals(indicador.getItemEstrtIndResulIettr().getIndProjecaoIettr()) && totalRealizado > 0){
1065 double resultado = this.acompRefItemDao.calculoProjecao(indicador.getItemEstrtIndResulIettr(), itemAri);
1066 ExercicioExe exercicioPrevisto = itemEstrtIndResulDao.getMaiorExercicioIndicador(indicador.getItemEstrtIndResulIettr());
1067 double qtdePrevista = itemEstrtIndResulDao.getQtdPrevistoExercicio(indicador.getItemEstrtIndResulIettr(), exercicioPrevisto);
1068
1069 Mensagem msg = new Mensagem(this.request.getSession().getServletContext());
1070
1071 if(resultado == qtdePrevista)
1072 strProjecao = msg.getMensagem("acompRelatorio.indicadorResultado.projecao.seraAtingida");
1073 if(resultado > qtdePrevista)
1074 strProjecao = msg.getMensagem("acompRelatorio.indicadorResultado.projecao.seraAtingidaAntes");
1075 if(resultado < qtdePrevista){
1076 strProjecao = msg.getMensagem("acompRelatorio.indicadorResultado.projecao.naoSeraAtingida");
1077 }
1078
1079 Double porcentagem = new Double((resultado/qtdePrevista) * 100);
1080
1081 strPorcentual = Pagina.trocaNullNumeroDecimalSemMilhar(porcentagem);
1082 } else {
1083 if(totalRealizado == 0){
1084 strProjecao = "Não é possível realizar projeção sem informação de quantidades realizadas.";
1085 } else {
1086 strProjecao = "N/A";
1087 }
1088 }
1089
1090 builder.addClosedNode("valorProjecao",
1091 " projecao=\"" + builder.normalize(strProjecao) + "\"" +
1092 " mostrarProjecao=\"" + builder.normalize(mostrarProjecao) + "\"" +
1093 " percentual=\"" + builder.normalize(strPorcentual) + "\""
1094 );
1095
1096
1097 builder.closeNode("indicadorAcomp");
1098
1099 }
1100 builder.closeNode("indicadores");
1101 }
1102 } catch(Exception e){
1103 this.logger.error(e);
1104 throw new ECARException("Erro na criação do relatório: Indicadores - " + e.getMessage());
1105 }
1106 }
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118 private void geraXMLEvolucaoFinanceira(XmlBuilder builder, AcompReferenciaItemAri itemAri) throws ECARException{
1119 try{
1120 ItemEstruturaPrevisaoDao itemEstPrevDao = new ItemEstruturaPrevisaoDao(null);
1121 ItemEstruturaRealizadoDao itemEstRealizadoDao = new ItemEstruturaRealizadoDao(null);
1122 ItemEstruturaContaOrcamentoDao itemEstContaOrcDao = new ItemEstruturaContaOrcamentoDao(null);
1123
1124
1125 List listaExercicios = itemEstPrevDao.getListaExerciciosItemEstruturaPrevisao(itemAri.getItemEstruturaIett());
1126
1127
1128 List lista = itemEstPrevDao.getListaItemEstruturaPrevisao(itemAri.getItemEstruturaIett(), null);
1129
1130
1131
1132
1133 EfItemEstPrevisaoEfiep itemEstPrev = new EfItemEstPrevisaoEfiep();
1134
1135
1136 if (lista != null && !lista.isEmpty()){
1137
1138 int colunas = 0;
1139
1140 int numeroColunasExibidas = 0;
1141
1142 String descFinanceiro[] = new String[3];
1143 boolean mostrarDescFinanceiro[] = new boolean[3];
1144 descFinanceiro[0] = configura.getRecursoDescValor1Cfg();
1145 descFinanceiro[1] = configura.getRecursoDescValor2Cfg();
1146 descFinanceiro[2] = configura.getRecursoDescValor3Cfg();
1147
1148
1149 boolean mostrarValores[] = new boolean[6];
1150
1151 String descricoes[] = new String[6];
1152 descricoes[0] = configura.getFinanceiroDescValor1Cfg();
1153 descricoes[1] = configura.getFinanceiroDescValor2Cfg();
1154 descricoes[2] = configura.getFinanceiroDescValor3Cfg();
1155 descricoes[3] = configura.getFinanceiroDescValor4Cfg();
1156 descricoes[4] = configura.getFinanceiroDescValor5Cfg();
1157 descricoes[5] = configura.getFinanceiroDescValor6Cfg();
1158
1159 for(int i = 0; i < 6; i++){
1160 mostrarValores[i] = itemEstRealizadoDao.getVerificarMostrarValorByPosicaoCfg(i);
1161 if(mostrarValores[i]){
1162 colunas++;
1163 }
1164 }
1165
1166 builder.addNode("evolucaoFinanceira", "colunasRealizadas=\"" + builder.normalize(String.valueOf(colunas)) + "\"");
1167
1168
1169 builder.addNode("colunas");
1170
1171 builder.addClosedNode("coluna", "nome=\"Categoria Econômica\"");
1172 builder.addClosedNode("coluna", "nome=\"Fonte\"");
1173
1174
1175
1176
1177 for(int i = 0; i < 3; i++){
1178 mostrarDescFinanceiro[i] = itemEstRealizadoDao.getVerificarMostrarRecursoByPosicaoCfg(i);
1179 if(mostrarDescFinanceiro[i]){
1180 builder.addClosedNode("coluna", "nome=\"" + builder.normalize(descFinanceiro[i]) + "\"");
1181 numeroColunasExibidas++;
1182 }
1183 }
1184
1185 for(int i = 0; i < 6; i++){
1186 mostrarValores[i] = itemEstRealizadoDao.getVerificarMostrarValorByPosicaoCfg(i);
1187 if(mostrarValores[i]){
1188 builder.addClosedNode("coluna", "nome=\"" + builder.normalize(descricoes[i]) + "\"");
1189 numeroColunasExibidas++;
1190 }
1191 }
1192
1193 builder.closeNode("colunas");
1194
1195
1196
1197
1198
1199 double t = 13.62;
1200 String tam = String.valueOf(t/numeroColunasExibidas) + "cm";
1201
1202 builder.addNode("colunasHeader");
1203 for(int x = 1; x <= numeroColunasExibidas; x++){
1204 builder.addClosedNode("colunaHeader", "tamanho=\"" + builder.normalize(tam) + "\"");
1205 }
1206 builder.closeNode("colunasHeader");
1207
1208 double totFonAprovado = 0, totFonRevisado = 0;
1209 double totGerAprovado = 0, totGerRevisado = 0;
1210 double[] totFonValor = new double[6];
1211 double[] totGerValor = new double[6];
1212
1213
1214 for(int i = 0; i < 6; i++){
1215 totFonValor[i] = 0;
1216 totGerValor[i] = 0;
1217 }
1218
1219
1220
1221
1222 for(Iterator itExe = listaExercicios.iterator(); itExe.hasNext();){
1223 ExercicioExe exercicio = (ExercicioExe) itExe.next();
1224 String exercicioDesc = exercicio.getDescricaoExe();
1225 String exercicioDescTotal = exercicioDesc;
1226 double totExeAprovado = 0, totExeRevisado = 0;
1227 double[] totExeValor = new double[6];
1228
1229
1230 for(int i = 0; i < 6; i++){
1231 totExeValor[i] = 0;
1232 }
1233
1234
1235 lista = itemEstPrevDao.getListaItemEstruturaPrevisao(itemAri.getItemEstruturaIett(), exercicio);
1236
1237
1238 long codFonte = -1;
1239
1240 for(Iterator it = lista.iterator(); it.hasNext();){
1241 itemEstPrev = (EfItemEstPrevisaoEfiep) it.next();
1242
1243
1244 EfItemEstContaEfiec itemEstConta =
1245 itemEstContaOrcDao.getItemEstruturaConta(
1246 itemAri.getItemEstruturaIett(),
1247 exercicio,
1248 itemEstPrev.getFonteRecursoFonr(),
1249 itemEstPrev.getRecursoRec());
1250
1251
1252 Double[] valores = itemEstRealizadoDao.getSomaItemEstruturaRealizado(
1253 itemEstConta,
1254 exercicio);
1255
1256
1257 if(codFonte != itemEstPrev.getFonteRecursoFonr().getCodFonr().longValue()){
1258
1259 if(codFonte != -1){
1260
1261 builder.closeNode("fonte");
1262
1263
1264 totFonAprovado = 0;
1265 totFonRevisado = 0;
1266
1267 for(int i = 0; i < 6; i++){
1268 totFonValor[i] = 0;
1269 }
1270 }
1271
1272 codFonte = itemEstPrev.getFonteRecursoFonr().getCodFonr().longValue();
1273
1274 builder.addNode("fonte", "nome=\"" + builder.normalize(itemEstPrev.getFonteRecursoFonr().getNomeFonr()) + "\" exercicio=\"" + builder.normalize(exercicioDesc) + "\"");
1275 exercicioDesc = "";
1276 }
1277
1278
1279 if(itemEstPrev.getValorAprovadoEfiep() != null){
1280 totFonAprovado = totFonAprovado + itemEstPrev.getValorAprovadoEfiep().doubleValue();
1281 totExeAprovado = totExeAprovado + itemEstPrev.getValorAprovadoEfiep().doubleValue();
1282 }
1283 if(itemEstPrev.getValorRevisadoEfiep() != null){
1284 totFonRevisado = totFonRevisado + itemEstPrev.getValorRevisadoEfiep().doubleValue();
1285 totExeRevisado = totExeRevisado + itemEstPrev.getValorRevisadoEfiep().doubleValue();
1286 }
1287
1288 for(int i = 0; i < 6; i++){
1289 if(mostrarValores[i]){
1290 totFonValor[i] = totFonValor[i] + valores[i].doubleValue();
1291 totExeValor[i] = totExeValor[i] + valores[i].doubleValue();
1292 }
1293 }
1294
1295
1296 builder.addNode("recursoFinanceiro", "nome=\"" + builder.normalize(itemEstPrev.getRecursoRec().getNomeRec()) + "\"");
1297
1298
1299
1300 for(int i = 0; i < 3; i++){
1301 if(mostrarDescFinanceiro[i]){
1302 if(i == 0)
1303 builder.addClosedNode("rec", "valor=\"" + builder.normalize(Pagina.trocaNullNumeroSemDecimal(itemEstPrev.getValorAprovadoEfiep())) + "\"");
1304 if(i == 1)
1305 builder.addClosedNode("rec", "valor=\"" + builder.normalize(Pagina.trocaNullNumeroSemDecimal(itemEstPrev.getValorRevisadoEfiep())) + "\"");
1306 }
1307 }
1308
1309 for(int i = 0; i < 6; i++){
1310 if(mostrarValores[i])
1311 builder.addClosedNode("rec", "valor=\"" + builder.normalize(Util.formataNumeroSemDecimal(valores[i].doubleValue()))+ "\"");
1312 }
1313 builder.closeNode("recursoFinanceiro");
1314 }
1315
1316
1317
1318
1319 totGerAprovado = totGerAprovado + totExeAprovado;
1320 totGerRevisado = totGerRevisado + totExeRevisado;
1321
1322 for(int i = 0; i < 6; i++){
1323 if(mostrarValores[i])
1324 totGerValor[i] = totGerValor[i] + totExeValor[i];
1325 }
1326
1327
1328 builder.addNode("totalEvolucaoFinanceiraExercicio", "exercicio=\"" + builder.normalize(exercicioDescTotal) + "\"");
1329
1330
1331
1332 for(int i = 0; i < 3; i++){
1333 if(mostrarDescFinanceiro[i]){
1334 if(i == 0)
1335 builder.addClosedNode("total", "valor=\"" + builder.normalize(Util.formataNumeroSemDecimal(totExeAprovado))+ "\"");
1336 if(i == 1)
1337 builder.addClosedNode("total", "valor=\"" + builder.normalize(Util.formataNumeroSemDecimal(totExeRevisado))+ "\"");
1338 }
1339 }
1340
1341 for(int i = 0; i < 6; i++){
1342 if(mostrarValores[i])
1343 builder.addClosedNode("total", "valor=\"" + builder.normalize(Util.formataNumeroSemDecimal(totExeValor[i]))+ "\"");
1344 }
1345 builder.closeNode("totalEvolucaoFinanceiraExercicio");
1346
1347
1348 builder.closeNode("fonte");
1349 }
1350
1351 builder.addNode("totalEvolucaoFinanceira");
1352
1353
1354
1355 for(int i = 0; i < 3; i++){
1356 if(mostrarDescFinanceiro[i]){
1357 if(i == 0)
1358 builder.addClosedNode("total", "valor=\"" + builder.normalize(Util.formataNumeroSemDecimal(totGerAprovado))+ "\"");
1359 if(i == 1)
1360 builder.addClosedNode("total", "valor=\"" + builder.normalize(Util.formataNumeroSemDecimal(totGerRevisado))+ "\"");
1361 }
1362 }
1363
1364 for(int i = 0; i < 6; i++){
1365 if(mostrarValores[i])
1366 builder.addClosedNode("total", "valor=\"" + builder.normalize(Util.formataNumeroSemDecimal(totGerValor[i]))+ "\"");
1367 }
1368 builder.closeNode("totalEvolucaoFinanceira");
1369
1370 builder.closeNode("evolucaoFinanceira");
1371 }
1372 } catch (HibernateException e){
1373 this.logger.error(e);
1374 throw new ECARException("Erro na criação do relatório: Evolução Financeira - " + e.getMessage());
1375 }
1376 }
1377 }