1
2
3
4
5 package ecar.servlet.relatorio;
6
7 import java.util.ArrayList;
8 import java.util.Collections;
9 import java.util.Comparator;
10 import java.util.Iterator;
11 import java.util.List;
12 import java.util.Set;
13
14 import javax.servlet.http.HttpServletRequest;
15
16 import comum.util.Data;
17 import comum.util.Pagina;
18 import comum.util.Util;
19 import comum.util.XmlBuilder;
20
21 import ecar.bean.FonteRecursosPPA;
22 import ecar.bean.IndResulExercicioBean;
23 import ecar.bean.TotalizadorRelatorios;
24 import ecar.dao.ExercicioDao;
25 import ecar.dao.ItemEstLocalRevIettlrDAO;
26 import ecar.dao.ItemEstrtIndResulDao;
27 import ecar.dao.ItemEstruturaDao;
28 import ecar.dao.ItemEstruturaPrevisaoDao;
29 import ecar.exception.ECARException;
30 import ecar.pojo.EfIettFonteTotEfieft;
31 import ecar.pojo.EfItemEstPrevisaoEfiep;
32 import ecar.pojo.ExercicioExe;
33 import ecar.pojo.IettIndResulRevIettrr;
34 import ecar.pojo.ItemEstFisicoRevIettfr;
35 import ecar.pojo.ItemEstLocalRevIettlr;
36 import ecar.pojo.ItemEstrtIndResulIettr;
37 import ecar.pojo.ItemEstrutFisicoIettf;
38 import ecar.pojo.ItemEstrutLocalIettl;
39 import ecar.pojo.ItemEstruturaIett;
40 import ecar.pojo.ItemEstruturarevisaoIettrev;
41 import ecar.util.Dominios;
42
43
44
45
46
47 public class RelatorioApendiceDois extends AbstractServletReportXmlXsl {
48
49
50
51
52 private static final long serialVersionUID = 2395457474744685932L;
53 private static final int nivelPrograma = 2;
54 private static final int nivelAcao = 3;
55 private static final int nivelProduto = 4;
56
57 private ItemEstruturaDao itemEstruturaDao;
58 private ItemEstLocalRevIettlrDAO itemEstLocalDao;
59 private ItemEstruturaPrevisaoDao itemEstruturaPrevisaoDao;
60 private ExercicioDao exercicioDao;
61 private ItemEstrtIndResulDao indResulDao;
62
63 private String periodoIni;
64 private String periodoFim;
65 private int paginaInicial;
66 private String titulo;
67 private List todosItens;
68 private String tipoRelatorio;
69 private List idsFontesRecursos;
70 private List fontesRecursosPPAs;
71 private String tipoValor;
72
73 private List idsEstrutura;
74 private List totalizadorEstrutura;
75 private List idsValores;
76 private List totalizadorValores;
77
78 private double totalGeralProgramas;
79 private double totalGeralAcoes;
80
81
82
83
84
85
86
87
88
89
90
91 public StringBuffer getXml(HttpServletRequest request) throws ECARException{
92 XmlBuilder builder = new XmlBuilder();
93 itemEstruturaDao = new ItemEstruturaDao(request);
94 itemEstLocalDao = new ItemEstLocalRevIettlrDAO(request);
95 itemEstruturaPrevisaoDao = new ItemEstruturaPrevisaoDao(request);
96 exercicioDao = new ExercicioDao(request);
97 indResulDao = new ItemEstrtIndResulDao(request);
98
99 idsFontesRecursos = new ArrayList();
100 fontesRecursosPPAs = new ArrayList();
101 idsEstrutura = new ArrayList();
102 idsValores = new ArrayList();
103 totalizadorEstrutura = new ArrayList();
104 totalizadorValores = new ArrayList();
105
106 totalGeralAcoes = 0;
107 totalGeralProgramas = 0;
108
109 periodoIni = Pagina.getParamStr(request, "periodoIni");
110 periodoFim = Pagina.getParamStr(request, "periodoFim");
111 paginaInicial = Pagina.getParamInt(request, "paginaInicial");
112 tipoRelatorio = Pagina.getParamStr(request, "indTipoRelatorio");
113 tipoValor = Pagina.getParamStr(request, "indTipoValor");
114
115 titulo = "ESTADO DO PARANÁ - PPA " + periodoIni + "/" + periodoFim + " - Atualizado";
116
117 Util.liberarImagem();
118
119 String nomeRelatorio = "";
120 String valorRelatorio = "";
121 String indMostrarTotalizador = Pagina.getParamStr(request, "indMostrarTotalizador");
122
123 if("A".equals(tipoValor)){
124 valorRelatorio = " - Valores Aprovados (Histórico)";
125 }
126
127 nomeRelatorio = "REVISÃO DO PPA " + periodoIni + "-" + periodoFim + " - PPA ATUALIZADO";
128
129 String mesAnoGeracao = Data.getNomeMesExtenso(Data.getMes(Data.getDataAtual()) + 1).toUpperCase() + " " + String.valueOf(Data.getAno(Data.getDataAtual()));
130
131 builder.addNode("relatorio",
132 " titulo=\"" + builder.normalize(titulo) + "\"" +
133 " capa=\"" + builder.normalize(String.valueOf(paginaInicial)) + "\"" +
134 " paginaInicial=\"" + builder.normalize(String.valueOf(paginaInicial+3)) + "\"" +
135 " nomeRelatorio=\"" + builder.normalize(nomeRelatorio) + "\"" +
136 " nomeRelatorioRodape=\"" + builder.normalize(valorRelatorio) + "\"" +
137 " tipo=\"" + builder.normalize(tipoRelatorio) + "\"" +
138 " anoIni=\"" + builder.normalize(periodoIni) + "\"" +
139 " anoFim=\"" + builder.normalize(periodoFim) + "\"" +
140 " valores=\"" + builder.normalize(tipoValor) + "\"" +
141 " mesAnoGeracao=\"" + builder.normalize(mesAnoGeracao) + "\"" +
142 " mostrarTotalizador=\"" + builder.normalize(indMostrarTotalizador) + "\"");
143
144 todosItens = new ArrayList(itemEstruturaDao.getArvoreItensIettComRevisao(tipoRelatorio, periodoIni, periodoFim));
145
146 geraXMLItens(builder);
147
148 geraXMLTotalizador(builder);
149
150 geraXMLTotalizadorValores(builder);
151
152 builder.closeNode("relatorio");
153 return builder.toStringBuffer();
154 }
155
156
157
158
159
160
161
162
163
164
165 public String getXslFileName() {
166 return "relatorioApendice.xsl";
167 }
168
169
170
171
172
173
174
175
176
177
178
179 public String getErrorPage(HttpServletRequest request, String mensagem){
180 String errorPage = "relatorios/ctrl_ppa.jsp?msgOperacao=" + mensagem;
181 return errorPage;
182 }
183
184
185
186
187
188
189
190
191
192
193 public void geraXMLItens (XmlBuilder builder) throws ECARException {
194 List itens = new ArrayList(todosItens);
195
196 if(itens != null){
197 Iterator itItens = itens.iterator();
198 while(itItens.hasNext()){
199 ItemEstruturaIett iett = (ItemEstruturaIett) itItens.next();
200
201 if(iett.getNivelIett().intValue() == nivelPrograma){
202
203 geraXMLPrograma(builder, iett);
204 }
205 }
206 }
207 }
208
209
210
211
212
213
214
215
216
217
218
219 public void geraXMLPrograma(XmlBuilder builder, ItemEstruturaIett item) throws ECARException{
220
221
222 String nomePrograma = item.getNomeIett();
223 String codigoPrograma = item.getSiglaIett();
224
225 builder.addNode("programa",
226 "nome=\"" + builder.normalize(nomePrograma) + "\"" +
227 " codigo=\"" + builder.normalize(codigoPrograma) + "\"");
228
229 geraXMLDadosPrograma(builder, item);
230
231 geraXMLValoresFinanceiros(builder, item);
232
233 builder.addNode("acao",
234 "periodo=\"" + builder.normalize(periodoIni + "-" + periodoFim) + "\"" +
235 " tipoApendice=\"" + builder.normalize(tipoRelatorio) + "\"");
236
237
238 List itensAcao = new ArrayList(todosItens);
239 Iterator itAcao = itensAcao.iterator();
240 boolean gerouAcao = false;
241 while(itAcao.hasNext()){
242 ItemEstruturaIett iettAcao = (ItemEstruturaIett) itAcao.next();
243 if(iettAcao.getNivelIett().intValue() == nivelAcao && item.equals(iettAcao.getItemEstruturaIett())){
244 boolean aux = geraXMLAcao(builder, iettAcao);
245 gerouAcao = gerouAcao || aux;
246
247
248
249
250
251 }
252 }
253
254 if(gerouAcao)
255 this.incrementarTotalizadorEstrutura(item.getEstruturaEtt().getCodEtt(), "Quantidade de Programas");
256
257 builder.closeNode("acao");
258
259 builder.closeNode("programa");
260 }
261
262
263
264
265
266
267
268
269
270
271
272 public void geraXMLDadosPrograma(XmlBuilder builder, ItemEstruturaIett item) throws ECARException{
273 builder.addNode("dados");
274 String orgao = "";
275 if(item.getOrgaoOrgByCodOrgaoResponsavel2Iett() != null)
276 orgao = item.getOrgaoOrgByCodOrgaoResponsavel2Iett().getDescricaoOrg();
277
278
279 String objetivo = item.getObjetivoEspecificoIett();
280 String publicoAlvo = item.getDescricaoR2();
281 builder.addClosedNode("campo", "label=\"Órgão Resp.\" valor=\"" + builder.normalize(orgao) + "\"");
282 builder.addClosedNode("campo", "label=\"Objetivo\" valor=\"" + builder.normalize(objetivo) + "\"");
283 builder.addClosedNode("campo", "label=\"Público-Alvo\" valor=\"" + builder.normalize(publicoAlvo) + "\"");
284 builder.closeNode("dados");
285 }
286
287
288
289
290
291
292
293
294
295
296
297 public void geraXMLValoresFinanceiros(XmlBuilder builder, ItemEstruturaIett item) throws ECARException{
298 builder.addNode("valores-financeiros", "periodo=\"" + periodoIni + "-" + periodoFim + "\"");
299
300
301
302
303 geraXMLValoresFinanceirosItem(builder, item);
304
305 builder.closeNode("valores-financeiros");
306 }
307
308
309
310
311
312
313
314
315
316
317
318 public void geraXMLValoresFinanceirosItem(XmlBuilder builder, ItemEstruturaIett item) throws ECARException{
319
320
321
322 String valor = "";
323 double valorTotal = 0;
324 limparIdsFontesRecursos();
325
326 List itensTemp = new ArrayList(todosItens);
327 Iterator itTudo = itensTemp.iterator();
328 while(itTudo.hasNext()){
329 ItemEstruturaIett iett = (ItemEstruturaIett) itTudo.next();
330 if(nivelAcao == iett.getNivelIett().intValue() && iett.getItemEstruturaIett().equals(item)){
331
332
333 ItemEstruturarevisaoIettrev ultRevAcao = getUltimaRevisaoIett(iett.getItemEstruturarevisaoIettrevs());
334
335 if(ultRevAcao != null && "E".equals(ultRevAcao.getSituacaoIettrev())){
336
337 continue;
338 }
339
340
341
342 if("A".equals(tipoValor)){
343 if(ultRevAcao != null){
344 continue;
345 }
346 }
347
348 List listFontes = new ArrayList(iett.getEfIettFonteTotEfiefts());
349 Iterator itFontes = listFontes.iterator();
350 while(itFontes.hasNext()){
351 EfIettFonteTotEfieft fonte = (EfIettFonteTotEfieft) itFontes.next();
352
353 valor = "0";
354 List listaRecursos = itemEstruturaPrevisaoDao.getRecursosByFonteRecurso(fonte.getFonteRecursoFonr().getCodFonr(), fonte.getItemEstruturaIett().getCodIett(), Dominios.SIM);
355 Iterator itRecursos = listaRecursos.iterator();
356 while(itRecursos.hasNext()){
357 EfItemEstPrevisaoEfiep recurso = (EfItemEstPrevisaoEfiep) itRecursos.next();
358
359 if(recurso.getExercicioExe() != null &&
360 recurso.getExercicioExe().getDataInicialExe() != null &&
361 recurso.getExercicioExe().getDataFinalExe() != null
362 ){
363 int exeAnoIni = Data.getAno(recurso.getExercicioExe().getDataInicialExe());
364 int exeAnoFim = Data.getAno(recurso.getExercicioExe().getDataFinalExe());
365 if(exeAnoIni >= Integer.parseInt(periodoIni) && exeAnoFim <= Integer.parseInt(periodoFim)){
366 if("A".equals(tipoValor)){
367 valor = String.valueOf(recurso.getValorAprovadoEfiep());
368 totalGeralProgramas += recurso.getValorAprovadoEfiep().doubleValue();
369 }
370 if("R".equals(tipoValor)){
371 valor = String.valueOf(recurso.getValorRevisadoEfiep());
372 totalGeralProgramas += recurso.getValorRevisadoEfiep().doubleValue();
373 }
374 incrementarFonteRecurso(fonte.getFonteRecursoFonr().getCodFonr(), fonte.getFonteRecursoFonr().getNomeFonr(), Double.valueOf(valor).doubleValue());
375 incrementarTotalizadorValor(fonte.getFonteRecursoFonr().getCodFonr(), fonte.getFonteRecursoFonr().getNomeFonr(), Double.valueOf(valor).doubleValue());
376 }
377 }
378 }
379 }
380 }
381 }
382
383 Iterator itFontesPPA = fontesRecursosPPAs.iterator();
384 while(itFontesPPA.hasNext()){
385 FonteRecursosPPA fonteIncluida = (FonteRecursosPPA) itFontesPPA.next();
386 builder.addClosedNode("valor",
387 "label=\"" + builder.normalize(fonteIncluida.getLabel()) + "\"" +
388 " valor=\"" + builder.normalize("R$ " + Util.formataMoeda(fonteIncluida.getValor())) + "\"");
389 valorTotal += fonteIncluida.getValor();
390 }
391
392 builder.addClosedNode("valor", "label=\"Total\" valor=\"" + builder.normalize("R$ " + Util.formataMoeda(valorTotal)) + "\"");
393
394 }
395
396
397
398
399
400
401
402
403
404
405
406
407
408 public boolean geraXMLAcao(XmlBuilder builder, ItemEstruturaIett item) throws ECARException{
409
410 String nome = "";
411 String situacaoAcao = "";
412 String tipoSituacaoAcao = "";
413
414 boolean gerouAcao = false;
415 boolean acaoExcluida = false;
416 boolean gerarAcao = true;
417
418 if(item.getItemEstruturarevisaoIettrevs() != null && item.getItemEstruturarevisaoIettrevs().size() > 0){
419 ItemEstruturarevisaoIettrev ultRevAcao = getUltimaRevisaoIett(item.getItemEstruturarevisaoIettrevs());
420 if(ultRevAcao != null){
421 tipoSituacaoAcao = ultRevAcao.getSituacaoIettrev();
422
423 if(ultRevAcao.getDescricaoR3rev() != null && !"".equals(ultRevAcao.getDescricaoIettrev()))
424 nome = ultRevAcao.getDescricaoR3rev();
425 else
426 nome = ultRevAcao.getNomeIettrev();
427
428 if("I".equals(tipoSituacaoAcao))
429 situacaoAcao = " (Ação Incluída)";
430 if("A".equals(tipoSituacaoAcao))
431 situacaoAcao = " (Ação Alterada)";
432 if("E".equals(tipoSituacaoAcao)){
433 acaoExcluida = true;
434 }
435
436
437 if("A".equals(tipoValor)){
438 gerarAcao = false;
439 }
440 }
441 }
442
443 if(!acaoExcluida && gerarAcao){
444 if("".equals(nome)){
445 if(item.getDescricaoR3() != null && !"".equals(item.getDescricaoR3()))
446 nome = item.getDescricaoR3();
447 else
448 nome = item.getNomeIett();
449 }
450
451 String valorTotal = "";
452 if("A".equals(tipoValor)){
453 valorTotal = somaValoresAprovadosAcao(item);
454 }
455 if("R".equals(tipoValor)){
456 valorTotal = somaValoresRevisadosAcao(item);
457 }
458
459 builder.addNode("itemAcao",
460
461 "nome=\"" + builder.normalize(nome.toUpperCase()) + "\"" +
462 " codigo=\"" + builder.normalize(item.getSiglaIett()) + "\"" +
463 " valorTotal=\""+ builder.normalize(valorTotal) +"\"" +
464 " tipoSituacaoAcao=\"" + builder.normalize(tipoSituacaoAcao) + "\"" +
465 " situacaoAcao=\"" + builder.normalize(situacaoAcao) + "\"" +
466 " justificativa=\"\"" +
467 " larguraColAcao=\"21cm\"" +
468 " larguraColAux=\"0.1mm\"");
469
470
471 this.incrementarTotalizadorEstrutura(item.getEstruturaEtt().getCodEtt(), "Quantidade de Ações");
472 gerouAcao = true;
473
474
475 List itensProduto = new ArrayList(todosItens);
476 Iterator itProduto = itensProduto.iterator();
477 boolean gerouProduto = false;
478 while(itProduto.hasNext()){
479 ItemEstruturaIett iettProduto = (ItemEstruturaIett) itProduto.next();
480 if(iettProduto.getNivelIett().intValue() == nivelProduto && item.equals(iettProduto.getItemEstruturaIett())){
481 boolean aux = geraXMLProduto(builder, iettProduto);
482 gerouProduto = gerouProduto || aux;
483
484
485
486
487
488
489 }
490 }
491
492
493
494
495
496
497 builder.closeNode("itemAcao");
498 }
499
500 return gerouAcao;
501 }
502
503
504
505
506
507
508
509
510
511
512 public boolean verificarProdutosExcluidos(ItemEstruturaIett acao){
513 List itensProduto = new ArrayList(todosItens);
514 Iterator itProduto = itensProduto.iterator();
515 while(itProduto.hasNext()){
516 ItemEstruturaIett produto = (ItemEstruturaIett) itProduto.next();
517 if(produto.getNivelIett().intValue() == nivelProduto && acao.equals(produto.getItemEstruturaIett())){
518 if(produto.getItemEstruturarevisaoIettrevs() != null && produto.getItemEstruturarevisaoIettrevs().size() > 0){
519 Iterator itRevisoesProduto = produto.getItemEstruturarevisaoIettrevs().iterator();
520 while(itRevisoesProduto.hasNext()){
521 ItemEstruturarevisaoIettrev revProduto = (ItemEstruturarevisaoIettrev) itRevisoesProduto.next();
522 if("E".equals(revProduto.getSituacaoIettrev())){
523 return true;
524 }
525 }
526 }
527 }
528 }
529 return false;
530 }
531
532
533
534
535
536
537
538
539
540
541
542 public String somaValoresRevisadosAcao(ItemEstruturaIett item) throws ECARException{
543
544 double valorTotal = 0;
545 List iettsFontes = new ArrayList(item.getEfIettFonteTotEfiefts());
546 Iterator itFontes = iettsFontes.iterator();
547 while(itFontes.hasNext()){
548 EfIettFonteTotEfieft fonte = (EfIettFonteTotEfieft) itFontes.next();
549 Iterator itRecursos = itemEstruturaPrevisaoDao.getRecursosByFonteRecurso(fonte.getFonteRecursoFonr().getCodFonr(), item.getCodIett(), Dominios.SIM).iterator();
550 while(itRecursos.hasNext()){
551 EfItemEstPrevisaoEfiep recurso = (EfItemEstPrevisaoEfiep) itRecursos.next();
552 if(recurso.getExercicioExe() != null &&
553 recurso.getExercicioExe().getDataInicialExe() != null &&
554 recurso.getExercicioExe().getDataFinalExe() != null
555 ){
556 int exeAnoIni = Data.getAno(recurso.getExercicioExe().getDataInicialExe());
557 int exeAnoFim = Data.getAno(recurso.getExercicioExe().getDataFinalExe());
558 if(exeAnoIni >= Integer.parseInt(periodoIni) && exeAnoFim <= Integer.parseInt(periodoFim)){
559 valorTotal += recurso.getValorRevisadoEfiep().doubleValue();
560 }
561 }
562 }
563 }
564 totalGeralAcoes += valorTotal;
565 return "R$ " + Util.formataMoeda(valorTotal);
566 }
567
568
569
570
571
572
573
574
575
576
577
578 public String somaValoresAprovadosAcao(ItemEstruturaIett item) throws ECARException{
579
580 double valorTotal = 0;
581 List iettsFontes = new ArrayList(item.getEfIettFonteTotEfiefts());
582 Iterator itFontes = iettsFontes.iterator();
583 while(itFontes.hasNext()){
584 EfIettFonteTotEfieft fonte = (EfIettFonteTotEfieft) itFontes.next();
585 Iterator itRecursos = itemEstruturaPrevisaoDao.getRecursosByFonteRecurso(fonte.getFonteRecursoFonr().getCodFonr(), item.getCodIett(), Dominios.SIM).iterator();
586 while(itRecursos.hasNext()){
587 EfItemEstPrevisaoEfiep recurso = (EfItemEstPrevisaoEfiep) itRecursos.next();
588 if(recurso.getExercicioExe() != null &&
589 recurso.getExercicioExe().getDataInicialExe() != null &&
590 recurso.getExercicioExe().getDataFinalExe() != null
591 ){
592 int exeAnoIni = Data.getAno(recurso.getExercicioExe().getDataInicialExe());
593 int exeAnoFim = Data.getAno(recurso.getExercicioExe().getDataFinalExe());
594 if(exeAnoIni >= Integer.parseInt(periodoIni) && exeAnoFim <= Integer.parseInt(periodoFim)){
595 valorTotal += recurso.getValorAprovadoEfiep().doubleValue();
596 }
597 }
598 }
599 }
600 totalGeralAcoes += valorTotal;
601 return "R$ " + Util.formataMoeda(valorTotal);
602 }
603
604
605
606
607
608
609
610
611
612
613
614
615 public boolean geraXMLProduto(XmlBuilder builder, ItemEstruturaIett item) throws ECARException{
616 boolean gerouProduto = false;
617
618 String nome = "";
619 String tipo = "";
620 String unidade = "";
621 String tipoSituacao = "";
622 String regiao = "";
623 String valor = "";
624
625
626 if("A".equals(tipoValor)){
627
628
629
630 ItemEstruturarevisaoIettrev ultRevProduto = getUltimaRevisaoIett(item.getItemEstruturarevisaoIettrevs());
631 if(ultRevProduto == null){
632 List indicadores = new ArrayList(item.getItemEstrtIndResulIettrs());
633 if(indicadores != null && indicadores.size() > 0){
634 Iterator itInd = indicadores.iterator();
635 while(itInd.hasNext()){
636 ItemEstrtIndResulIettr indicador = (ItemEstrtIndResulIettr) itInd.next();
637
638 nome = item.getDescricaoR3();
639 tipo = indicador.getNomeIettir();
640 unidade = indicador.getUnidMedidaIettr();
641
642 if(item.getItemEstrutLocalIettls() != null && item.getItemEstrutLocalIettls().size() > 0){
643 List lLocal = new ArrayList(item.getItemEstrutLocalIettls());
644 ItemEstrutLocalIettl local = (ItemEstrutLocalIettl) lLocal.get(0);
645
646 regiao = local.getLocalItemLit().getIdentificacaoLit();
647 }
648
649 tipoSituacao = "";
650
651 valor = indResulDao.getSomaQuantidadePrevista(indicador);
652
653 geraXMLItemProduto(builder, item, nome, tipo, unidade, tipoSituacao, regiao, valor, "");
654 gerouProduto = true;
655 }
656 }
657 }
658 }
659
660 else if ("R".equals(tipoValor)){
661
662
663
664
665
666
667 List revisoes = new ArrayList(item.getItemEstruturarevisaoIettrevs());
668 if(revisoes.isEmpty()){
669
670 List indicadores = new ArrayList(item.getItemEstrtIndResulIettrs());
671 if(indicadores != null && indicadores.size() > 0){
672 Iterator itInd = indicadores.iterator();
673 while(itInd.hasNext()){
674 ItemEstrtIndResulIettr indicador = (ItemEstrtIndResulIettr) itInd.next();
675
676 nome = item.getDescricaoR3();
677 tipo = indicador.getNomeIettir();
678 unidade = indicador.getUnidMedidaIettr();
679
680 if(item.getItemEstrutLocalIettls() != null && item.getItemEstrutLocalIettls().size() > 0){
681 List lLocal = new ArrayList(item.getItemEstrutLocalIettls());
682 ItemEstrutLocalIettl local = (ItemEstrutLocalIettl) lLocal.get(0);
683
684 regiao = local.getLocalItemLit().getIdentificacaoLit();
685 }
686
687 tipoSituacao = "";
688
689 valor = indResulDao.getSomaQuantidadePrevista(indicador);
690
691 geraXMLItemProduto(builder, item, nome, tipo, unidade, tipoSituacao, regiao, valor, "");
692 gerouProduto = true;
693 }
694 }
695 }
696 else {
697
698
699 Iterator itRevisoes = revisoes.iterator();
700 while(itRevisoes.hasNext()){
701 ItemEstruturarevisaoIettrev iettRev = (ItemEstruturarevisaoIettrev) itRevisoes.next();
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720 if(iettRev.getIettIndResulRevIettrrs() != null && iettRev.getIettIndResulRevIettrrs().size() > 0){
721
722
723
724
725 Iterator itIndRev = iettRev.getIettIndResulRevIettrrs().iterator();
726 while(itIndRev.hasNext()){
727 IettIndResulRevIettrr indRev = (IettIndResulRevIettrr) itIndRev.next();
728
729 nome = "";
730 if(iettRev.getDescricaoR3rev() != null && !"".equals(iettRev.getDescricaoR3rev()))
731 nome = iettRev.getDescricaoR3rev();
732 else
733 nome = iettRev.getNomeIettrev();
734
735 if("".equals(nome)){
736 if(item.getDescricaoR3() != null && !"".equals(item.getDescricaoR3()))
737 nome = item.getDescricaoR3();
738 else
739 nome = item.getNomeIett();
740 }
741
742
743
744
745
746
747
748
749
750
751
752
753 if(indRev.getItemEstrtIndResulIettr() == null)
754 throw new ECARException("Erro na geração do Relatório do Apêndice 2 do PPA: O Item \"" + item.getSiglaIett() + "-" + item.getNomeIett() + "\" possui Meta Física de Revisão sem tipo informado.");
755
756 tipo = indRev.getItemEstrtIndResulIettr().getNomeIettir();
757 unidade = indRev.getItemEstrtIndResulIettr().getUnidMedidaIettr();
758 valor = somaValoresMetasRevisadas(indRev);
759
760
761
762 if(iettRev.getItemEstLocalRevIettlrs() != null && iettRev.getItemEstLocalRevIettlrs().size() > 0){
763 List lLocal = new ArrayList(iettRev.getItemEstLocalRevIettlrs());
764 ItemEstLocalRevIettlr local = (ItemEstLocalRevIettlr) lLocal.get(0);
765 regiao = local.getLocalItemLit().getIdentificacaoLit();
766 }
767 else {
768
769 if(item.getItemEstrutLocalIettls() != null && item.getItemEstrutLocalIettls().size() > 0){
770 List lLocal = new ArrayList(item.getItemEstrutLocalIettls());
771 ItemEstrutLocalIettl local = (ItemEstrutLocalIettl) lLocal.get(0);
772 regiao = local.getLocalItemLit().getIdentificacaoLit();
773 }
774 }
775
776 tipoSituacao = iettRev.getSituacaoIettrev();
777
778 if(!"E".equals(tipoSituacao)){
779 geraXMLItemProduto(builder, item, nome, tipo, unidade, tipoSituacao, regiao, valor, "");
780 gerouProduto = true;
781 }
782 }
783 }
784 else{
785
786
787 nome = "";
788 if(iettRev.getDescricaoR3rev() != null && !"".equals(iettRev.getDescricaoR3rev()))
789 nome = iettRev.getDescricaoR3rev();
790 else
791 nome = iettRev.getNomeIettrev();
792
793 if("".equals(nome)){
794 if(item.getDescricaoR3() != null && !"".equals(item.getDescricaoR3()))
795 nome = item.getDescricaoR3();
796 else
797 nome = item.getNomeIett();
798 }
799
800
801
802
803
804
805
806
807 tipo = "não informado";
808 unidade = "não informado";
809 valor = "-";
810
811 List indResulIett = new ArrayList(item.getItemEstrtIndResulIettrs());
812 if(indResulIett != null && !indResulIett.isEmpty()){
813 ItemEstrtIndResulIettr indResul = (ItemEstrtIndResulIettr) indResulIett.get(0);
814 tipo = indResul.getNomeIettir();
815 unidade = indResul.getUnidMedidaIettr();
816 valor = indResulDao.getSomaQuantidadePrevista(indResul);
817 }
818
819
820 if(iettRev.getItemEstLocalRevIettlrs() != null && iettRev.getItemEstLocalRevIettlrs().size() > 0){
821 List lLocal = new ArrayList(iettRev.getItemEstLocalRevIettlrs());
822 ItemEstLocalRevIettlr local = (ItemEstLocalRevIettlr) lLocal.get(0);
823 regiao = local.getLocalItemLit().getIdentificacaoLit();
824 }
825 else {
826
827 if(item.getItemEstrutLocalIettls() != null && item.getItemEstrutLocalIettls().size() > 0){
828 List lLocal = new ArrayList(item.getItemEstrutLocalIettls());
829 ItemEstrutLocalIettl local = (ItemEstrutLocalIettl) lLocal.get(0);
830 regiao = local.getLocalItemLit().getIdentificacaoLit();
831 }
832 }
833
834 tipoSituacao = iettRev.getSituacaoIettrev();
835
836 if(!"E".equals(tipoSituacao)){
837 geraXMLItemProduto(builder, item, nome, tipo, unidade, tipoSituacao, regiao, valor, "");
838 gerouProduto = true;
839 }
840 }
841 }
842 }
843 }
844 return gerouProduto;
845 }
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863 public void geraXMLItemProduto(XmlBuilder builder, ItemEstruturaIett item, String nome, String tipo,
864 String unidade, String tipoSituacao, String regiao, String valor, String justificativa){
865 String situacao = "";
866 if("I".equals(tipoSituacao)){
867 situacao = "(Incluído)";
868 }
869 if("A".equals(tipoSituacao)){
870 situacao = "(Alterado)";
871 }
872
873 this.incrementarTotalizadorEstrutura(item.getEstruturaEtt().getCodEtt(), "Quantidade de Produtos");
874
875 builder.addClosedNode("produto",
876 "nome=\"" + builder.normalize(nome) + "\" " +
877 "tipo=\"" + builder.normalize(tipo) + "\" " +
878 "unidade=\"" + builder.normalize(unidade) + "\" " +
879 "situacao=\"" + builder.normalize(situacao) + "\" " +
880 "tipoSituacao=\"" + builder.normalize(tipoSituacao) + "\" " +
881 "regiao=\"" + builder.normalize(regiao) + "\" " +
882 "valor=\"" + builder.normalize(valor) + "\" " +
883 "justificativa=\"" + builder.normalize(justificativa) + "\" " +
884 "tipoRelatorio=\"" + builder.normalize(tipoRelatorio) + "\"");
885 }
886
887
888
889
890
891
892
893
894
895
896
897
898
899 public String somaValoresMetasRevisadas(IettIndResulRevIettrr metaRevisao) throws ECARException{
900 List qtdesPrevistas = new ArrayList();
901
902 List exerciciosValidos = exercicioDao.listar(ExercicioExe.class, new String[]{"descricaoExe","desc"});
903 Iterator itExe = exerciciosValidos.iterator();
904 while(itExe.hasNext()){
905 ExercicioExe exe = (ExercicioExe) itExe.next();
906 if(exe.getDataInicialExe() != null && exe.getDataFinalExe() != null){
907 int exeAnoIni = Data.getAno(exe.getDataInicialExe());
908 int exeAnoFim = Data.getAno(exe.getDataFinalExe());
909
910
911 if(exeAnoIni >= Integer.parseInt(periodoIni) && exeAnoFim <= Integer.parseInt(periodoFim)){
912
913 boolean possuiExercicioNaRevisao = false;
914
915
916 if(metaRevisao.getItemEstFisicoRevIettfrs() != null && metaRevisao.getItemEstFisicoRevIettfrs().size() > 0){
917 Iterator itEstRev = metaRevisao.getItemEstFisicoRevIettfrs().iterator();
918 while(itEstRev.hasNext()){
919 ItemEstFisicoRevIettfr estRev = (ItemEstFisicoRevIettfr) itEstRev.next();
920 if(exe.equals(estRev.getExercicioExe()) && "S".equals(estRev.getIndAtivoIettfr())){
921 possuiExercicioNaRevisao = true;
922 IndResulExercicioBean indResulExeBean = new IndResulExercicioBean();
923 indResulExeBean.setCodExe(estRev.getExercicioExe().getCodExe());
924 indResulExeBean.setValor(estRev.getQtdPrevistaIettfr());
925
926 qtdesPrevistas.add(indResulExeBean);
927 break;
928 }
929 }
930 }
931
932 if(!possuiExercicioNaRevisao){
933
934 Iterator itEstItem = metaRevisao.getItemEstrtIndResulIettr().getItemEstrutFisicoIettfs().iterator();
935 while(itEstItem.hasNext()){
936 ItemEstrutFisicoIettf estItem = (ItemEstrutFisicoIettf) itEstItem.next();
937 if(exe.equals(estItem.getExercicioExe()) && "S".equals(estItem.getIndAtivoIettf())){
938 IndResulExercicioBean indResulExeBean = new IndResulExercicioBean();
939 indResulExeBean.setCodExe(estItem.getExercicioExe().getCodExe());
940 indResulExeBean.setValor(estItem.getQtdPrevistaIettf());
941
942 qtdesPrevistas.add(indResulExeBean);
943 break;
944 }
945 }
946 }
947
948 }
949 }
950 }
951
952
953 String retorno = "0";
954 String indAcumulavel = metaRevisao.getItemEstrtIndResulIettr().getIndAcumulavelIettr();
955 String indValorFinal = metaRevisao.getItemEstrtIndResulIettr().getIndValorFinalIettr();
956
957
958 double total = 0;
959
960 if ("S".equals(indAcumulavel)){
961 Iterator it = qtdesPrevistas.iterator();
962 while (it.hasNext()) {
963 IndResulExercicioBean valor = (IndResulExercicioBean) it.next();
964 total += valor.getValor().doubleValue();
965 }
966 retorno = Util.formataNumeroSemDecimal(total);
967 }else{
968
969
970
971
972
973
974
975
976 if("M".equals(indValorFinal)){
977 Iterator it = qtdesPrevistas.iterator();
978 double maior = 0;
979 while (it.hasNext()) {
980 IndResulExercicioBean valor = (IndResulExercicioBean) it.next();
981 if(valor.getValor().doubleValue() > maior){
982 maior = valor.getValor().doubleValue();
983 }
984 total = maior;
985 }
986 retorno = Util.formataNumeroSemDecimal(total);
987 }
988 else if("U".equals(indValorFinal)){
989 double ultimo = 0;
990 ExercicioExe ultimoExe = indResulDao.getMaiorExercicioIndicador(metaRevisao.getItemEstrtIndResulIettr());
991
992 Iterator it = qtdesPrevistas.iterator();
993 while (it.hasNext()) {
994 IndResulExercicioBean valor = (IndResulExercicioBean) it.next();
995 if(valor.getCodExe().equals(ultimoExe.getCodExe())){
996 ultimo = valor.getValor().doubleValue();
997 break;
998 }
999 }
1000 retorno = Util.formataNumeroSemDecimal(ultimo);
1001 }
1002 else if("N".equals(indValorFinal)){
1003 retorno = "Não se aplica";
1004 }
1005 }
1006
1007
1008 return retorno;
1009 }
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020 public ItemEstruturarevisaoIettrev getUltimaRevisaoIett(Set listaRevisoes){
1021 ItemEstruturarevisaoIettrev retorno = null;
1022 if(listaRevisoes != null && listaRevisoes.size() > 0){
1023 List revisoes = new ArrayList(listaRevisoes);
1024 Collections.sort(revisoes,
1025 new Comparator(){
1026 public int compare(Object o1, Object o2) {
1027 ItemEstruturarevisaoIettrev iett1 = (ItemEstruturarevisaoIettrev) o1;
1028 ItemEstruturarevisaoIettrev iett2 = (ItemEstruturarevisaoIettrev) o2;
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039 return iett1.getDataInclusaoIettrev().compareTo(iett2.getDataInclusaoIettrev());
1040 }
1041 }
1042 );
1043 ItemEstruturarevisaoIettrev ultimoIettRev = (ItemEstruturarevisaoIettrev) revisoes.get(revisoes.size() - 1);
1044 retorno = ultimoIettRev;
1045 }
1046
1047 return retorno;
1048 }
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059 public boolean verificarProgramaApresentaFilhos(ItemEstruturaIett item){
1060 boolean achou = false;
1061 List lTodos = new ArrayList(todosItens);
1062 Iterator it = lTodos.iterator();
1063 while(it.hasNext()){
1064 ItemEstruturaIett iett = (ItemEstruturaIett) it.next();
1065 if(iett.getItemEstruturaIett() != null && iett.getItemEstruturaIett().equals(item)){
1066 achou = true;
1067 break;
1068 }
1069 }
1070
1071
1072
1073
1074 return true;
1075 }
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088 public void incrementarFonteRecurso(Long idFonteRecurso, String label, double valor){
1089 if(!idsFontesRecursos.contains(idFonteRecurso)){
1090 FonteRecursosPPA fonteBean = new FonteRecursosPPA();
1091 fonteBean.setId(idFonteRecurso);
1092 fonteBean.setLabel(label);
1093 fonteBean.setValor(valor);
1094
1095 idsFontesRecursos.add(idFonteRecurso);
1096 fontesRecursosPPAs.add(fonteBean);
1097 }
1098 else {
1099 Iterator itFontesBean = fontesRecursosPPAs.iterator();
1100 while(itFontesBean.hasNext()){
1101 FonteRecursosPPA fonteBean = (FonteRecursosPPA) itFontesBean.next();
1102 if(fonteBean.getId().equals(idFonteRecurso)){
1103 fonteBean.somaValor(valor);
1104 break;
1105 }
1106 }
1107 }
1108 }
1109
1110
1111
1112
1113
1114
1115
1116
1117 public void limparIdsFontesRecursos(){
1118 idsFontesRecursos.clear();
1119 fontesRecursosPPAs.clear();
1120 }
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131 private void incrementarTotalizadorEstrutura(Long idEstrutura, String nomeEstrutura){
1132 if(!idsEstrutura.contains(idEstrutura)){
1133 TotalizadorRelatorios totalizador = new TotalizadorRelatorios();
1134 totalizador.setId(idEstrutura);
1135 totalizador.setEstrutura(nomeEstrutura);
1136 totalizador.setTotal(1);
1137
1138 idsEstrutura.add(idEstrutura);
1139 totalizadorEstrutura.add(totalizador);
1140 }
1141 else {
1142 Iterator itTotalizadores = totalizadorEstrutura.iterator();
1143 while(itTotalizadores.hasNext()){
1144 TotalizadorRelatorios totalizador = (TotalizadorRelatorios) itTotalizadores.next();
1145
1146 if(idEstrutura.equals(totalizador.getId())){
1147 totalizador.incrementeTotal();
1148 break;
1149 }
1150 }
1151 }
1152 }
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164 private void incrementarTotalizadorValor(Long idValor, String nomeValor, double valor){
1165 if(!idsValores.contains(idValor)){
1166 FonteRecursosPPA totalizador = new FonteRecursosPPA();
1167 totalizador.setId(idValor);
1168 totalizador.setLabel(nomeValor);
1169 totalizador.setValor(valor);
1170
1171 idsValores.add(idValor);
1172 totalizadorValores.add(totalizador);
1173 }
1174 else {
1175 Iterator itTotalizadores = totalizadorValores.iterator();
1176 while(itTotalizadores.hasNext()){
1177 FonteRecursosPPA totalizador = (FonteRecursosPPA) itTotalizadores.next();
1178 if(idValor.equals(totalizador.getId())){
1179 totalizador.somaValor(valor);
1180 break;
1181 }
1182 }
1183 }
1184 }
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195 public void geraXMLTotalizador(XmlBuilder builder) throws ECARException{
1196 try{
1197
1198 Collections.sort(totalizadorEstrutura,
1199 new Comparator(){
1200 public int compare(Object arg0, Object arg1) {
1201 TotalizadorRelatorios t1 = (TotalizadorRelatorios) arg0;
1202 TotalizadorRelatorios t2 = (TotalizadorRelatorios) arg1;
1203
1204 return t1.getId().compareTo(t2.getId());
1205 }
1206 });
1207
1208 int total = 0;
1209 builder.addNode("totalizadores");
1210 Iterator itTotalizadores = totalizadorEstrutura.iterator();
1211 while(itTotalizadores.hasNext()){
1212 TotalizadorRelatorios tr = (TotalizadorRelatorios) itTotalizadores.next();
1213 String nome = tr.getEstrutura();
1214 String valor = "" + tr.getTotal();
1215 total += tr.getTotal();
1216 builder.addClosedNode("totalizador",
1217 "nome=\"" + builder.normalize(nome) + "\"" +
1218 " valor=\"" + builder.normalize(valor) + "\"");
1219 }
1220 builder.addClosedNode("total",
1221 "nome=\"Total:\"" +
1222 " valor=\"" + builder.normalize(String.valueOf(total)) + "\"");
1223 builder.closeNode("totalizadores");
1224 } catch(Exception e){
1225 this.logger.error(e);
1226 throw new ECARException("Erro na criação do relatório: Totalizadores");
1227 }
1228 }
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239 public void geraXMLTotalizadorValores(XmlBuilder builder) throws ECARException{
1240 try{
1241
1242 builder.addNode("totalizadorValores");
1243
1244 Iterator itTotalizadores = totalizadorValores.iterator();
1245 while(itTotalizadores.hasNext()){
1246 FonteRecursosPPA tr = (FonteRecursosPPA) itTotalizadores.next();
1247 String nome = tr.getLabel();
1248 String valor = "R$ " + Util.formataMoeda(tr.getValor());
1249
1250
1251 builder.addClosedNode("totalizador",
1252 "nome=\"" + builder.normalize(nome) + "\"" +
1253 " valor=\"" + builder.normalize(valor) + "\"");
1254 }
1255
1256 builder.addClosedNode("totalizador",
1257 "nome=\"Total Geral dos Programas\"" +
1258 " valor=\"" + builder.normalize("R$ " + Util.formataMoeda(totalGeralProgramas)) + "\"");
1259
1260 builder.addClosedNode("totalizador",
1261 "nome=\"Total Geral das Ações\"" +
1262 " valor=\"" + builder.normalize("R$ " + Util.formataMoeda(totalGeralAcoes)) + "\"");
1263
1264 builder.closeNode("totalizadorValores");
1265 } catch(Exception e){
1266 this.logger.error(e);
1267 throw new ECARException("Erro na criação do relatório: TotalizadorValores");
1268 }
1269 }
1270 }