1
2
3
4 package ecar.dao;
5
6 import java.math.BigDecimal;
7 import java.util.ArrayList;
8 import java.util.Arrays;
9 import java.util.Calendar;
10 import java.util.Collection;
11 import java.util.Collections;
12 import java.util.Comparator;
13 import java.util.Date;
14 import java.util.Enumeration;
15 import java.util.GregorianCalendar;
16 import java.util.HashMap;
17 import java.util.HashSet;
18 import java.util.Iterator;
19 import java.util.List;
20 import java.util.Map;
21 import java.util.Set;
22
23 import javax.servlet.http.HttpServletRequest;
24
25 import org.apache.log4j.Logger;
26 import org.hibernate.HibernateException;
27 import org.hibernate.Query;
28 import org.hibernate.Transaction;
29
30 import comum.database.Dao;
31 import comum.util.Data;
32 import comum.util.Mensagem;
33 import comum.util.Pagina;
34 import comum.util.Util;
35
36 import ecar.bean.AtributoEstruturaListagemItens;
37 import ecar.bean.OrdenacaoTpfaEstrutura;
38 import ecar.email.AgendadorEmail;
39 import ecar.exception.ECARException;
40 import ecar.permissao.ValidaPermissao;
41 import ecar.pojo.AcompRealFisicoArf;
42 import ecar.pojo.AcompRefItemLimitesArli;
43 import ecar.pojo.AcompRefItemLimitesArliPK;
44 import ecar.pojo.AcompRefLimitesArl;
45 import ecar.pojo.AcompRefLimitesArlPK;
46 import ecar.pojo.AcompReferenciaAref;
47 import ecar.pojo.AcompReferenciaItemAri;
48 import ecar.pojo.AcompRelatorioArel;
49 import ecar.pojo.AreaAre;
50 import ecar.pojo.ConfigMailCfgm;
51 import ecar.pojo.ConfiguracaoCfg;
52 import ecar.pojo.Cor;
53 import ecar.pojo.EmpresaEmp;
54 import ecar.pojo.EstruturaEtt;
55 import ecar.pojo.ItemEstUsutpfuacIettutfa;
56 import ecar.pojo.ItemEstrtIndResulIettr;
57 import ecar.pojo.ItemEstrutFisicoIettf;
58 import ecar.pojo.ItemEstruturaIett;
59 import ecar.pojo.ItemEstruturaIettMin;
60 import ecar.pojo.ItemEstruturaSisAtributoIettSatb;
61 import ecar.pojo.ObjetoEstrutura;
62 import ecar.pojo.OrgaoOrg;
63 import ecar.pojo.PeriodicidadePrdc;
64 import ecar.pojo.SisAtributoSatb;
65 import ecar.pojo.SisGrupoAtributoSga;
66 import ecar.pojo.SituacaoSit;
67 import ecar.pojo.StatusRelatorioSrl;
68 import ecar.pojo.SubAreaSare;
69 import ecar.pojo.TfuncacompConfigmailTfacfgm;
70 import ecar.pojo.TfuncacompConfigmailTfacfgmPK;
71 import ecar.pojo.TipoAcompFuncAcompTafc;
72 import ecar.pojo.TipoAcompanhamentoTa;
73 import ecar.pojo.TipoFuncAcompTpfa;
74 import ecar.pojo.UnidadeOrcamentariaUO;
75 import ecar.pojo.UsuarioAtributoUsua;
76 import ecar.pojo.UsuarioUsu;
77 import ecar.servlet.grafico.bean.PosicaoBean;
78 import ecar.taglib.util.Input;
79 import ecar.util.Dominios;
80
81
82
83
84 public class AcompReferenciaItemDao extends Dao {
85
86 ValidaPermissao validaPermissao = new ValidaPermissao();
87 public static int STATUS_EM_EDICAO = 1;
88 public static int STATUS_LIBERADO = 2;
89
90 public static String RELATORIO_ORGAO = "ECAR-001A";
91 public static String RELATORIO_ORGAO_ESPECIFICO = "ECAR-001B";
92 public static String RELATORIO_SITUACAO = "ECAR-002A";
93 public static String RELATORIO_SITUACAO_ESPECIFICO = "ECAR-002B";
94 public static String RELATORIO_ESTRUTURA = "ECAR-001C";
95
96 public AcompReferenciaItemDao(HttpServletRequest request) {
97 super();
98 this.request = request;
99 }
100
101
102
103
104
105
106
107
108 @SuppressWarnings("unchecked")
109 public void salvarOuAlterarAcompReferenciaItens(List listAcompReferenciaAref, HttpServletRequest request, List listNiveis) throws ECARException {
110 Transaction tx = null;
111
112 try {
113 super.inicializarLogBean();
114
115 tx = session.beginTransaction();
116
117 AcompRealFisicoDao arfDao = new AcompRealFisicoDao(request);
118 ConfiguracaoDao configuracaoDao = new ConfiguracaoDao(request);
119 TipoAcompanhamentoDao tipoAcompanhamentoDao = new TipoAcompanhamentoDao(request);
120 AcompReferenciaDao acompReferenciaDao = new AcompReferenciaDao(request);
121
122 ArrayList objetos = new ArrayList();
123 AcompReferenciaAref acompanhamento = (AcompReferenciaAref) listAcompReferenciaAref.get(0);
124
125 ItemEstUsutpfuacDao itemEstUsutpfuacDao = new ItemEstUsutpfuacDao(request);
126 AcompRelatorioDao acompRelatorioDao = new AcompRelatorioDao(request);
127
128 UsuarioUsu usuario = (UsuarioUsu) new UsuarioDao(request).buscar(UsuarioUsu.class, Long.valueOf(Pagina.getParamStr(request, "codUsuario")));
129
130
131 ConfiguracaoCfg cfg = configuracaoDao.getConfiguracao();
132 ArrayList<SisAtributoSatb> listAtribMetasFisicasCfg = new ArrayList<SisAtributoSatb>();
133
134 TipoAcompanhamentoTa ta = (TipoAcompanhamentoTa) tipoAcompanhamentoDao.buscar(TipoAcompanhamentoTa.class, acompanhamento.getTipoAcompanhamentoTa().getCodTa());
135 if (cfg.getSisGrupoAtributoSgaByCodSgaGrAtrMetasFisicas() != null) {
136 ArrayList listSatb = new ArrayList(ta.getSisAtributoSatbs());
137
138 if (listSatb != null) {
139 for (Iterator itSatbs = listSatb.iterator(); itSatbs.hasNext();) {
140 SisAtributoSatb sisAtributoSatb = (SisAtributoSatb) itSatbs.next();
141 if (sisAtributoSatb.getSisGrupoAtributoSga().equals(cfg.getSisGrupoAtributoSgaByCodSgaGrAtrMetasFisicas())) {
142 listAtribMetasFisicasCfg.add(sisAtributoSatb);
143 }
144 }
145 }
146 }
147
148
149
150
151
152
153 List<ItemEstruturaIett> itensSelecionadosEmTela = new ArrayList<ItemEstruturaIett>();
154
155 String[] itemSelecao = request.getParameterValues("iett");
156 if (itemSelecao != null) {
157 for (int i = 0; i < itemSelecao.length; i++) {
158 ItemEstruturaIett item = (ItemEstruturaIett) buscar(ItemEstruturaIett.class, Long.valueOf(itemSelecao[i]));
159 itensSelecionadosEmTela.add(item);
160 }
161 }
162
163 List listaCompletaItens = adicionaDescendentesQuantidadePrevista(itensSelecionadosEmTela, acompanhamento);
164
165 for (Iterator itAref = listAcompReferenciaAref.iterator(); itAref.hasNext();) {
166 acompanhamento = (AcompReferenciaAref) itAref.next();
167
168
169
170
171
172
173
174
175 if (acompanhamento.getCodAref() != null && acompanhamento.getCodAref().longValue() > 0) {
176 AcompReferenciaAref acompAuxiliar = acompanhamento;
177 acompanhamento = (AcompReferenciaAref) this.buscar(AcompReferenciaAref.class, acompAuxiliar.getCodAref());
178 acompanhamento.setDataInicioAref(acompAuxiliar.getDataInicioAref());
179 acompanhamento.setDataLimiteAcompFisicoAref(acompAuxiliar.getDataLimiteAcompFisicoAref());
180 acompanhamento.setNomeAref(acompAuxiliar.getNomeAref());
181 acompanhamento.setAcompRefLimitesArls(acompAuxiliar.getAcompRefLimitesArls());
182 session.update(acompanhamento);
183 }
184 else {
185 session.save(acompanhamento);
186 }
187
188 objetos.add(acompanhamento);
189
190
191
192
193
194 List itensMonitoradosBancoDeDados = getListaItensAcompanhamento(acompanhamento);
195
196 Collection objetosParaSalvar = Util.diferenca(listaCompletaItens, itensMonitoradosBancoDeDados);
197 Collection objetosParaAlterar = Util.intersecao(listaCompletaItens, itensMonitoradosBancoDeDados);
198 Collection objetosParaExcluir = Util.diferenca(itensMonitoradosBancoDeDados, listaCompletaItens);
199
200
201
202
203
204 for (Iterator itLimites = acompanhamento.getAcompRefLimitesArls().iterator(); itLimites.hasNext();) {
205 AcompRefLimitesArl acompLimites = (AcompRefLimitesArl) itLimites.next();
206
207 if (acompLimites.getComp_id() != null) {
208 session.update(acompLimites);
209 }
210 else {
211 AcompRefLimitesArlPK pk = new AcompRefLimitesArlPK();
212 pk.setCodAref(acompLimites.getAcompReferenciaAref().getCodAref());
213 pk.setCodTpfa(acompLimites.getTipoFuncAcompTpfa().getCodTpfa());
214 acompLimites.setComp_id(pk);
215 session.save(acompLimites);
216 }
217 objetos.add(acompLimites);
218 }
219
220
221
222 for (Iterator itObjetosIncluidos = objetosParaSalvar.iterator(); itObjetosIncluidos.hasNext();) {
223 ItemEstruturaIett iett = (ItemEstruturaIett) itObjetosIncluidos.next();
224 AcompReferenciaItemAri acompReferenciaItem = criaNovoAcompReferenciaItemAri(acompanhamento, iett, request, itensSelecionadosEmTela, usuario);
225
226 session.save(acompReferenciaItem);
227 objetos.add(acompReferenciaItem);
228
229 for (Iterator itAcompReferenciaItemLimites = acompReferenciaItem.getAcompRefItemLimitesArlis().iterator(); itAcompReferenciaItemLimites.hasNext();) {
230 AcompRefItemLimitesArli limite = (AcompRefItemLimitesArli) itAcompReferenciaItemLimites.next();
231 setPKAcompReferenciaItemLimite(limite);
232 session.save(limite);
233 objetos.add(limite);
234 }
235
236
237
238 if (iett.getItemEstrtIndResulIettrs() != null && !iett.getItemEstrtIndResulIettrs().isEmpty()) {
239
240 boolean gravaARF = false;
241
242 if (listNiveis != null && listNiveis.size() > 0) {
243 if (iett.getItemEstruturaNivelIettns() != null && iett.getItemEstruturaNivelIettns().size() > 0) {
244 Iterator itNiveis = iett.getItemEstruturaNivelIettns().iterator();
245 while (itNiveis.hasNext() && !gravaARF) {
246 SisAtributoSatb nivel = (SisAtributoSatb) itNiveis.next();
247
248 if (listNiveis.contains(nivel)) {
249 gravaARF = true;
250 }
251
252 }
253 }
254 }
255 else {
256 gravaARF = true;
257 }
258
259 if (gravaARF) {
260
261 for (Iterator itIettir = iett.getItemEstrtIndResulIettrs().iterator(); itIettir.hasNext();) {
262 ItemEstrtIndResulIettr iettir = (ItemEstrtIndResulIettr) itIettir.next();
263
264
265 if (!listAtribMetasFisicasCfg.isEmpty()) {
266 if (iettir.getSisAtributoSatb() == null || !listAtribMetasFisicasCfg.contains(iettir.getSisAtributoSatb())) {
267
268
269 continue;
270 }
271 }
272
273
274
275 AcompRealFisicoArf arf = arfDao.buscarPorIettir(Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getMesAref()), Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getAnoAref()), iettir.getCodIettir());
276
277 if (arf == null) {
278 long mes = Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getMesAref()).longValue();
279 long ano = Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getAnoAref()).longValue();
280 AcompRealFisicoArf arfAnterior = arfDao.getArfAnterior(iettir, mes, ano);
281
282 if (arfAnterior != null) {
283 if (arfAnterior.getSituacaoSit() != null && "S".equals(arfAnterior.getSituacaoSit().getIndConcluidoSit())) {
284
285
286 continue;
287 }
288 }
289
290 arf = new AcompRealFisicoArf();
291
292 arf.setItemEstrtIndResulIettr(iettir);
293 arf.setDataInclusaoArf(Data.getDataAtual());
294 arf.setItemEstruturaIett(iett);
295 arf.setMesArf(Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getMesAref()));
296 arf.setAnoArf(Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getAnoAref()));
297
298 session.save(arf);
299 objetos.add(arf);
300 }
301 }
302 }
303 }
304
305
306 if (acompReferenciaItem.getAcompRelatorioArels() != null) {
307 for (Iterator itAcompRel = acompReferenciaItem.getAcompRelatorioArels().iterator(); itAcompRel.hasNext();) {
308 AcompRelatorioArel acompRel = (AcompRelatorioArel) itAcompRel.next();
309 session.save(acompRel);
310 objetos.add(acompRel);
311 }
312 }
313 }
314
315 for (Iterator itObjetosDeletados = objetosParaExcluir.iterator(); itObjetosDeletados.hasNext();) {
316 ItemEstruturaIett itemRemoverMonitoramento = (ItemEstruturaIett) itObjetosDeletados.next();
317 AcompReferenciaItemAri acompReferenciaItemAExcluir = this.getAcompReferenciaItemByItemEstruturaIett(acompanhamento, itemRemoverMonitoramento);
318 List filhos = new ArrayList();
319
320 filhos.addAll(acompReferenciaItemAExcluir.getAcompRelatorioArels());
321
322
323 StringBuilder query = new StringBuilder("select ARI from AcompReferenciaItemAri as ARI").append(" where ARI.itemEstruturaIett.codIett = :codIett").append(" and ARI.acompReferenciaAref.mesAref = :mes").append(" and ARI.acompReferenciaAref.anoAref = :ano").append(" and ARI.codAri<> :codAri").append(" and ARI.itemEstruturaIett.indAtivoIett = 'S'");
324
325 Query q = this.getSession().createQuery(query.toString());
326
327 q.setLong("codIett", acompReferenciaItemAExcluir.getItemEstruturaIett().getCodIett().longValue());
328 q.setString("mes", acompReferenciaItemAExcluir.getAcompReferenciaAref().getMesAref());
329 q.setString("ano", acompReferenciaItemAExcluir.getAcompReferenciaAref().getAnoAref());
330 q.setLong("codAri", acompReferenciaItemAExcluir.getCodAri().longValue());
331
332 List listaARI = q.list();
333
334 if (listaARI == null || listaARI.isEmpty()) {
335
336 List listArf = arfDao.buscarPorIett(acompReferenciaItemAExcluir.getItemEstruturaIett().getCodIett(), Long.valueOf(acompReferenciaItemAExcluir.getAcompReferenciaAref().getMesAref()), Long.valueOf(acompReferenciaItemAExcluir.getAcompReferenciaAref().getAnoAref()));
337
338 if (listArf != null && !listArf.isEmpty()) {
339
340 for (Iterator itListArf = listArf.iterator(); itListArf.hasNext();) {
341 filhos.add(itListArf.next());
342
343 }
344
345 }
346 }
347
348 for (Iterator itExcluirFilhos = filhos.iterator(); itExcluirFilhos.hasNext();) {
349 session.delete(itExcluirFilhos.next());
350 }
351
352 for (Iterator itExcluirFilhos = filhos.iterator(); itExcluirFilhos.hasNext();) {
353 objetos.add(itExcluirFilhos.next());
354
355 }
356
357 session.delete(acompReferenciaItemAExcluir);
358 objetos.add(acompReferenciaItemAExcluir);
359
360 }
361
362 Set setNovosArlis = new HashSet();
363 Set setNovosArels = new HashSet();
364 for (Iterator itObjetosAlterados = objetosParaAlterar.iterator(); itObjetosAlterados.hasNext();) {
365 ItemEstruturaIett itemAlterarMonitoramento = (ItemEstruturaIett) itObjetosAlterados.next();
366
367 AcompReferenciaItemAri acompReferenciaItemAlterar = this.getAcompReferenciaItemByItemEstruturaIett(acompanhamento, itemAlterarMonitoramento);
368 acompReferenciaItemAlterar.setDataUltManutAri(Data.getDataAtual());
369 acompReferenciaItemAlterar.setDataInicioAri(acompanhamento.getDataInicioAref());
370 acompReferenciaItemAlterar.setDataLimiteAcompFisicoAri(acompanhamento.getDataLimiteAcompFisicoAref());
371 acompReferenciaItemAlterar.setCodUsuUltManutAri(Long.valueOf(Pagina.getParamStr(request, "codUsuario")));
372
373 session.update(acompReferenciaItemAlterar);
374 objetos.add(acompReferenciaItemAlterar);
375
376 for (Iterator it = acompReferenciaItemAlterar.getAcompRefItemLimitesArlis().iterator(); it.hasNext();) {
377 AcompRefItemLimitesArli acompRefItemLimites = (AcompRefItemLimitesArli) it.next();
378
379 AcompRefLimitesArl limiteAcomp = acompReferenciaDao.getAcompRefLimitesByFuncaoAcomp(acompanhamento, acompRefItemLimites.getTipoFuncAcompTpfa());
380 acompRefItemLimites.setDataLimiteArli(limiteAcomp.getDataLimiteArl());
381 session.update(acompRefItemLimites);
382 objetos.add(acompRefItemLimites);
383 }
384
385
386
387
388
389
390 if ("S".equals(Pagina.getParamStr(request, "existeAriFaltandoParecerConfirma"))) {
391
392 if (itensSelecionadosEmTela.contains(itemAlterarMonitoramento)) {
393 Set arelsGravados = acompReferenciaItemAlterar.getAcompRelatorioArels();
394
395
396 Iterator it = itemEstUsutpfuacDao.getFuacEmitePosicaoOrderByFuncAcomp(itemAlterarMonitoramento).iterator();
397 while (it.hasNext()) {
398 TipoFuncAcompTpfa funcAcomp = ((ItemEstUsutpfuacIettutfa) it.next()).getTipoFuncAcompTpfa();
399
400
401
402 Iterator itTafc = ta.getTipoAcompFuncAcompTafcs().iterator();
403 while (itTafc.hasNext()) {
404 TipoAcompFuncAcompTafc tafc = (TipoAcompFuncAcompTafc) itTafc.next();
405
406 if (tafc.getTipoFuncAcompTpfa().equals(funcAcomp) && (tafc.getIndObrigatorio().equals("S") || tafc.getIndOpcional().equals("S"))) {
407 boolean existeArelParaFuncao = false;
408 Iterator itArelsGravados = arelsGravados.iterator();
409 while (itArelsGravados.hasNext() && !existeArelParaFuncao) {
410 AcompRelatorioArel arel = (AcompRelatorioArel) itArelsGravados.next();
411 if (arel.getTipoFuncAcompTpfa().equals(funcAcomp)) {
412 existeArelParaFuncao = true;
413 }
414 }
415
416 AcompRefLimitesArl arlAcomp = acompReferenciaDao.getAcompRefLimitesByFuncaoAcomp(acompanhamento, funcAcomp);
417
418 if (arlAcomp != null) {
419 AcompRefItemLimitesArli arliAri = acompReferenciaDao.getAcompRefItemLimitesArliByAriAndTpfa(acompReferenciaItemAlterar.getCodAri(), funcAcomp.getCodTpfa());
420 if (arliAri == null) {
421 AcompRefItemLimitesArli acompRefItemLimite = new AcompRefItemLimitesArli();
422 acompRefItemLimite.setDataLimiteArli(arlAcomp.getDataLimiteArl());
423 acompRefItemLimite.setAcompReferenciaItemAri(acompReferenciaItemAlterar);
424 acompRefItemLimite.setTipoFuncAcompTpfa(funcAcomp);
425 acompRefItemLimite.atribuirPKPai();
426 if (!setNovosArlis.contains(acompRefItemLimite)) {
427 setNovosArlis.add(acompRefItemLimite);
428 }
429 }
430 }
431
432 if (!existeArelParaFuncao) {
433 AcompRelatorioArel arelAux = acompRelatorioDao.criaNovoAcompRelatorio(acompReferenciaItemAlterar, usuario, funcAcomp);
434 if (!setNovosArels.contains(arelAux)) {
435 setNovosArels.add(arelAux);
436 }
437 }
438 }
439 }
440 }
441 }
442 }
443 }
444 Iterator it = setNovosArlis.iterator();
445 while (it.hasNext()) {
446 session.save(it.next());
447 }
448 it = setNovosArels.iterator();
449 while (it.hasNext()) {
450 session.save(it.next());
451 }
452
453 }
454
455 tx.commit();
456
457 if (super.logBean != null) {
458 super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
459 super.logBean.setOperacao("INC_ALT_EXC");
460
461 for (Iterator itObj = objetos.iterator(); itObj.hasNext();) {
462 super.logBean.setObj(itObj.next());
463 super.loggerAuditoria.info(logBean.toString());
464 }
465 }
466 } catch (HibernateException e) {
467 e.printStackTrace();
468 this.logger.error(e);
469 if (tx != null)
470 try {
471 tx.rollback();
472 } catch (HibernateException r) {
473 this.logger.error(r);
474 throw new ECARException("erro.hibernateException");
475 }
476 this.logger.error(e);
477 throw new ECARException("erro.hibernateException");
478 }
479
480 }
481
482
483
484
485
486
487 private List adicionaDescendentesQuantidadePrevista(List itensSelecionadosEmTela, AcompReferenciaAref aref) throws ECARException {
488 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(request);
489 TipoAcompanhamentoTa tipoAcompanhamento = (TipoAcompanhamentoTa) buscar(TipoAcompanhamentoTa.class, aref.getTipoAcompanhamentoTa().getCodTa());
490
491 String indMonitoramento = "";
492
493 if ("S".equals(tipoAcompanhamento.getIndMonitoramentoTa()) && "N".equals(tipoAcompanhamento.getIndNaoMonitoramentoTa())) {
494 indMonitoramento = "S";
495 }
496 else if ("N".equals(tipoAcompanhamento.getIndMonitoramentoTa()) && "S".equals(tipoAcompanhamento.getIndNaoMonitoramentoTa())) {
497 indMonitoramento = "N";
498 }
499
500 List listNivelPlanejamentoTipoAcomp = new ArrayList(tipoAcompanhamento.getSisAtributoSatbs());
501
502 List retorno = new ArrayList();
503 retorno.addAll(itensSelecionadosEmTela);
504
505 for (Iterator it = itensSelecionadosEmTela.iterator(); it.hasNext();) {
506 ItemEstruturaIett itemTela = (ItemEstruturaIett) it.next();
507 List descendentes = itemEstruturaDao.getDescendentes(itemTela, true);
508
509 for (Iterator itDescendentes = descendentes.iterator(); itDescendentes.hasNext();) {
510 ItemEstruturaIett itemDescendente = (ItemEstruturaIett) itDescendentes.next();
511 if (itemDescendente.getItemEstrtIndResulIettrs() != null && itemDescendente.getItemEstrtIndResulIettrs().size() > 0 && !retorno.contains(itemDescendente) && (itemDescendente.getSituacaoSit() == null || (!"S".equals(itemDescendente.getSituacaoSit().getIndConcluidoSit()) && !"S".equals(itemDescendente.getSituacaoSit().getIndSemAcompanhamentoSit())))) {
512
513
514 if (!"".equals(indMonitoramento)) {
515 if (!indMonitoramento.equals(itemDescendente.getIndMonitoramentoIett())) {
516
517 continue;
518 }
519 }
520
521
522 boolean nivelOk = false;
523
524 if (listNivelPlanejamentoTipoAcomp != null && listNivelPlanejamentoTipoAcomp.size() > 0) {
525 if (itemDescendente.getItemEstruturaNivelIettns() != null && itemDescendente.getItemEstruturaNivelIettns().size() > 0) {
526 Iterator itNiveis = itemDescendente.getItemEstruturaNivelIettns().iterator();
527 while (itNiveis.hasNext() && !nivelOk) {
528 SisAtributoSatb nivel = (SisAtributoSatb) itNiveis.next();
529
530 if (listNivelPlanejamentoTipoAcomp.contains(nivel)) {
531 nivelOk = true;
532 }
533
534 }
535 }
536 }
537 else {
538 nivelOk = true;
539 }
540
541 if (!nivelOk) {
542
543 continue;
544 }
545
546 retorno.add(itemDescendente);
547 }
548 }
549
550 }
551 return retorno;
552 }
553
554
555
556
557 private void setPKAcompReferenciaItemLimite(AcompRefItemLimitesArli limite) {
558 AcompRefItemLimitesArliPK pk = new AcompRefItemLimitesArliPK();
559 pk.setCodAri(limite.getAcompReferenciaItemAri().getCodAri());
560 pk.setCodTpfa(limite.getTipoFuncAcompTpfa().getCodTpfa());
561 limite.setComp_id(pk);
562 }
563
564
565
566
567
568
569
570
571 private AcompReferenciaItemAri criaNovoAcompReferenciaItemAri(AcompReferenciaAref acompanhamento, ItemEstruturaIett iett, HttpServletRequest request, List listaItensSelecionadosTela, UsuarioUsu usuario) throws ECARException {
572 TipoAcompanhamentoDao tipoAcompanhamentoDao = new TipoAcompanhamentoDao(null);
573 AcompRelatorioDao acompRelatorioDao = new AcompRelatorioDao(request);
574
575 TipoAcompanhamentoTa taTemp = (TipoAcompanhamentoTa) tipoAcompanhamentoDao.buscar(TipoAcompanhamentoTa.class, acompanhamento.getTipoAcompanhamentoTa().getCodTa());
576 AcompReferenciaItemAri acompReferenciaItem = new AcompReferenciaItemAri();
577
578 acompReferenciaItem.setItemEstruturaIett(iett);
579 acompReferenciaItem.setAcompReferenciaAref(acompanhamento);
580
581 acompReferenciaItem.setIndItemMonitoradosAri(acompanhamento.getTipoAcompanhamentoTa().getIndMonitoramentoTa());
582
583 acompReferenciaItem.setDataLimiteAcompFisicoAri(acompanhamento.getDataLimiteAcompFisicoAref());
584 acompReferenciaItem.setCodUsuincAri(usuario.getCodUsu());
585 acompReferenciaItem.setDataInclusaoAri(Data.getDataAtual());
586 acompReferenciaItem.setDataInicioAri(acompanhamento.getDataInicioAref());
587
588
589 acompReferenciaItem.setStatusRelatorioSrl((StatusRelatorioSrl) this.buscar(StatusRelatorioSrl.class, Long.valueOf(STATUS_EM_EDICAO)));
590
591
592
593 acompReferenciaItem.setAcompRefItemLimitesArlis(new HashSet());
594 acompReferenciaItem.setAcompRelatorioArels(new HashSet());
595
596 Iterator it = new ItemEstUsutpfuacDao(request).getFuacEmitePosicaoOrderByFuncAcomp(iett).iterator();
597 while (it.hasNext()) {
598 TipoFuncAcompTpfa funcAcomp = ((ItemEstUsutpfuacIettutfa) it.next()).getTipoFuncAcompTpfa();
599
600 AcompRefLimitesArl acompRefLimite = getAcompRefLimitesByAcompReferenciaTipoFuncAcomp(funcAcomp, acompanhamento);
601 if (acompRefLimite != null) {
602 AcompRefItemLimitesArli acompRefItemLimite = new AcompRefItemLimitesArli();
603 acompRefItemLimite.setAcompReferenciaItemAri(acompReferenciaItem);
604 acompRefItemLimite.setTipoFuncAcompTpfa(funcAcomp);
605 acompRefItemLimite.setDataLimiteArli(acompRefLimite.getDataLimiteArl());
606
607 acompReferenciaItem.getAcompRefItemLimitesArlis().add(acompRefItemLimite);
608 }
609
610
611 if (listaItensSelecionadosTela.contains(iett)) {
612
613
614
615
616 Iterator itTafc = taTemp.getTipoAcompFuncAcompTafcs().iterator();
617 while (itTafc.hasNext()) {
618 TipoAcompFuncAcompTafc tafc = (TipoAcompFuncAcompTafc) itTafc.next();
619
620 if (tafc.getTipoFuncAcompTpfa().equals(funcAcomp) && (tafc.getIndObrigatorio().equals("S") || tafc.getIndOpcional().equals("S"))) {
621
622
623 AcompRelatorioArel relatorio = acompRelatorioDao.criaNovoAcompRelatorio(acompReferenciaItem, usuario, funcAcomp);
624 if (relatorio != null) {
625 acompReferenciaItem.getAcompRelatorioArels().add(relatorio);
626 }
627 }
628 }
629
630 }
631 }
632
633 return acompReferenciaItem;
634
635 }
636
637
638
639
640
641
642
643 public List getListaItensAcompanhamento(AcompReferenciaAref acompanhamento) throws ECARException {
644
645 try {
646 StringBuilder query = new StringBuilder("select ari.itemEstruturaIett from AcompReferenciaItemAri ari").append(" where ari.acompReferenciaAref.codAref = ?").append(" and ari.itemEstruturaIett.indAtivoIett = 'S'");
647
648 Query q = session.createQuery(query.toString());
649
650 q.setLong(0, acompanhamento.getCodAref().longValue());
651
652 return q.list();
653 } catch (HibernateException e) {
654 this.logger.error(e);
655 throw new ECARException(e);
656 }
657 }
658
659
660
661
662
663
664
665 public void alterar(HttpServletRequest request) throws ECARException {
666 inicializarLogBean();
667 Transaction tx = null;
668
669 try {
670
671 tx = session.beginTransaction();
672
673 List objetosParaAlterar = new ArrayList();
674
675 AcompReferenciaItemAri acompReferenciaItem = (AcompReferenciaItemAri) this.buscar(AcompReferenciaItemAri.class, Long.valueOf(Pagina.getParamStr(request, "codAri")));
676
677 String novoCodSrl = Pagina.getParamStr(request, "codSrl");
678
679 if ("liberarRecuperar".equals(Pagina.getParamStr(request, "botaoClicado")) && novoCodSrl.equals(String.valueOf(acompReferenciaItem.getStatusRelatorioSrl().getCodSrl().intValue()))) {
680
681 if (String.valueOf(STATUS_LIBERADO).equals(novoCodSrl)) {
682 throw new ECARException("acompanhamento.dadosBasicos.liberar.jaEfetuado");
683 }
684 else {
685 throw new ECARException("acompanhamento.dadosBasicos.recuperar.jaEfetuado");
686 }
687 }
688
689
690 if (acompReferenciaItem.getStatusRelatorioSrl() == null || (acompReferenciaItem.getStatusRelatorioSrl() != null && acompReferenciaItem.getStatusRelatorioSrl().getCodSrl().intValue() == STATUS_EM_EDICAO)) {
691
692 acompReferenciaItem.setDataLimiteAcompFisicoAri(Pagina.getParamDataBanco(request, "dataLimiteAcompFisico"));
693 acompReferenciaItem.setCodUsuUltManutAri(Long.valueOf(Pagina.getParamStr(request, "codUsuario")));
694 acompReferenciaItem.setDataUltManutAri(Data.getDataAtual());
695 acompReferenciaItem.setDataInicioAri(Pagina.getParamDataBanco(request, "dataInicioAri"));
696 acompReferenciaItem.setStatusRelatorioSrl((StatusRelatorioSrl) this.buscar(StatusRelatorioSrl.class, Long.valueOf(Pagina.getParamStr(request, "codSrl"))));
697
698 objetosParaAlterar.add(acompReferenciaItem);
699
700 Iterator it = acompReferenciaItem.getAcompRefItemLimitesArlis().iterator();
701 while (it.hasNext()) {
702 AcompRefItemLimitesArli limite = (AcompRefItemLimitesArli) it.next();
703 limite.setDataLimiteArli(Pagina.getParamDataBanco(request, "dataLimite" + limite.getTipoFuncAcompTpfa().getCodTpfa()));
704 objetosParaAlterar.add(limite);
705 }
706
707 }
708 else {
709
710 acompReferenciaItem.setCodUsuUltManutAri(Long.valueOf(Pagina.getParamStr(request, "codUsuario")));
711 acompReferenciaItem.setDataUltManutAri(Data.getDataAtual());
712 acompReferenciaItem.setStatusRelatorioSrl((StatusRelatorioSrl) this.buscar(StatusRelatorioSrl.class, Long.valueOf(Pagina.getParamStr(request, "codSrl"))));
713 objetosParaAlterar.add(acompReferenciaItem);
714 }
715
716
717
718
719
720 List descendentes = new ItemEstruturaDao(request).getDescendentes(acompReferenciaItem.getItemEstruturaIett(), true);
721
722 for (Iterator it = descendentes.iterator(); it.hasNext();) {
723 ItemEstruturaIett item = (ItemEstruturaIett) it.next();
724 AcompReferenciaItemAri acompanhamentoFilho = this.getAcompReferenciaItemByItemEstruturaIett(acompReferenciaItem.getAcompReferenciaAref(), item);
725
726 if (acompanhamentoFilho != null) {
727 acompanhamentoFilho.setDataLimiteAcompFisicoAri(Pagina.getParamDataBanco(request, "dataLimiteAcompFisico"));
728 acompanhamentoFilho.setCodUsuUltManutAri(Long.valueOf(Pagina.getParamStr(request, "codUsuario")));
729 acompanhamentoFilho.setDataUltManutAri(Data.getDataAtual());
730 acompanhamentoFilho.setDataInicioAri(Pagina.getParamDataBanco(request, "dataInicioAri"));
731 Iterator itDatasFilho = acompanhamentoFilho.getAcompRefItemLimitesArlis().iterator();
732 while (itDatasFilho.hasNext()) {
733 AcompRefItemLimitesArli limite = (AcompRefItemLimitesArli) itDatasFilho.next();
734 if (!"".equals(Pagina.getParamStr(request, "dataLimite" + limite.getTipoFuncAcompTpfa().getCodTpfa()))) {
735 limite.setDataLimiteArli(Pagina.getParamDataBanco(request, "dataLimite" + limite.getTipoFuncAcompTpfa().getCodTpfa()));
736 objetosParaAlterar.add(limite);
737 }
738 }
739 objetosParaAlterar.add(acompanhamentoFilho);
740 }
741 }
742
743 Iterator itAlt = objetosParaAlterar.iterator();
744 while (itAlt.hasNext()) {
745 session.update(itAlt.next());
746 }
747
748 tx.commit();
749
750 if (logBean != null) {
751 Iterator it = objetosParaAlterar.iterator();
752 logBean.setCodigoTransacao(Data.getHoraAtual(false));
753 logBean.setOperacao("ALT");
754 while (it.hasNext()) {
755 logBean.setObj(it.next());
756 loggerAuditoria.info(logBean.toString());
757 }
758 }
759 } catch (HibernateException e) {
760 if (tx != null)
761 try {
762 tx.rollback();
763 } catch (HibernateException r) {
764 this.logger.error(r);
765 throw new ECARException("erro.hibernateException");
766 }
767 this.logger.error(e);
768 throw new ECARException("erro.hibernateException");
769 }
770
771 }
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786 public boolean liberarAcompanhamentos(Set acompRefItens, UsuarioUsu usuarioLogado, boolean enviarEmail, ConfigMailCfgm configMailCfgm) throws ECARException {
787 boolean retorno = false;
788 if (acompRefItens != null && !acompRefItens.isEmpty()) {
789 StatusRelatorioSrl statusLiberado = (StatusRelatorioSrl) this.buscar(StatusRelatorioSrl.class, Long.valueOf(STATUS_LIBERADO));
790 TfuncacompConfigmailTfacfgmDAO tfuncacompConfigmailTfacfgmDAO = new TfuncacompConfigmailTfacfgmDAO();
791 UsuarioDao usuDao = new UsuarioDao();
792 EmpresaDao empDAO = new EmpresaDao(request);
793 List listArisAlterados = new ArrayList();
794
795 Transaction tx = null;
796
797 try {
798
799 tx = session.beginTransaction();
800
801 for (Iterator it = acompRefItens.iterator(); it.hasNext();) {
802 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) it.next();
803 if (ari.getStatusRelatorioSrl() == null || (ari.getStatusRelatorioSrl() != null && ari.getStatusRelatorioSrl().getCodSrl().intValue() == STATUS_EM_EDICAO)) {
804 ari.setDataUltManutAri(Data.getDataAtual());
805 ari.setCodUsuUltManutAri(usuarioLogado.getCodUsu());
806 ari.setStatusRelatorioSrl(statusLiberado);
807
808 listArisAlterados.add(ari);
809
810 session.update(ari);
811 }
812 }
813
814 tx.commit();
815
816 if (enviarEmail) {
817
818 for (Iterator itList = listArisAlterados.iterator(); itList.hasNext();) {
819 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) itList.next();
820
821 List listUtfas = new ArrayList(ari.getItemEstruturaIett().getItemEstUsutpfuacIettutfas());
822 for (Iterator itUtfa = listUtfas.iterator(); itUtfa.hasNext();) {
823
824 ItemEstUsutpfuacIettutfa itemEstUsutpfacIetutfa = (ItemEstUsutpfuacIettutfa) itUtfa.next();
825
826 TfuncacompConfigmailTfacfgmPK tfcfgmPK = new TfuncacompConfigmailTfacfgmPK();
827 tfcfgmPK.setConfigMailCfgm(configMailCfgm);
828 tfcfgmPK.setTipoFuncAcompTpfa(itemEstUsutpfacIetutfa.getTipoFuncAcompTpfa());
829
830 TfuncacompConfigmailTfacfgm tfcfm = (TfuncacompConfigmailTfacfgm) tfuncacompConfigmailTfacfgmDAO.buscar(TfuncacompConfigmailTfacfgm.class, tfcfgmPK);
831
832 if ("S".equals(tfcfm.getEnviaMailTfacfgm())) {
833
834
835
836
837 List usuarios = new ArrayList();
838 if (itemEstUsutpfacIetutfa.getUsuarioUsu() != null) {
839 usuarios.add((UsuarioUsu) usuDao.buscar(UsuarioUsu.class, itemEstUsutpfacIetutfa.getUsuarioUsu().getCodUsu()));
840 }
841 else if (itemEstUsutpfacIetutfa.getSisAtributoSatb() != null) {
842 usuarios.addAll(usuDao.getUsuariosBySisAtributoSatb(itemEstUsutpfacIetutfa.getSisAtributoSatb()));
843 }
844
845 Iterator itUsu = usuarios.iterator();
846
847 while (itUsu.hasNext()) {
848
849 UsuarioUsu usu = (UsuarioUsu) itUsu.next();
850
851
852 if (usu.equals(usuarioLogado)) {
853 continue;
854 }
855
856 Long codIett = Long.valueOf(0);
857 String textoMail = "";
858 String assunto = "";
859 String remetente = "";
860
861 if (configMailCfgm.getTextosSiteMail() != null) {
862 textoMail = configMailCfgm.getTextosSiteMail().getTextoTxts();
863 assunto = configMailCfgm.getTextosSiteMail().getDescricaoUsoTxts();
864 remetente = configMailCfgm.getTextosSiteMail().getEmailResponsavelTxts();
865 }
866
867
868
869 if ("".equals(remetente) || remetente == null) {
870 List listEmpresa = new ArrayList();
871 EmpresaEmp emp = null;
872
873 listEmpresa = empDAO.listar(EmpresaEmp.class, null);
874
875 for (Iterator itEmp = listEmpresa.iterator(); itEmp.hasNext();) {
876 emp = (EmpresaEmp) itEmp.next();
877 }
878
879 remetente = emp.getEmailContatoEmp();
880 }
881
882 if (ari.getItemEstruturaIett() != null)
883 codIett = ari.getItemEstruturaIett().getCodIett();
884
885 AgendadorEmail ae = new AgendadorEmail();
886
887 String descricaoEvento = null;
888 String html = null;
889
890 descricaoEvento = "Liberação/Recuperação de Acompanhamento";
891 String labelQuemAlterou = AgendadorEmail.LABEL_WHO_CHANGE_LIBERACAO;
892 html = ae.montaEmail(textoMail, usu.getNomeUsu(), usuarioLogado.getNomeUsuSent(), codIett, descricaoEvento, null, null, labelQuemAlterou, ari.getAcompReferenciaAref().getTipoAcompanhamentoTa().getDescricaoTa()).toString();
893 ae.enviarEmail(assunto, remetente, html, usu.getEmail1UsuSent(), "", "", usu);
894 }
895 }
896 }
897 }
898 }
899
900 retorno = true;
901 } catch (HibernateException e) {
902 if (tx != null)
903 try {
904 tx.rollback();
905 } catch (HibernateException r) {
906 this.logger.error(r);
907 throw new ECARException("erro.hibernateException");
908 }
909 this.logger.error(e);
910 throw new ECARException("erro.hibernateException");
911 }
912 }
913 return retorno;
914 }
915
916
917
918
919
920
921
922
923 public boolean verificarAcompanhamentoEmEdicao(AcompReferenciaAref aref) throws ECARException {
924 if (aref.getAcompReferenciaItemAris() != null && !aref.getAcompReferenciaItemAris().isEmpty()) {
925 for (Iterator it = aref.getAcompReferenciaItemAris().iterator(); it.hasNext();) {
926 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) it.next();
927
928
929 if (ari.getStatusRelatorioSrl() == null || (ari.getStatusRelatorioSrl() != null && ari.getStatusRelatorioSrl().getCodSrl().intValue() == STATUS_EM_EDICAO)) {
930 return true;
931 }
932 }
933
934 }
935 return false;
936 }
937
938
939
940
941
942
943
944
945
946 public AcompReferenciaItemAri getAcompReferenciaItemByItemEstruturaIett(AcompReferenciaAref acompanhamento, ItemEstruturaIett item) throws ECARException {
947 try {
948 if (acompanhamento.getCodAref() != null) {
949 StringBuilder query = new StringBuilder("select ari from AcompReferenciaItemAri ari").append(" where ari.itemEstruturaIett.codIett = :codIett").append(" and ari.acompReferenciaAref.codAref = :codAref").append(" and ari.itemEstruturaIett.indAtivoIett = 'S'");
950
951 Query q = this.getSession().createQuery(query.toString());
952 q.setLong("codIett", item.getCodIett().longValue());
953 q.setLong("codAref", acompanhamento.getCodAref().longValue());
954 List retorno = q.list();
955
956 if (retorno == null || retorno.isEmpty()) {
957 return null;
958 }
959 else {
960 return (AcompReferenciaItemAri) retorno.get(0);
961 }
962 }
963 else {
964 return null;
965 }
966 } catch (HibernateException e) {
967 this.logger.error(e);
968 throw new ECARException(e);
969 }
970 }
971
972
973
974
975
976
977
978
979
980 public AcompRefLimitesArl getAcompRefLimitesByAcompReferenciaTipoFuncAcomp(TipoFuncAcompTpfa funcAcomp, AcompReferenciaAref acompanhamento) throws ECARException {
981 AcompRefLimitesArlPK pk = new AcompRefLimitesArlPK();
982 pk.setCodAref(acompanhamento.getCodAref());
983 pk.setCodTpfa(funcAcomp.getCodTpfa());
984 try {
985 AcompRefLimitesArl acomp = (AcompRefLimitesArl) this.buscar(AcompRefLimitesArl.class, pk);
986 return acomp;
987 } catch (ECARException e) {
988
989 return null;
990 }
991
992 }
993
994
995
996
997
998
999
1000
1001
1002 public AcompRefItemLimitesArli getAcompRefItemLimitesByAcompReferenciaItemTipoFuncAcomp(TipoFuncAcompTpfa funcAcomp, AcompReferenciaItemAri acompanhamento) throws ECARException {
1003 AcompRefItemLimitesArliPK pk = new AcompRefItemLimitesArliPK();
1004 pk.setCodAri(acompanhamento.getCodAri());
1005 pk.setCodTpfa(funcAcomp.getCodTpfa());
1006 try {
1007 AcompRefItemLimitesArli acomp = (AcompRefItemLimitesArli) this.buscar(AcompRefItemLimitesArli.class, pk);
1008 return acomp;
1009 } catch (ECARException e) {
1010 this.logger.error(e);
1011 return null;
1012 }
1013
1014 }
1015
1016
1017
1018
1019
1020
1021
1022
1023 public List getTipoFuncAcompByAcompRefrenciaItem(AcompReferenciaItemAri acompReferenciaItem) throws ECARException {
1024 List retorno = new ArrayList();
1025 Iterator it = acompReferenciaItem.getAcompRefItemLimitesArlis().iterator();
1026 List funcoesEmitemPosicao = new TipoFuncAcompDao(request).getTipoFuncAcompEmitePosicao();
1027 List funcoesItem = new ArrayList();
1028 while (it.hasNext()) {
1029 TipoFuncAcompTpfa tipoFuncaoAcomp = ((AcompRefItemLimitesArli) it.next()).getTipoFuncAcompTpfa();
1030 funcoesItem.add(tipoFuncaoAcomp);
1031 }
1032
1033 for (Iterator itFuncoesEmitemPosicao = funcoesEmitemPosicao.iterator(); itFuncoesEmitemPosicao.hasNext();) {
1034 TipoFuncAcompTpfa funcaoEmitePosicao = (TipoFuncAcompTpfa) itFuncoesEmitemPosicao.next();
1035 if (funcoesItem.contains(funcaoEmitePosicao))
1036 retorno.add(funcaoEmitePosicao);
1037 }
1038
1039 return (List) new TipoFuncAcompDao(null).ordenarTpfaBySequencia(retorno, acompReferenciaItem.getItemEstruturaIett().getEstruturaEtt());
1040 }
1041
1042
1043
1044
1045
1046
1047
1048 public List getAcompRefItemLimitesArliByAcompRefrenciaItem(AcompReferenciaItemAri acompReferenciaItem) throws ECARException {
1049 List retorno = new ArrayList();
1050
1051 TipoFuncAcompDao tipoFuncAcompDao = new TipoFuncAcompDao(request);
1052 List funcoesEmitemPosicao = tipoFuncAcompDao.ordenarTpfaBySequencia(tipoFuncAcompDao.getTipoFuncAcompEmitePosicao(), acompReferenciaItem.getItemEstruturaIett().getEstruturaEtt());
1053 List funcoesItem = new ArrayList();
1054 List limites = new ArrayList();
1055
1056 for (Iterator it = acompReferenciaItem.getAcompRefItemLimitesArlis().iterator(); it.hasNext();) {
1057 AcompRefItemLimitesArli limite = (AcompRefItemLimitesArli) it.next();
1058 TipoFuncAcompTpfa tipoFuncaoAcomp = limite.getTipoFuncAcompTpfa();
1059 funcoesItem.add(tipoFuncaoAcomp);
1060 limites.add(limite);
1061 }
1062 for (Iterator itFuncoesEmitemPosicao = funcoesEmitemPosicao.iterator(); itFuncoesEmitemPosicao.hasNext();) {
1063 TipoFuncAcompTpfa funcaoEmitePosicao = (TipoFuncAcompTpfa) itFuncoesEmitemPosicao.next();
1064 if (funcoesItem.contains(funcaoEmitePosicao)) {
1065 retorno.add(limites.get(funcoesItem.indexOf(funcaoEmitePosicao)));
1066 }
1067 }
1068 return retorno;
1069 }
1070
1071
1072
1073
1074
1075
1076
1077
1078 public String getMensagemAlertLiberarAcompanhamento(AcompReferenciaItemAri acompReferenciaItem) throws ECARException {
1079 String msg = "";
1080
1081 for (Iterator it = getAcompRefItemLimitesArliByAcompRefrenciaItem(acompReferenciaItem).iterator(); it.hasNext();) {
1082 AcompRefItemLimitesArli limite = (AcompRefItemLimitesArli) it.next();
1083 boolean encontrou = false;
1084
1085 for (Iterator itAcompRelatorio = acompReferenciaItem.getAcompRelatorioArels().iterator(); itAcompRelatorio.hasNext();) {
1086 AcompRelatorioArel acompRelatorio = (AcompRelatorioArel) itAcompRelatorio.next();
1087 if (acompRelatorio.getTipoFuncAcompTpfa().equals(limite.getTipoFuncAcompTpfa())) {
1088 if ("N".equals(acompRelatorio.getIndLiberadoArel())) {
1089 if (!"".equals(msg))
1090 msg += ", ";
1091 msg += limite.getTipoFuncAcompTpfa().getLabelPosicaoTpfa();
1092 encontrou = true;
1093 }
1094 else {
1095 if ("S".equals(acompRelatorio.getIndLiberadoArel()))
1096 encontrou = true;
1097 }
1098 }
1099 }
1100 if (!encontrou) {
1101 if (!"".equals(""))
1102 msg += ", ";
1103 msg += limite.getTipoFuncAcompTpfa().getLabelPosicaoTpfa();
1104 }
1105
1106 }
1107 if (!"".equals(msg))
1108 msg += " não foi liberado. Concluir este acompanhamento? ";
1109 return msg;
1110 }
1111
1112
1113
1114
1115
1116
1117
1118 public boolean verificaAcompanhamentoItemMes(ItemEstruturaIett item, AcompReferenciaAref acompanhamento) {
1119
1120 Date dataAtual = new Date();
1121
1122 int numMeses = Data.getGregorianCalendar(dataAtual).getMaximum(Calendar.MONTH) + 1;
1123
1124
1125 int mesRef = Integer.parseInt(acompanhamento.getMesAref());
1126
1127 if (item.getPeriodicidadePrdc() == null || item.getDataInicioIett() == null) {
1128 return false;
1129 }
1130
1131
1132 int periodicidade = item.getPeriodicidadePrdc().getNumMesesPrdc().intValue();
1133
1134 int mesInicioItem = Data.getGregorianCalendar(item.getDataInicioIett()).get(Calendar.MONTH) + 1;
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145 boolean ehMesPeriodicidade = false;
1146 int qtdPeriodos = numMeses / periodicidade + (numMeses % periodicidade == 0 ? 0 : 1);
1147 int mesInicioIett = mesInicioItem;
1148 for (int p = 0; p < qtdPeriodos && !ehMesPeriodicidade; p++, mesInicioIett = (mesInicioIett + periodicidade) % numMeses) {
1149 if (mesRef == mesInicioIett)
1150 ehMesPeriodicidade = true;
1151
1152 }
1153 return ehMesPeriodicidade;
1154 }
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180 public boolean verificaItemMesAno(ItemEstruturaIett item, AcompReferenciaAref acompReferencia) throws HibernateException, ECARException {
1181 StringBuilder select = new StringBuilder("select acompRef from AcompReferenciaAref as acompRef").append(" where acompRef.anoAref = :ano").append(" and acompRef.mesAref = :mes");
1182
1183 Query q = this.getSession().createQuery(select.toString());
1184
1185 q.setString("ano", acompReferencia.getAnoAref());
1186 q.setString("mes", acompReferencia.getMesAref());
1187
1188 List listaAcompRef = q.list();
1189
1190 if (listaAcompRef.size() <= 0) {
1191
1192 return false;
1193 }
1194 else {
1195 AcompReferenciaItemAri acompRefItem = new AcompReferenciaItemAri();
1196
1197
1198 if (acompReferencia.getCodAref() != null) {
1199 acompRefItem = this.getAcompReferenciaItemByItemEstruturaIett(acompReferencia, item);
1200 }
1201 else {
1202 acompRefItem = null;
1203 }
1204
1205 for (Iterator it = listaAcompRef.iterator(); it.hasNext();) {
1206 AcompReferenciaAref acompReferenciaLista = (AcompReferenciaAref) it.next();
1207 select = new StringBuilder("select acompRefItem from AcompReferenciaItemAri as acompRefItem ").append(" join acompRefItem.acompReferenciaAref as acompRef").append(" join acompRefItem.itemEstruturaIett as item").append(" where item.codIett = :codIett").append(" and item.indAtivoIett = 'S'").append(" and acompRef.codAref = :codAref");
1208
1209 q = this.getSession().createQuery(select.toString());
1210
1211 q.setLong("codIett", item.getCodIett().longValue());
1212 q.setLong("codAref", acompReferenciaLista.getCodAref().longValue());
1213
1214 List listaAcompRefItem = q.list();
1215
1216 if (listaAcompRefItem.size() > 0) {
1217 if (listaAcompRefItem.size() == 1) {
1218
1219 if (!listaAcompRefItem.contains(acompRefItem)) {
1220 return true;
1221 }
1222 }
1223 else {
1224
1225 return true;
1226 }
1227 }
1228 }
1229 }
1230
1231 return false;
1232 }
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242 public boolean isAcompanhamentoAlterado(AcompReferenciaAref acompanhamento, ItemEstruturaIett item) throws ECARException {
1243 try {
1244 AcompReferenciaItemAri acompReferenciaItem = getAcompReferenciaItemByItemEstruturaIett(acompanhamento, item);
1245
1246 if (acompReferenciaItem != null) {
1247 StringBuilder query = new StringBuilder("select ARF from AcompRealFisicoArf as ARF").append(" where ARF.qtdRealizadaArf is not null ").append(" and ARF.itemEstruturaIett.codIett = :codIett").append(" and ARF.itemEstruturaIett.indAtivoIett = 'S'").append(" and ARF.mesArf = :mes").append(" and ARF.anoArf = :ano");
1248
1249 Query q = this.getSession().createQuery(query.toString());
1250
1251 q.setLong("codIett", acompReferenciaItem.getItemEstruturaIett().getCodIett().longValue());
1252 q.setLong("mes", Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getMesAref()).longValue());
1253 q.setLong("ano", Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getAnoAref()).longValue());
1254
1255 List listArf = q.list();
1256
1257 if (listArf != null && listArf.size() > 0) {
1258 return true;
1259 }
1260 else {
1261 if (this.session.createFilter(acompReferenciaItem.getAcompRelatorioArels(), "where this.dataUltManutArel is not null").list().size() > 0) {
1262 return true;
1263 }
1264 }
1265 }
1266
1267 return false;
1268
1269 } catch (HibernateException e) {
1270 this.logger.error(e);
1271 throw new ECARException(e);
1272 }
1273 }
1274
1275
1276
1277
1278
1279
1280
1281
1282 public List getAcompRealFisicoArfsComQtdNaoInformada(AcompReferenciaItemAri acompReferenciaItem) throws ECARException, HibernateException {
1283 try {
1284 StringBuilder query = new StringBuilder("select ARF from AcompRealFisicoArf as ARF").append(" where ARF.qtdRealizadaArf is null and ARF.situacaoSit is null").append(" and ARF.itemEstruturaIett.codIett = :codIett").append(" and ARF.itemEstruturaIett.indAtivoIett = 'S'").append(" and ARF.mesArf = :mes").append(" and ARF.anoArf = :ano");
1285
1286 Query q = this.getSession().createQuery(query.toString());
1287
1288 q.setLong("codIett", acompReferenciaItem.getItemEstruturaIett().getCodIett().longValue());
1289 q.setLong("mes", Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getMesAref()).longValue());
1290 q.setLong("ano", Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getAnoAref()).longValue());
1291
1292 return q.list();
1293 } catch (Exception e) {
1294 throw new ECARException(e);
1295 }
1296 }
1297
1298
1299
1300
1301
1302
1303
1304
1305 public List getNovosIndicadores(AcompReferenciaItemAri acompReferenciaItem) throws Exception {
1306 AcompRealFisicoArf acompRealFisico = new AcompRealFisicoArf();
1307
1308 List retorno = new ArrayList();
1309 List lista = new ArrayList();
1310 List listaIndAcompRealFisico = new ArrayList();
1311 List listaIndicadores = new ArrayList();
1312
1313 AcompRealFisicoDao arfDao = new AcompRealFisicoDao(null);
1314
1315
1316
1317
1318 List listArf = arfDao.getIndResulByAcompRefItemBySituacao(acompReferenciaItem, Dominios.TODOS, false);
1319
1320 lista.addAll(listArf);
1321
1322 for (Iterator it = lista.iterator(); it.hasNext();) {
1323 acompRealFisico = (AcompRealFisicoArf) it.next();
1324
1325 int mesAref = Integer.valueOf(acompReferenciaItem.getAcompReferenciaAref().getMesAref()).intValue();
1326 int anoAref = Integer.valueOf(acompReferenciaItem.getAcompReferenciaAref().getAnoAref()).intValue();
1327 int mesArf = Integer.valueOf(acompRealFisico.getMesArf().toString()).intValue();
1328 int anoArf = Integer.valueOf(acompRealFisico.getAnoArf().toString()).intValue();
1329
1330 if (anoArf == anoAref && mesArf == mesAref) {
1331 listaIndAcompRealFisico.add(acompRealFisico.getItemEstrtIndResulIettr());
1332 }
1333 else {
1334 if (acompRealFisico.getSituacaoSit() != null && "S".equals(acompRealFisico.getSituacaoSit().getIndConcluidoSit())) {
1335 listaIndAcompRealFisico.add(acompRealFisico.getItemEstrtIndResulIettr());
1336 }
1337 }
1338 }
1339
1340 StringBuilder select = new StringBuilder("select indResul from ItemEstrtIndResulIettr as indResul").append(" where indResul.itemEstruturaIett.codIett = :codIett").append(" and indResul.itemEstruturaIett.indAtivoIett = 'S'");
1341
1342 Query q = this.getSession().createQuery(select.toString());
1343
1344 q.setLong("codIett", acompReferenciaItem.getItemEstruturaIett().getCodIett().longValue());
1345
1346 listaIndicadores = q.list();
1347
1348
1349 retorno.addAll(Util.diferenca(listaIndicadores, listaIndAcompRealFisico));
1350
1351 return retorno;
1352 }
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364 public void verificaEditarAcompRealFisico(UsuarioUsu usuario, AcompReferenciaItemAri acompReferenciaItem) throws ECARException {
1365
1366 if (!new ItemEstUsutpfuacDao(request).getFuncaoAcompInfAndamento(usuario, acompReferenciaItem.getItemEstruturaIett()))
1367 throw new ECARException(new Mensagem(null).getMensagem("acompanhamento.realizadoFisico.naoEditar.usuarioSemPermissao"));
1368
1369
1370 Calendar dataAtual = Calendar.getInstance();
1371
1372 dataAtual.clear(Calendar.HOUR);
1373 dataAtual.clear(Calendar.HOUR_OF_DAY);
1374 dataAtual.clear(Calendar.MINUTE);
1375 dataAtual.clear(Calendar.SECOND);
1376 dataAtual.clear(Calendar.MILLISECOND);
1377 dataAtual.clear(Calendar.AM_PM);
1378
1379 Calendar dataLimite = Calendar.getInstance();
1380 dataLimite.setTime(acompReferenciaItem.getDataLimiteAcompFisicoAri());
1381
1382 dataLimite.clear(Calendar.HOUR);
1383 dataLimite.clear(Calendar.HOUR_OF_DAY);
1384 dataLimite.clear(Calendar.MINUTE);
1385 dataLimite.clear(Calendar.SECOND);
1386 dataLimite.clear(Calendar.MILLISECOND);
1387 dataLimite.clear(Calendar.AM_PM);
1388
1389
1390 if (dataAtual.compareTo(dataLimite) > 0)
1391 throw new ECARException(new Mensagem(null).getMensagem("acompanhamento.realizadoFisico.naoEditar.dataLimite"));
1392
1393
1394 if (acompReferenciaItem.getStatusRelatorioSrl().getCodSrl().intValue() == STATUS_LIBERADO)
1395 throw new ECARException(new Mensagem(null).getMensagem("acompanhamento.realizadoFisico.naoEditar.liberado"));
1396
1397
1398 if (acompReferenciaItem.getItemEstruturaIett().getDataInicioIett() == null) {
1399 throw new ECARException(new Mensagem(null).getMensagem("acompanhamento.realizadoFisico.naoEditar.dataInicioNaoInformada"));
1400 }
1401
1402 Calendar dataInicioIett = Calendar.getInstance();
1403 dataInicioIett.setTime(acompReferenciaItem.getItemEstruturaIett().getDataInicioIett());
1404
1405 Calendar dataInicioAcomp = Calendar.getInstance();
1406 dataInicioAcomp.setTime(acompReferenciaItem.getDataInicioAri());
1407
1408 dataInicioAcomp.clear(Calendar.HOUR);
1409 dataInicioAcomp.clear(Calendar.HOUR_OF_DAY);
1410 dataInicioAcomp.clear(Calendar.MINUTE);
1411 dataInicioAcomp.clear(Calendar.SECOND);
1412 dataInicioAcomp.clear(Calendar.MILLISECOND);
1413 dataInicioAcomp.clear(Calendar.AM_PM);
1414
1415
1416
1417
1418 String mesAcomp = "";
1419 String mesIett = "";
1420
1421 if (dataInicioAcomp.get(Calendar.MONTH) < 10) {
1422 mesAcomp = "0" + String.valueOf(dataInicioAcomp.get(Calendar.MONTH));
1423 }
1424 else {
1425 mesAcomp = String.valueOf(dataInicioAcomp.get(Calendar.MONTH));
1426 }
1427
1428 if (dataInicioIett.get(Calendar.MONTH) < 10) {
1429 mesIett = "0" + String.valueOf(dataInicioIett.get(Calendar.MONTH));
1430 }
1431 else {
1432 mesIett = String.valueOf(dataInicioIett.get(Calendar.MONTH));
1433 }
1434
1435 String inicioAcomp = String.valueOf(dataInicioAcomp.get(Calendar.YEAR)) + mesAcomp;
1436 String inicioIett = String.valueOf(dataInicioIett.get(Calendar.YEAR)) + mesIett;
1437
1438 if (Integer.parseInt(inicioIett) > Integer.parseInt(inicioAcomp)) {
1439 throw new ECARException(new Mensagem(null).getMensagem("acompanhamento.realizadoFisico.naoEditar.dataInicioIettEAcomp"));
1440 }
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454 if (dataAtual.before(dataInicioAcomp)) {
1455 throw new ECARException(new Mensagem(null).getMensagem("acompanhamento.realizadoFisico.naoEditar.dataAtualAnteriorDataInicioAcompanhamento"));
1456 }
1457 }
1458
1459 public boolean podeAcessarAri(UsuarioUsu usuario, AcompReferenciaItemAri acompReferenciaItem) throws ECARException {
1460 Set usuariosPermitidos = acompReferenciaItem.getItemEstruturaIett().getItemEstUsutpfuacIettutfas();
1461 for (Iterator it = usuariosPermitidos.iterator(); it.hasNext();) {
1462 ItemEstUsutpfuacIettutfa fuac = (ItemEstUsutpfuacIettutfa) it.next();
1463 if (fuac.getUsuarioUsu() != null) {
1464 if (fuac.getUsuarioUsu().equals(usuario)) {
1465 return true;
1466 }
1467 }
1468 else if (fuac.getSisAtributoSatb() != null) {
1469 UsuarioDao usuDao = new UsuarioDao();
1470 Iterator itUsu = usuDao.getUsuariosBySisAtributoSatb(fuac.getSisAtributoSatb()).iterator();
1471 while (itUsu.hasNext()) {
1472 UsuarioUsu usu = (UsuarioUsu) itUsu.next();
1473 if (usu.equals(usuario)) {
1474 return true;
1475 }
1476 }
1477 }
1478 }
1479 return false;
1480 }
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493 public List getAcompRelatorioArelOrderByFuncaoAcomp(AcompReferenciaItemAri acompRefItem, List ordenacaoTpfaEstrutura) throws ECARException {
1494
1495 List lResultado = new ArrayList();
1496
1497
1498
1499 TipoFuncAcompTpfa funcao;
1500 AcompRelatorioArel acompRelatorio;
1501
1502 if (acompRefItem != null && acompRefItem.getAcompRelatorioArels() != null) {
1503
1504 for (Iterator itOrd = ordenacaoTpfaEstrutura.iterator(); itOrd.hasNext();) {
1505
1506 OrdenacaoTpfaEstrutura ord = (OrdenacaoTpfaEstrutura) itOrd.next();
1507
1508 if (acompRefItem.getItemEstruturaIett().getEstruturaEtt().equals(ord.getEstrutura())) {
1509 if (ord.getTipoFuncAcomp() != null && !ord.getTipoFuncAcomp().isEmpty()) {
1510
1511 for (Iterator itFunc = ord.getTipoFuncAcomp().iterator(); itFunc.hasNext();) {
1512 funcao = (TipoFuncAcompTpfa) itFunc.next();
1513
1514 for (Iterator itAcomp = acompRefItem.getAcompRelatorioArels().iterator(); itAcomp.hasNext();) {
1515 acompRelatorio = (AcompRelatorioArel) itAcomp.next();
1516 if (acompRelatorio.getTipoFuncAcompTpfa().getCodTpfa() == funcao.getCodTpfa()) {
1517 lResultado.add(acompRelatorio);
1518 break;
1519 }
1520 }
1521 }
1522 }
1523 }
1524 }
1525 }
1526 return lResultado;
1527
1528 }
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542 public List getAcompRelatorioArelOrderByFuncaoAcomp(List arels, List ordenacaoTpfaEstrutura) throws ECARException {
1543
1544 List lResultado = new ArrayList();
1545
1546 if (arels != null && !arels.isEmpty()) {
1547
1548 for (Iterator itOrd = ordenacaoTpfaEstrutura.iterator(); itOrd.hasNext();) {
1549 OrdenacaoTpfaEstrutura ord = (OrdenacaoTpfaEstrutura) itOrd.next();
1550 if (ord.getTipoFuncAcomp() != null && !ord.getTipoFuncAcomp().isEmpty()) {
1551
1552
1553 for (Iterator itFunc = ord.getTipoFuncAcomp().iterator(); itFunc.hasNext();) {
1554 TipoFuncAcompTpfa funcao = (TipoFuncAcompTpfa) itFunc.next();
1555
1556 for (Iterator itAcomp = arels.iterator(); itAcomp.hasNext();) {
1557 AcompRelatorioArel arel = (AcompRelatorioArel) itAcomp.next();
1558 if (arel.getTipoFuncAcompTpfa().getCodTpfa() == funcao.getCodTpfa() && arel.getAcompReferenciaItemAri().getItemEstruturaIett().getEstruturaEtt().equals(ord.getEstrutura())) {
1559 lResultado.add(arel);
1560 }
1561 }
1562 }
1563 }
1564 }
1565 }
1566 return lResultado;
1567
1568 }
1569
1570
1571
1572
1573
1574
1575
1576
1577 public List getAcompRelatorioArelOrderByFuncaoAcomp(AcompReferenciaItemAri acompRefItem) throws ECARException {
1578
1579 TipoFuncAcompDao tipoFuncAcompDao = new TipoFuncAcompDao(request);
1580
1581 List lResultado = new ArrayList();
1582 List lFuncAcomp = tipoFuncAcompDao.ordenarTpfaBySequencia(tipoFuncAcompDao.getTipoFuncAcompEmitePosicao(), acompRefItem.getItemEstruturaIett().getEstruturaEtt());
1583
1584 TipoFuncAcompTpfa funcao;
1585 AcompRelatorioArel acompRelatorio;
1586
1587 if (acompRefItem != null && acompRefItem.getAcompRelatorioArels() != null) {
1588
1589 for (Iterator itFunc = lFuncAcomp.iterator(); itFunc.hasNext();) {
1590 funcao = (TipoFuncAcompTpfa) itFunc.next();
1591
1592 for (Iterator itAcomp = acompRefItem.getAcompRelatorioArels().iterator(); itAcomp.hasNext();) {
1593 acompRelatorio = (AcompRelatorioArel) itAcomp.next();
1594 if (acompRelatorio.getTipoFuncAcompTpfa().getCodTpfa() == funcao.getCodTpfa()) {
1595 lResultado.add(acompRelatorio);
1596 break;
1597 }
1598 }
1599 }
1600 }
1601 return lResultado;
1602 }
1603
1604
1605
1606
1607
1608
1609
1610
1611 public List getReferenciaByItem(AcompReferenciaItemAri acompRefItem) throws HibernateException {
1612 String comparacao = "";
1613
1614 if (acompRefItem.getAcompReferenciaAref().getOrgaoOrg() == null)
1615 comparacao = "is null";
1616 else
1617 comparacao = "= " + acompRefItem.getAcompReferenciaAref().getOrgaoOrg().getCodOrg();
1618
1619 StringBuilder select = new StringBuilder();
1620
1621 select.append("select ari from AcompReferenciaItemAri as ari ");
1622 select.append(" where ari.acompReferenciaAref.tipoAcompanhamentoTa.codTa = :codTa");
1623 select.append(" and ari.itemEstruturaIett.codIett = :codIett");
1624 select.append(" and ari.itemEstruturaIett.indAtivoIett = 'S'");
1625 select.append(" and ari.acompReferenciaAref.orgaoOrg " + comparacao);
1626 select.append(" order by ari.acompReferenciaAref.anoAref desc, ari.acompReferenciaAref.mesAref desc");
1627
1628 Query q = this.session.createQuery(select.toString());
1629
1630 q.setLong("codTa", acompRefItem.getAcompReferenciaAref().getTipoAcompanhamentoTa().getCodTa().longValue());
1631 q.setLong("codIett", acompRefItem.getItemEstruturaIett().getCodIett().longValue());
1632
1633 return q.list();
1634 }
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645 public List getItensAcompanhamentoInPeriodos(Collection periodosConsiderados, Collection niveisPlanejamento) throws ECARException {
1646
1647 try {
1648
1649 if (periodosConsiderados.size() > 0) {
1650
1651 StringBuilder query = new StringBuilder("select distinct item from ItemEstruturaIett item ").append("join item.acompReferenciaItemAris aris join aris.acompReferenciaAref aref ").append("join item.itemEstruturaNivelIettns niveis ").append("where aref.codAref in (:listaAcompanhamentos)").append(" and item.indAtivoIett = 'S'");
1652
1653 if (niveisPlanejamento.size() > 0)
1654 query.append(" and niveis.codSatb in (:listaNiveis)");
1655
1656 Query queryItens = this.getSession().createQuery(query.toString());
1657
1658 List listaCodigosAref = new ArrayList();
1659
1660 for (Iterator it = periodosConsiderados.iterator(); it.hasNext();) {
1661 AcompReferenciaAref aReferencia = (AcompReferenciaAref) it.next();
1662 listaCodigosAref.add(aReferencia.getCodAref());
1663 }
1664
1665 queryItens.setParameterList("listaAcompanhamentos", listaCodigosAref);
1666
1667 if (niveisPlanejamento.size() > 0) {
1668 List listaCodigosNiveis = new ArrayList();
1669
1670 for (Iterator itNiveis = niveisPlanejamento.iterator(); itNiveis.hasNext();) {
1671 SisAtributoSatb nivel = (SisAtributoSatb) itNiveis.next();
1672 listaCodigosNiveis.add(nivel.getCodSatb());
1673 }
1674 queryItens.setParameterList("listaNiveis", listaCodigosNiveis);
1675 }
1676
1677 List listaItens = queryItens.list();
1678
1679 List arvoreItens = new ItemEstruturaDao(request).getArvoreItens(listaItens, null);
1680
1681 return arvoreItens;
1682
1683 }
1684 else {
1685
1686 return new ArrayList();
1687
1688 }
1689
1690 } catch (HibernateException e) {
1691 this.logger.error(e);
1692 throw new ECARException(e);
1693 }
1694
1695 }
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714 public Object[] getItensAcompanhamentoInPeriodosByOrgaoResp(Collection periodosConsiderados, Collection niveisPlanejamento, OrgaoOrg orgaoResponsavel, UsuarioUsu usuarioUsu, Set gruposUsuario, Long codTipoAcompanhamento, Long codIettPai, Boolean itensSemInformacaoNivelPlanejamento, Long codCor, String indLiberados) throws ECARException {
1715 return getItensAcompanhamentoInPeriodosByOrgaoRespPaginado(periodosConsiderados, niveisPlanejamento, orgaoResponsavel, usuarioUsu, gruposUsuario, codTipoAcompanhamento, codIettPai, itensSemInformacaoNivelPlanejamento, codCor, indLiberados, -2, 1);
1716 }
1717
1718 public Object[] getItensAcompanhamentoFiltroItens(Long codTipoAcompanhamento, Collection listPeriodosConsiderados, Collection listCores, Collection listTipoFuncoesAcompanhamento, UsuarioUsu usuario, Set gruposUsuario, Collection niveisPlanejamento, Boolean itensSemInformacaoNivelPlanejamento, OrgaoOrg orgaoResponsavel, HttpServletRequest request
1719
1720 ) throws ECARException {
1721
1722 try {
1723
1724
1725
1726
1727 ItemEstruturaDao itemDao = new ItemEstruturaDao(null);
1728 TipoAcompanhamentoDao tipoAcompanhamentoDao = new TipoAcompanhamentoDao(null);
1729
1730 EstAtribTipoAcompEataDao estAtribTipoAcompEataDao = new EstAtribTipoAcompEataDao(request);
1731
1732 List listEstruturas = estAtribTipoAcompEataDao.getEstruturaEhFiltro((TipoAcompanhamentoTa) this.buscar(TipoAcompanhamentoTa.class, codTipoAcompanhamento));
1733
1734 if (listPeriodosConsiderados.size() > 0) {
1735 StringBuilder query = new StringBuilder("select arel.acompReferenciaItemAri from AcompRelatorioArel arel ");
1736
1737 if (niveisPlanejamento != null && niveisPlanejamento.size() > 0) {
1738 query.append(" left join arel.acompReferenciaItemAri.itemEstruturaIett.itemEstruturaNivelIettns niveis ");
1739 }
1740
1741 StringBuilder where = new StringBuilder("where arel.acompReferenciaItemAri.acompReferenciaAref.codAref in (:listaReferencias) ");
1742
1743 if (itensSemInformacaoNivelPlanejamento.booleanValue()) {
1744 if (niveisPlanejamento != null && niveisPlanejamento.size() > 0) {
1745 where.append(" and (niveis.codSatb in (:listaNiveis) or niveis is null)");
1746 }
1747 else {
1748 where.append(" and niveis is null");
1749 }
1750 }
1751 else {
1752 if (niveisPlanejamento != null && niveisPlanejamento.size() > 0) {
1753 where.append(" and (niveis.codSatb in (:listaNiveis) or niveis is null) ");
1754 }
1755 }
1756
1757 if (orgaoResponsavel != null && orgaoResponsavel.getCodOrg() != null) {
1758 where.append(" and (arel.acompReferenciaItemAri.itemEstruturaIett.orgaoOrgByCodOrgaoResponsavel1Iett.codOrg = :orgaoResp)");
1759 }
1760
1761 where.append("and (arel.acompReferenciaItemAri.itemEstruturaIett.indAtivoIett = 'S') ");
1762
1763 if (codTipoAcompanhamento != null) {
1764 where.append("and (arel.acompReferenciaItemAri.acompReferenciaAref.tipoAcompanhamentoTa.codTa = :codTa) ");
1765 }
1766
1767 if (listCores != null && listCores.size() > 0) {
1768 where.append("and arel.cor.codCor in (:cores) ");
1769 }
1770
1771 if (listTipoFuncoesAcompanhamento != null && listTipoFuncoesAcompanhamento.size() > 0) {
1772 where.append("and arel.tipoFuncAcompTpfa.codTpfa in (:listTpFuncAcomp) ");
1773 }
1774
1775 Query queryItens = this.getSession().createQuery(query.toString() + where.toString());
1776
1777 if (niveisPlanejamento != null && niveisPlanejamento.size() > 0) {
1778 List<Long> listaCodigosNiveis = new ArrayList<Long>();
1779 for (Iterator itNiveis = niveisPlanejamento.iterator(); itNiveis.hasNext();) {
1780 SisAtributoSatb nivel = (SisAtributoSatb) itNiveis.next();
1781 listaCodigosNiveis.add(nivel.getCodSatb());
1782 }
1783 queryItens.setParameterList("listaNiveis", listaCodigosNiveis);
1784 }
1785
1786 if (orgaoResponsavel != null && orgaoResponsavel.getCodOrg() != null) {
1787 queryItens.setLong("orgaoResp", orgaoResponsavel.getCodOrg().longValue());
1788 }
1789
1790 if (codTipoAcompanhamento != null) {
1791
1792
1793 queryItens.setLong("codTa", codTipoAcompanhamento.longValue());
1794 }
1795
1796 List<Long> listCodCores = new ArrayList<Long>();
1797 for (Iterator iter = listCores.iterator(); iter.hasNext();) {
1798 Cor cor = (Cor) iter.next();
1799 listCodCores.add(cor.getCodCor());
1800 }
1801
1802 if (listCodCores != null && listCodCores.size() > 0) {
1803
1804 queryItens.setParameterList("cores", listCodCores);
1805 }
1806
1807 List<Long> listaCodigosAref = new ArrayList<Long>();
1808 for (Iterator iter = listPeriodosConsiderados.iterator(); iter.hasNext();) {
1809 AcompReferenciaAref aReferencia = (AcompReferenciaAref) iter.next();
1810 listaCodigosAref.add(aReferencia.getCodAref());
1811 }
1812
1813 queryItens.setParameterList("listaReferencias", listaCodigosAref);
1814
1815 List<Long> listCodTipoFuncoesAcompanhamento = new ArrayList<Long>();
1816 for (Iterator iter = listTipoFuncoesAcompanhamento.iterator(); iter.hasNext();) {
1817 TipoFuncAcompTpfa tipoFuncaoAcompanhamento = (TipoFuncAcompTpfa) iter.next();
1818 listCodTipoFuncoesAcompanhamento.add(tipoFuncaoAcompanhamento.getCodTpfa());
1819 }
1820
1821 if (listTipoFuncoesAcompanhamento != null && listTipoFuncoesAcompanhamento.size() > 0) {
1822 queryItens.setParameterList("listTpFuncAcomp", listCodTipoFuncoesAcompanhamento);
1823 }
1824
1825 List<ItemEstruturaIett> listaItens = new ArrayList<ItemEstruturaIett>();
1826 List listaAris = queryItens.list();
1827 Iterator itListaAris = listaAris.iterator();
1828
1829 if (usuario == null) {
1830
1831 while (itListaAris.hasNext()) {
1832 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) itListaAris.next();
1833 listaItens.add(ari.getItemEstruturaIett());
1834 }
1835 }
1836 else {
1837 while (itListaAris.hasNext()) {
1838 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) itListaAris.next();
1839 if (validaPermissao.permissaoLeituraAcompanhamento(ari, usuario, gruposUsuario)) {
1840 listaItens.add(ari.getItemEstruturaIett());
1841 }
1842 }
1843 }
1844
1845 List<ItemEstruturaIett> itensGeralComArvore = itemDao.getArvoreItens(listaItens, null);
1846 List<ItemEstruturaIett> arvoreItens = new ArrayList<ItemEstruturaIett>(itensGeralComArvore);
1847
1848 TipoAcompanhamentoTa tipoAcomp = null;
1849
1850 if (codTipoAcompanhamento != null) {
1851 tipoAcomp = (TipoAcompanhamentoTa) tipoAcompanhamentoDao.buscar(TipoAcompanhamentoTa.class, codTipoAcompanhamento);
1852 }
1853
1854 return new Object[] { aplicarFiltros(itemDao.getItensOrdenados(arvoreItens, tipoAcomp), listEstruturas, tipoAcomp, request), itensGeralComArvore };
1855
1856 }
1857
1858 else {
1859 return new Object[] { new ArrayList(), new ArrayList() };
1860 }
1861
1862 } catch (HibernateException e) {
1863 this.logger.error(e);
1864 throw new ECARException(e);
1865 }
1866 }
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877 private Collection aplicarFiltros(Collection itensEstrutura, Collection estruturas, TipoAcompanhamentoTa tipoAcompanhamentoTa, HttpServletRequest request) throws ECARException {
1878 Collection retorno = new ArrayList();
1879
1880 Iterator itEstrutura = estruturas.iterator();
1881 List itensRemovidos = new ArrayList();
1882 EstruturaDao estruturaDao = new EstruturaDao(request);
1883 while (itEstrutura.hasNext()) {
1884 EstruturaEtt ett = (EstruturaEtt) itEstrutura.next();
1885 String codEtt = ett.getCodEtt().toString();
1886
1887 List atributosLivres = estruturaDao.getAtributosLivresEstruturaDadosGeraisEhFiltro(ett, tipoAcompanhamentoTa);
1888
1889 Iterator itItensEstrutura = itensEstrutura.iterator();
1890
1891 while (itItensEstrutura.hasNext()) {
1892 AtributoEstruturaListagemItens atributoEstruturaListagemItens = (AtributoEstruturaListagemItens) itItensEstrutura.next();
1893 ItemEstruturaIett iett = atributoEstruturaListagemItens.getItem();
1894
1895 if (iett.getItemEstruturaIett() != null) {
1896 if (itensRemovidos.contains(iett.getItemEstruturaIett().getCodIett())) {
1897 itensRemovidos.add(iett.getCodIett());
1898 itItensEstrutura.remove();
1899 continue;
1900 }
1901 }
1902
1903 if (iett.getEstruturaEtt().equals(ett)) {
1904
1905 if (!"".equals(Pagina.getParamStr(request, codEtt + "_codIettPai"))) {
1906 if (iett.getItemEstruturaIett() != null && !iett.getItemEstruturaIett().getCodIett().equals(Long.valueOf(Pagina.getParamStr(request, codEtt + "_codIettPai")))) {
1907 itensRemovidos.add(iett.getCodIett());
1908 itItensEstrutura.remove();
1909 continue;
1910 }
1911 }
1912
1913 if (!"".equals(Pagina.getParamStr(request, codEtt + "_codIett"))) {
1914
1915 if (iett.getCodIett() == null || !iett.getCodIett().equals(Long.valueOf(Pagina.getParamStr(request, codEtt + "_codIett")))) {
1916 itensRemovidos.add(iett.getCodIett());
1917 itItensEstrutura.remove();
1918 continue;
1919 }
1920 }
1921
1922
1923 if (filtrarItemString(request, "siglaIett", iett, itensRemovidos, itItensEstrutura)) {
1924 continue;
1925 }
1926 if (filtrarItemString(request, "nomeIett", iett, itensRemovidos, itItensEstrutura)) {
1927 continue;
1928 }
1929 if (filtrarItemString(request, "descricaoIett", iett, itensRemovidos, itItensEstrutura)) {
1930 continue;
1931 }
1932 if (filtrarItemString(request, "origemIett", iett, itensRemovidos, itItensEstrutura)) {
1933 continue;
1934 }
1935 if (filtrarItemString(request, "indAtivoIett", iett, itensRemovidos, itItensEstrutura)) {
1936 continue;
1937 }
1938 if (filtrarItemString(request, "indMonitoramentoIett", iett, itensRemovidos, itItensEstrutura)) {
1939 continue;
1940 }
1941 if (filtrarItemString(request, "indBloqPlanejamentoIett", iett, itensRemovidos, itItensEstrutura)) {
1942 continue;
1943 }
1944 if (filtrarItemString(request, "objetivoGeralIett", iett, itensRemovidos, itItensEstrutura)) {
1945 continue;
1946 }
1947 if (filtrarItemString(request, "beneficiosIett", iett, itensRemovidos, itItensEstrutura)) {
1948 continue;
1949 }
1950
1951
1952
1953
1954 if (filtrarItemData(request, "dataInicioIett", iett, itensRemovidos, itItensEstrutura, "Inicio")) {
1955 continue;
1956 }
1957 if (filtrarItemData(request, "dataInicioIett", iett, itensRemovidos, itItensEstrutura, "Fim")) {
1958 continue;
1959 }
1960
1961 if (filtrarItemData(request, "dataTerminoIett", iett, itensRemovidos, itItensEstrutura, "Inicio")) {
1962 continue;
1963 }
1964 if (filtrarItemData(request, "dataTerminoIett", iett, itensRemovidos, itItensEstrutura, "Fim")) {
1965 continue;
1966 }
1967
1968 if (!"".equals(Pagina.getParamStr(request, codEtt + "_areaAre"))) {
1969 if (iett.getAreaAre() == null || !iett.getAreaAre().getCodAre().equals(Long.valueOf(Pagina.getParamStr(request, codEtt + "_areaAre")))) {
1970 itensRemovidos.add(iett.getCodIett());
1971 itItensEstrutura.remove();
1972 continue;
1973 }
1974 }
1975
1976 if (!"".equals(Pagina.getParamStr(request, codEtt + "_subAreaSare"))) {
1977 if (iett.getSubAreaSare() == null || !iett.getSubAreaSare().getCodSare().equals(Long.valueOf(Pagina.getParamStr(request, codEtt + "_subAreaSare")))) {
1978 itensRemovidos.add(iett.getCodIett());
1979 itItensEstrutura.remove();
1980 continue;
1981 }
1982 }
1983
1984 if (!"".equals(Pagina.getParamStr(request, codEtt + "_unidadeOrcamentariaUO"))) {
1985 if (iett.getUnidadeOrcamentariaUO() == null || !iett.getUnidadeOrcamentariaUO().getCodUo().equals(Long.valueOf(Pagina.getParamStr(request, codEtt + "_unidadeOrcamentariaUO")))) {
1986 itensRemovidos.add(iett.getCodIett());
1987 itItensEstrutura.remove();
1988 continue;
1989 }
1990 }
1991
1992 if (!"".equals(Pagina.getParamStr(request, codEtt + "_orgaoOrgByCodOrgaoResponsavel1Iett"))) {
1993 if (iett.getOrgaoOrgByCodOrgaoResponsavel1Iett() == null || !iett.getOrgaoOrgByCodOrgaoResponsavel1Iett().getCodOrg().equals(Long.valueOf(Pagina.getParamStr(request, codEtt + "_orgaoOrgByCodOrgaoResponsavel1Iett")))) {
1994 itensRemovidos.add(iett.getCodIett());
1995 itItensEstrutura.remove();
1996 continue;
1997 }
1998 }
1999
2000 if (!"".equals(Pagina.getParamStr(request, codEtt + "_orgaoOrgByCodOrgaoResponsavel2Iett"))) {
2001 if (iett.getOrgaoOrgByCodOrgaoResponsavel2Iett() == null || !iett.getOrgaoOrgByCodOrgaoResponsavel2Iett().getCodOrg().equals(Long.valueOf(Pagina.getParamStr(request, codEtt + "_orgaoOrgByCodOrgaoResponsavel2Iett")))) {
2002 itensRemovidos.add(iett.getCodIett());
2003 itItensEstrutura.remove();
2004 continue;
2005 }
2006 }
2007
2008 if (filtrarItemString(request, "descricaoR1", iett, itensRemovidos, itItensEstrutura)) {
2009 continue;
2010 }
2011 if (filtrarItemString(request, "descricaoR2", iett, itensRemovidos, itItensEstrutura)) {
2012 continue;
2013 }
2014 if (filtrarItemString(request, "descricaoR3", iett, itensRemovidos, itItensEstrutura)) {
2015 continue;
2016 }
2017 if (filtrarItemString(request, "descricaoR4", iett, itensRemovidos, itItensEstrutura)) {
2018 continue;
2019 }
2020 if (filtrarItemString(request, "descricaoR5", iett, itensRemovidos, itItensEstrutura)) {
2021 continue;
2022 }
2023
2024 if (!"".equals(Pagina.getParamStr(request, codEtt + "_periodicidadePrdc"))) {
2025 if (iett.getPeriodicidadePrdc() == null || !iett.getPeriodicidadePrdc().getCodPrdc().equals(Long.valueOf(Pagina.getParamStr(request, codEtt + "_periodicidadePrdc")))) {
2026 itensRemovidos.add(iett.getCodIett());
2027 itItensEstrutura.remove();
2028 continue;
2029 }
2030 }
2031
2032 if (filtrarItemString(request, "indCriticaIett", iett, itensRemovidos, itItensEstrutura)) {
2033 continue;
2034 }
2035 if (filtrarItemValor(request, "valPrevistoFuturoIett", iett, itensRemovidos, itItensEstrutura, "Inicio")) {
2036 continue;
2037 }
2038 if (filtrarItemValor(request, "valPrevistoFuturoIett", iett, itensRemovidos, itItensEstrutura, "Fim")) {
2039 continue;
2040 }
2041 if (filtrarItemData(request, "dataR1", iett, itensRemovidos, itItensEstrutura, "Inicio")) {
2042 continue;
2043 }
2044 if (filtrarItemData(request, "dataR1", iett, itensRemovidos, itItensEstrutura, "Fim")) {
2045 continue;
2046 }
2047 if (filtrarItemData(request, "dataR2", iett, itensRemovidos, itItensEstrutura, "Inicio")) {
2048 continue;
2049 }
2050 if (filtrarItemData(request, "dataR2", iett, itensRemovidos, itItensEstrutura, "Fim")) {
2051 continue;
2052 }
2053 if (filtrarItemData(request, "dataR3", iett, itensRemovidos, itItensEstrutura, "Inicio")) {
2054 continue;
2055 }
2056 if (filtrarItemData(request, "dataR3", iett, itensRemovidos, itItensEstrutura, "Fim")) {
2057 continue;
2058 }
2059 if (filtrarItemData(request, "dataR4", iett, itensRemovidos, itItensEstrutura, "Inicio")) {
2060 continue;
2061 }
2062 if (filtrarItemData(request, "dataR4", iett, itensRemovidos, itItensEstrutura, "Fim")) {
2063 continue;
2064 }
2065 if (filtrarItemData(request, "dataR5", iett, itensRemovidos, itItensEstrutura, "Inicio")) {
2066 continue;
2067 }
2068 if (filtrarItemData(request, "dataR5", iett, itensRemovidos, itItensEstrutura, "Fim")) {
2069 continue;
2070 }
2071
2072
2073 if (!"".equals(Pagina.getParamStr(request, codEtt + "_situacaoSit"))) {
2074 if (iett.getSituacaoSit() == null || !iett.getSituacaoSit().getCodSit().equals(Long.valueOf(Pagina.getParamStr(request, codEtt + "_situacaoSit")))) {
2075 itensRemovidos.add(iett.getCodIett());
2076 itItensEstrutura.remove();
2077 continue;
2078 }
2079 }
2080
2081 ConfiguracaoDao configuracaoDao = new ConfiguracaoDao(request);
2082 String campoNivelPlanejamento = codEtt + "_a" + configuracaoDao.getConfiguracao().getSisGrupoAtributoSgaByCodSgaGrAtrNvPlan().getCodSga().toString();
2083 if (!"".equals(Pagina.getParamStr(request, campoNivelPlanejamento))) {
2084 if (!iett.getItemEstruturaNivelIettns().contains(this.buscar(SisAtributoSatb.class, Long.valueOf(Pagina.getParamStr(request, campoNivelPlanejamento))))) {
2085 itensRemovidos.add(iett.getCodIett());
2086 itItensEstrutura.remove();
2087 continue;
2088 }
2089 }
2090
2091
2092
2093 if (filtrarAtributosLivres(request, iett, itensRemovidos, itItensEstrutura, atributosLivres)) {
2094 continue;
2095 }
2096 }
2097 }
2098
2099 }
2100 return itensEstrutura;
2101 }
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120 public Object[] getItensAcompanhamentoInPeriodosByOrgaoRespPaginado(Collection periodosConsiderados, Collection niveisPlanejamento, OrgaoOrg orgaoResponsavel, UsuarioUsu usuarioUsu, Set gruposUsuario, Long codTipoAcompanhamento, Long codIettPai, Boolean itensSemInformacaoNivelPlanejamento, Long codCor, String indLiberados, int menorNivel, int nuPaginaSelecionada) throws ECARException {
2121 try {
2122 ItemEstruturaDao itemDao = new ItemEstruturaDao(null);
2123 TipoAcompanhamentoDao tipoAcompanhamentoDao = new TipoAcompanhamentoDao(null);
2124
2125 if (periodosConsiderados.size() > 0) {
2126 StringBuilder query = new StringBuilder("select arel.acompReferenciaItemAri from AcompRelatorioArel arel ");
2127
2128 if (niveisPlanejamento != null && niveisPlanejamento.size() > 0) {
2129 query.append(" left join arel.acompReferenciaItemAri.itemEstruturaIett.itemEstruturaNivelIettns niveis");
2130 }
2131
2132 StringBuilder where = new StringBuilder(" where arel.acompReferenciaItemAri.acompReferenciaAref.codAref in (:listaAcompanhamentos)");
2133 where.append(" and (arel.acompReferenciaItemAri.itemEstruturaIett.indAtivoIett = 'S')");
2134
2135 if (codTipoAcompanhamento != null) {
2136 where.append(" and (arel.acompReferenciaItemAri.acompReferenciaAref.tipoAcompanhamentoTa.codTa = :codTa)");
2137 }
2138
2139 if (orgaoResponsavel != null && orgaoResponsavel.getCodOrg() != null) {
2140 where.append(" and (arel.acompReferenciaItemAri.itemEstruturaIett.orgaoOrgByCodOrgaoResponsavel1Iett.codOrg = :orgaoResp)");
2141 }
2142
2143 int retornarAteNivel = -1;
2144 List<ItemEstruturaIettMin> iettFilhos = new ArrayList<ItemEstruturaIettMin>();
2145 if (codIettPai != null) {
2146 ItemEstruturaIettMin iettPai = (ItemEstruturaIettMin) itemDao.buscar(ItemEstruturaIettMin.class, codIettPai);
2147 if (iettPai != null) {
2148 retornarAteNivel = iettPai.getNivelIett().intValue() + 1;
2149 iettFilhos.addAll(itemDao.getDescendentesMin(iettPai, false));
2150 }
2151 }
2152
2153 if (itensSemInformacaoNivelPlanejamento.booleanValue()) {
2154 if (niveisPlanejamento != null && niveisPlanejamento.size() > 0) {
2155 where.append(" and (niveis.codSatb in (:listaNiveis) or niveis is null)");
2156 }
2157 else {
2158 where.append(" and niveis is null");
2159 }
2160 }
2161 else {
2162 if (niveisPlanejamento != null && niveisPlanejamento.size() > 0) {
2163 where.append(" and (niveis.codSatb in (:listaNiveis) or niveis is null) ");
2164 }
2165 }
2166
2167 if (codCor != null) {
2168 where.append(" and arel.cor.codCor = :codCor");
2169 }
2170
2171
2172 if (indLiberados != null && "S".equals(indLiberados)) {
2173 where.append(" and arel.acompReferenciaItemAri.statusRelatorioSrl.codSrl = :codLiberado");
2174 }
2175
2176 Query queryItens = this.getSession().createQuery(query.toString() + where.toString());
2177
2178 List<Long> listaCodigosAref = new ArrayList<Long>();
2179
2180 for (Iterator iter = periodosConsiderados.iterator(); iter.hasNext();) {
2181 AcompReferenciaAref aReferencia = (AcompReferenciaAref) iter.next();
2182 listaCodigosAref.add(aReferencia.getCodAref());
2183 }
2184
2185 queryItens.setParameterList("listaAcompanhamentos", listaCodigosAref);
2186
2187 if (orgaoResponsavel != null && orgaoResponsavel.getCodOrg() != null) {
2188 queryItens.setLong("orgaoResp", orgaoResponsavel.getCodOrg().longValue());
2189 }
2190
2191 if (niveisPlanejamento != null && niveisPlanejamento.size() > 0) {
2192 List<Long> listaCodigosNiveis = new ArrayList<Long>();
2193 for (Iterator itNiveis = niveisPlanejamento.iterator(); itNiveis.hasNext();) {
2194 SisAtributoSatb nivel = (SisAtributoSatb) itNiveis.next();
2195 listaCodigosNiveis.add(nivel.getCodSatb());
2196 }
2197 queryItens.setParameterList("listaNiveis", listaCodigosNiveis);
2198 }
2199
2200 if (codTipoAcompanhamento != null) {
2201
2202
2203 queryItens.setLong("codTa", codTipoAcompanhamento.longValue());
2204 }
2205
2206 if (codCor != null) {
2207 queryItens.setLong("codCor", codCor.longValue());
2208 }
2209
2210
2211 if (indLiberados != null && "S".equals(indLiberados)) {
2212 queryItens.setLong("codLiberado", Long.valueOf(this.STATUS_LIBERADO).longValue());
2213 }
2214
2215 List<ItemEstruturaIett> listaItens = new ArrayList<ItemEstruturaIett>();
2216 List listaAris = queryItens.list();
2217 Iterator itListaAris = listaAris.iterator();
2218
2219 if (usuarioUsu == null) {
2220
2221 while (itListaAris.hasNext()) {
2222 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) itListaAris.next();
2223 listaItens.add(ari.getItemEstruturaIett());
2224 }
2225 }
2226 else {
2227 while (itListaAris.hasNext()) {
2228 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) itListaAris.next();
2229 if (validaPermissao.permissaoLeituraAcompanhamento(ari, usuarioUsu, gruposUsuario)) {
2230 listaItens.add(ari.getItemEstruturaIett());
2231 }
2232 }
2233 }
2234
2235 List<ItemEstruturaIett> itensGeralComArvore = itemDao.getArvoreItens(listaItens, null);
2236 List<ItemEstruturaIett> arvoreItens = new ArrayList<ItemEstruturaIett>(itensGeralComArvore);
2237
2238 if (retornarAteNivel != -1) {
2239 for (Iterator itArvore = arvoreItens.iterator(); itArvore.hasNext();) {
2240 ItemEstruturaIett iett = (ItemEstruturaIett) itArvore.next();
2241 ItemEstruturaIettMin iettMin = new ItemEstruturaIettMin();
2242 iettMin.setCodIett(iett.getCodIett());
2243 if (iett.getNivelIett().intValue() > retornarAteNivel) {
2244 itArvore.remove();
2245 }
2246 else if (!iettFilhos.contains(iettMin)) {
2247 itArvore.remove();
2248 }
2249
2250 }
2251 }
2252 TipoAcompanhamentoTa tipoAcomp = null;
2253 if (codTipoAcompanhamento != null) {
2254 tipoAcomp = (TipoAcompanhamentoTa) tipoAcompanhamentoDao.buscar(TipoAcompanhamentoTa.class, codTipoAcompanhamento);
2255 }
2256
2257
2258 if (menorNivel != -2) {
2259
2260 ConfiguracaoDao configuracaoDao = new ConfiguracaoDao(request);
2261 int nuItensPaginacao = configuracaoDao.getConfiguracao().getNuItensExibidosPaginacao();
2262 List itensOrdenados = itemDao.getItensOrdenados(arvoreItens, tipoAcomp);
2263 if (itensOrdenados.size() <= nuItensPaginacao * nuPaginaSelecionada) {
2264 nuPaginaSelecionada = 1;
2265 }
2266 int indiceInicial = (nuPaginaSelecionada - 1) * nuItensPaginacao + 1;
2267 int indiceFinal = (nuPaginaSelecionada - 1) * nuItensPaginacao + nuItensPaginacao;
2268 int contador = 1;
2269
2270 List itensOrdenadosPaginados = new ArrayList();
2271 List itensOrdenadosTotalPorNivel = new ArrayList();
2272 Iterator itensOrdenadosIt = itensOrdenados.iterator();
2273 while (itensOrdenadosIt.hasNext()) {
2274 AtributoEstruturaListagemItens atEstListagem = (AtributoEstruturaListagemItens) itensOrdenadosIt.next();
2275 if (indiceInicial <= contador && contador <= indiceFinal) {
2276 itensOrdenadosPaginados.add(atEstListagem);
2277 }
2278 if (menorNivel == -1 || atEstListagem.getItem().getNivelIett().intValue() <= menorNivel) {
2279 itensOrdenadosTotalPorNivel.add(atEstListagem);
2280 contador++;
2281 }
2282 }
2283 return new Object[] { itensOrdenadosPaginados, itensGeralComArvore, itensOrdenadosTotalPorNivel };
2284 }
2285 else {
2286 return new Object[] { itemDao.getItensOrdenados(arvoreItens, tipoAcomp), itensGeralComArvore };
2287 }
2288
2289 }
2290 else {
2291 return new Object[] { new ArrayList(), new ArrayList() };
2292 }
2293
2294 } catch (HibernateException e) {
2295 this.logger.error(e);
2296 throw new ECARException(e);
2297 }
2298 }
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309 public Map criarMapPeriodoAri(Collection periodosConsiderados, ItemEstruturaIett item) throws ECARException {
2310
2311 try {
2312 StringBuilder query = new StringBuilder("");
2313
2314 if (periodosConsiderados != null) {
2315 query = new StringBuilder("select ari from AcompReferenciaItemAri ari ").append("where ari.itemEstruturaIett = ? and ari.acompReferenciaAref.codAref in (:listaAcompanhamentos)");
2316 }
2317 else {
2318 query = new StringBuilder("select ari from AcompReferenciaItemAri ari ").append("where ari.itemEstruturaIett = ?");
2319 }
2320
2321 Query queryAri = this.getSession().createQuery(query.toString());
2322
2323 queryAri.setLong(0, item.getCodIett().longValue());
2324
2325 if (periodosConsiderados != null) {
2326 List listaCodigosAref = new ArrayList();
2327
2328 for (Iterator it = periodosConsiderados.iterator(); it.hasNext();) {
2329 AcompReferenciaAref aReferencia = (AcompReferenciaAref) it.next();
2330 listaCodigosAref.add(aReferencia.getCodAref());
2331 }
2332
2333 queryAri.setParameterList("listaAcompanhamentos", listaCodigosAref);
2334 }
2335
2336 List listaAris = queryAri.list();
2337
2338 Map map = new HashMap();
2339
2340 for (Iterator itAris = listaAris.iterator(); itAris.hasNext();) {
2341 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) itAris.next();
2342 map.put(ari.getAcompReferenciaAref(), ari);
2343 }
2344
2345 return map;
2346
2347 } catch (HibernateException e) {
2348 this.logger.error(e);
2349 throw new ECARException(e);
2350 }
2351
2352 }
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366 public Map criaMapCalculoProjecao(ItemEstrtIndResulIettr indicador, int anoInicioProjecao, int anoFimProjecao, int mesInicioProjecao, int mesFimProjecao) throws ECARException {
2367
2368
2369 List meses = new ArrayList();
2370 while ((anoInicioProjecao != anoFimProjecao) || (mesInicioProjecao != mesFimProjecao && anoInicioProjecao == anoFimProjecao)) {
2371 meses.add(mesInicioProjecao + "-" + anoInicioProjecao);
2372 mesInicioProjecao++;
2373 if (mesInicioProjecao == 13) {
2374 mesInicioProjecao = 1;
2375 anoInicioProjecao++;
2376 }
2377 }
2378 meses.add(mesInicioProjecao + "-" + anoInicioProjecao);
2379
2380 Map qtdeRealizada = new HashMap();
2381 double valorAnterior = 0;
2382 int i = 1;
2383 Iterator it = meses.iterator();
2384 while (it.hasNext()) {
2385 String strMesAno = (String) it.next();
2386 String strMes = strMesAno.split("-")[0];
2387 if (strMes.length() == 1)
2388 strMes = "0" + strMes;
2389 String strAno = strMesAno.split("-")[1];
2390 Double valor = new AcompRealFisicoDao(request).getQtdRealizadaMesAno(indicador, Long.valueOf(strMes), Long.valueOf(strAno));
2391 if (valor != null && valor.doubleValue() != 0) {
2392 if ("S".equals(indicador.getIndAcumulavelIettr())) {
2393 valorAnterior = valorAnterior + valor.doubleValue();
2394 qtdeRealizada.put(Integer.valueOf(i), new Double(valorAnterior));
2395 i++;
2396 }
2397 else {
2398 valorAnterior = valor.doubleValue();
2399 qtdeRealizada.put(Integer.valueOf(i), new Double(valorAnterior));
2400 i++;
2401 }
2402 }
2403 else {
2404 qtdeRealizada.put(Integer.valueOf(i), new Double(valorAnterior));
2405 i++;
2406 }
2407 }
2408
2409 return qtdeRealizada;
2410
2411 }
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426 public int[] getMesAnoInicioFimMatrizProjecao(ItemEstrtIndResulIettr indicador, boolean comQtde, boolean soPrevisao) throws ECARException {
2427 try {
2428
2429 Collection acompanhamentosReferencia = this.getSession().createFilter(indicador.getAcompRealFisicoArfs(), " WHERE this.qtdRealizadaArf >= 0 OR this.qtdRealizadaArf IS NULL ORDER BY this.anoArf asc, this.mesArf asc").list();
2430
2431 Object[] acompanhamentos = acompanhamentosReferencia.toArray();
2432
2433 int mesInicioProjecao;
2434 int anoInicioProjecao;
2435
2436 Date dataInicioProjeto = indicador.getItemEstruturaIett().getDataInicioIett();
2437
2438
2439
2440
2441
2442
2443 int mesQuantidadeInformada = 0;
2444 int anoQuantidadeInformada = 0;
2445
2446 if (!soPrevisao) {
2447 mesQuantidadeInformada = Integer.valueOf(((AcompRealFisicoArf) acompanhamentos[0]).getMesArf().toString()).intValue();
2448 anoQuantidadeInformada = Integer.valueOf(((AcompRealFisicoArf) acompanhamentos[0]).getAnoArf().toString()).intValue();
2449 }
2450
2451 if (dataInicioProjeto != null) {
2452
2453 int mesInicioProjeto = Data.getCalendar(dataInicioProjeto).get(Calendar.MONTH) + 1;
2454 int anoInicioProjeto = Data.getCalendar(dataInicioProjeto).get(Calendar.YEAR);
2455
2456
2457 if (anoInicioProjeto - anoQuantidadeInformada > 0) {
2458 mesInicioProjecao = mesQuantidadeInformada;
2459 anoInicioProjecao = anoQuantidadeInformada;
2460 }
2461 else {
2462 if (anoInicioProjeto - anoQuantidadeInformada > 0) {
2463 mesInicioProjecao = mesInicioProjeto;
2464 anoInicioProjecao = anoInicioProjeto;
2465 }
2466 else {
2467 if (mesInicioProjeto - mesQuantidadeInformada >= 0) {
2468 mesInicioProjecao = mesQuantidadeInformada;
2469 anoInicioProjecao = anoQuantidadeInformada;
2470 }
2471 else {
2472 mesInicioProjecao = mesInicioProjeto;
2473 anoInicioProjecao = anoInicioProjeto;
2474 }
2475 }
2476 }
2477
2478 }
2479 else {
2480 mesInicioProjecao = mesQuantidadeInformada;
2481 anoInicioProjecao = anoQuantidadeInformada;
2482 }
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492 int mesFimMatriz = 0;
2493 int anoFimMatriz = 0;
2494 if (!soPrevisao) {
2495 mesFimMatriz = Integer.valueOf(((AcompRealFisicoArf) acompanhamentos[acompanhamentos.length - 1]).getMesArf().toString()).intValue();
2496 anoFimMatriz = Integer.valueOf(((AcompRealFisicoArf) acompanhamentos[acompanhamentos.length - 1]).getAnoArf().toString()).intValue();
2497 }
2498
2499 int[] resultado = new int[4];
2500 resultado[0] = mesInicioProjecao;
2501 resultado[1] = anoInicioProjecao;
2502 resultado[2] = mesFimMatriz;
2503 resultado[3] = anoFimMatriz;
2504
2505 return resultado;
2506
2507 } catch (HibernateException e) {
2508 throw new ECARException(e);
2509 }
2510 }
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520 public int[] getMesAnoFimProjecao(ItemEstrtIndResulIettr indicador) throws ECARException {
2521 try {
2522 Collection fisicoPrevisto = this.getSession().createFilter(indicador.getItemEstrutFisicoIettfs(), " where this.qtdPrevistaIettf > 0 order by this.exercicioExe.dataFinalExe desc").list();
2523
2524 Object[] previstos = fisicoPrevisto.toArray();
2525
2526 int mesFimProjecao;
2527 int anoFimProjecao;
2528
2529 Date dataFimProjeto = indicador.getItemEstruturaIett().getDataTerminoIett();
2530 Date dataFimExercicio = ((ItemEstrutFisicoIettf) previstos[0]).getExercicioExe().getDataFinalExe();
2531
2532 int mesQuantidadeInformadaTermino = Data.getCalendar(dataFimExercicio).get(Calendar.MONTH) + 1;
2533 int anoQuantidadeInformadaTermino = Data.getCalendar(dataFimExercicio).get(Calendar.YEAR);
2534
2535 if (dataFimProjeto != null) {
2536 int mesFimProjeto = Data.getCalendar(dataFimProjeto).get(Calendar.MONTH) + 1;
2537 int anoFimProjeto = Data.getCalendar(dataFimProjeto).get(Calendar.YEAR);
2538
2539 if (anoFimProjeto - anoQuantidadeInformadaTermino > 0) {
2540 mesFimProjecao = mesQuantidadeInformadaTermino;
2541 anoFimProjecao = anoQuantidadeInformadaTermino;
2542 }
2543 else {
2544 if (anoFimProjeto - anoQuantidadeInformadaTermino > 0) {
2545 mesFimProjecao = mesFimProjeto;
2546 anoFimProjecao = anoFimProjeto;
2547 }
2548 else {
2549 if (mesFimProjeto - mesQuantidadeInformadaTermino >= 0) {
2550 mesFimProjecao = mesQuantidadeInformadaTermino;
2551 anoFimProjecao = anoQuantidadeInformadaTermino;
2552 }
2553 else {
2554 mesFimProjecao = mesFimProjeto;
2555 anoFimProjecao = anoFimProjeto;
2556 }
2557 }
2558 }
2559
2560 }
2561 else {
2562 mesFimProjecao = mesQuantidadeInformadaTermino;
2563 anoFimProjecao = anoQuantidadeInformadaTermino;
2564 }
2565
2566 int[] resultado = new int[2];
2567 resultado[0] = mesFimProjecao;
2568 resultado[1] = anoFimProjecao;
2569
2570 return resultado;
2571
2572 } catch (HibernateException e) {
2573 throw new ECARException(e);
2574 }
2575 }
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586 public double calculoProjecao(ItemEstrtIndResulIettr indicador, AcompReferenciaItemAri ari) throws ECARException {
2587
2588 try {
2589 AcompRealFisicoDao arfDao = new AcompRealFisicoDao(null);
2590 List sMeses = new ArrayList();
2591 List sRealizado = new ArrayList();
2592
2593 int[] meses = getMesAnoInicioFimMatrizProjecao(indicador, true, false);
2594 int mesInicioProjecao = meses[0];
2595 int anoInicioProjecao = meses[1];
2596 int mesFimRealizado = Integer.valueOf(ari.getAcompReferenciaAref().getMesAref()).intValue();
2597 int anoFimRealizado = Integer.valueOf(ari.getAcompReferenciaAref().getAnoAref()).intValue();
2598
2599 int[] mesAnoFimProjecao = getMesAnoFimProjecao(indicador);
2600 int mesFimProjecao = mesAnoFimProjecao[0];
2601 int anoFimProjecao = mesAnoFimProjecao[1];
2602
2603 int auxMes = mesInicioProjecao;
2604 int auxAno = anoInicioProjecao;
2605
2606 int quantidadeMeses = 1;
2607 double qtdeAnterior = 0;
2608 while (auxAno < anoFimRealizado || (auxAno == anoFimRealizado && auxMes <= mesFimRealizado)) {
2609 String strMesInicio = Integer.valueOf(auxMes).toString();
2610 if (strMesInicio.length() == 1)
2611 strMesInicio = "0" + strMesInicio;
2612 String strAnoInicio = Integer.valueOf(auxAno).toString();
2613
2614 Double qtde = arfDao.getQtdRealizadaMesAno(indicador, Long.valueOf(strMesInicio), Long.valueOf(strAnoInicio));
2615 double qtdeSerie = 0;
2616 if (qtde != null) {
2617 qtdeSerie = qtdeAnterior + qtde.doubleValue();
2618 qtdeAnterior = qtdeSerie;
2619 }
2620 else
2621 qtdeSerie = qtdeAnterior;
2622
2623 sRealizado.add(new Double(qtdeSerie));
2624 sMeses.add(Integer.valueOf(quantidadeMeses));
2625
2626 auxMes++;
2627 if (auxMes == 13) {
2628 auxMes = 1;
2629 auxAno++;
2630 }
2631 quantidadeMeses++;
2632 }
2633
2634 int xProjetado = 0;
2635
2636 if (anoFimProjecao <= anoFimRealizado) {
2637 xProjetado = quantidadeMeses + (mesFimProjecao - mesFimRealizado);
2638 }
2639 else {
2640 while (anoFimProjecao > anoFimRealizado) {
2641 mesFimRealizado++;
2642 if (mesFimRealizado == 13) {
2643 anoFimRealizado++;
2644 mesFimRealizado = 1;
2645 }
2646 xProjetado++;
2647 }
2648 xProjetado += quantidadeMeses + mesFimProjecao;
2649 }
2650
2651 return calcularPrevistoMes(sMeses, sRealizado, xProjetado);
2652
2653 } catch (Exception e) {
2654 this.logger.error(e);
2655 return 0;
2656 }
2657
2658 }
2659
2660
2661
2662
2663
2664
2665
2666
2667 public double calcularPrevistoMes(Collection meses, Collection realizado, int mesPrevisao) {
2668 double mediaRealizado = Util.calculaMediaValores(realizado);
2669 double mediaMeses = Util.calculaMediaValoresInteger(meses);
2670 double A = calcularConstanteCalculoPrevisao(meses, realizado, mediaRealizado, mediaMeses);
2671 double B = calcularIncrementoMedioEixoY(meses.toArray(), realizado.toArray(), mediaRealizado, mediaMeses);
2672 return A + (B * mesPrevisao);
2673
2674 }
2675
2676 private double calcularConstanteCalculoPrevisao(Collection meses, Collection realizado, double mediaRealizado, double mediaMeses) {
2677 double B = calcularIncrementoMedioEixoY(meses.toArray(), realizado.toArray(), mediaRealizado, mediaMeses);
2678 return mediaRealizado - (B * mediaMeses);
2679 }
2680
2681 private double calcularIncrementoMedioEixoY(Object[] meses, Object[] realizado, double mediaRealizado, double mediaMeses) {
2682 Arrays.sort(meses);
2683 Arrays.sort(realizado);
2684 double soma1 = 0;
2685 double soma2 = 0;
2686 int i = 0;
2687 int qtdeMeses = meses.length;
2688 while (i < qtdeMeses) {
2689 soma1 = soma1 + (((Integer) meses[i]).intValue() - mediaMeses) * (((Double) realizado[i]).doubleValue() - mediaRealizado);
2690 soma2 = soma2 + Math.pow((((Integer) meses[i]).intValue() - mediaMeses), 2);
2691 i++;
2692 }
2693 if (soma2 == 0)
2694 return 0;
2695 return soma1 / soma2;
2696 }
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708 public List getAcompReferenciaItemFilhosByAri(AcompReferenciaItemAri acompRefItem, OrgaoOrg orgaoResponsavel) throws ECARException {
2709 List lista = new ArrayList();
2710
2711 lista.add(acompRefItem);
2712
2713 try {
2714 ItemEstruturaDao itemDao = new ItemEstruturaDao(request);
2715
2716 List descendentes = itemDao.getDescendentes(acompRefItem.getItemEstruturaIett(), true);
2717
2718 if (descendentes != null && descendentes.size() > 0) {
2719 List codIettDescendentes = new ArrayList();
2720
2721 for (Iterator itDescendentes = descendentes.iterator(); itDescendentes.hasNext();) {
2722 ItemEstruturaIett iett = (ItemEstruturaIett) itDescendentes.next();
2723 codIettDescendentes.add(iett.getCodIett());
2724 }
2725
2726 StringBuilder query = new StringBuilder("select ari from AcompReferenciaItemAri ari").append(" where ari.acompReferenciaAref = ? and ari.itemEstruturaIett.codIett in (:listaItens)").append(" and ari.itemEstruturaIett.indAtivoIett = 'S'");
2727
2728 if (orgaoResponsavel.getCodOrg() != null) {
2729 query.append(" and ( ari.itemEstruturaIett.orgaoOrgByCodOrgaoResponsavel1Iett.codOrg = :orgaoResp ").append("or ( ari.itemEstruturaIett.orgaoOrgByCodOrgaoResponsavel1Iett.codOrg is null ").append("and ari.itemEstruturaIett.itemEstruturaIett.orgaoOrgByCodOrgaoResponsavel1Iett.codOrg = :orgaoResp ) )");
2730 }
2731
2732 Query queryAri = this.getSession().createQuery(query.toString());
2733 queryAri.setParameterList("listaItens", codIettDescendentes);
2734 queryAri.setLong(0, acompRefItem.getAcompReferenciaAref().getCodAref().longValue());
2735
2736 if (orgaoResponsavel.getCodOrg() != null) {
2737 queryAri.setLong("orgaoResp", orgaoResponsavel.getCodOrg().longValue());
2738 }
2739
2740 lista.addAll(queryAri.list());
2741
2742 List listaTemp = new ArrayList();
2743 List listaAri = new ArrayList();
2744 for (Iterator it = lista.iterator(); it.hasNext();) {
2745 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) it.next();
2746
2747 if (!listaTemp.contains(ari.getItemEstruturaIett().getCodIett())) {
2748 listaTemp.add(ari.getItemEstruturaIett().getCodIett());
2749 listaAri.add(ari);
2750 }
2751 }
2752
2753 lista.clear();
2754 lista.addAll(listaAri);
2755
2756 Collections.sort(lista, new Comparator() {
2757 ItemEstruturaDao iettDaoSort = new ItemEstruturaDao(null);
2758
2759 public int compare(Object o1, Object o2) {
2760 AcompReferenciaItemAri ari1 = (AcompReferenciaItemAri) o1;
2761 AcompReferenciaItemAri ari2 = (AcompReferenciaItemAri) o2;
2762
2763 ItemEstruturaIett item1 = ari1.getItemEstruturaIett();
2764 ItemEstruturaIett item2 = ari2.getItemEstruturaIett();
2765 if (iettDaoSort.getAscendenteMaximo(item1).equals(iettDaoSort.getAscendenteMaximo(item2))) {
2766 if (item1.getNivelIett().intValue() == item2.getNivelIett().intValue()) {
2767 return item1.getNomeIett().compareToIgnoreCase(item2.getNomeIett());
2768 }
2769 else {
2770 return item1.getNivelIett().intValue() - item2.getNivelIett().intValue();
2771 }
2772 }
2773 else {
2774 if (item1.getNivelIett().intValue() == item2.getNivelIett().intValue()) {
2775 return item1.getNomeIett().compareToIgnoreCase(item2.getNomeIett());
2776 }
2777 else {
2778 return iettDaoSort.getAscendenteMaximo(item1).getNomeIett().compareToIgnoreCase(iettDaoSort.getAscendenteMaximo(item2).getNomeIett());
2779 }
2780 }
2781 }
2782 });
2783 }
2784 } catch (HibernateException e) {
2785 this.logger.error(e);
2786 throw new ECARException();
2787 }
2788
2789 return lista;
2790 }
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801 public List getAcompReferenciaItemFilhosByAriPorPtoCritico(AcompReferenciaItemAri acompRefItem) throws ECARException {
2802 List lista = new ArrayList();
2803
2804 lista.add(acompRefItem);
2805
2806 try {
2807 ItemEstruturaDao itemDao = new ItemEstruturaDao(request);
2808
2809 List descendentes = itemDao.getDescendentes(acompRefItem.getItemEstruturaIett(), true);
2810
2811 if (descendentes != null && descendentes.size() > 0) {
2812 List codIettDescendentes = new ArrayList();
2813
2814 for (Iterator itDescendentes = descendentes.iterator(); itDescendentes.hasNext();) {
2815 ItemEstruturaIett iett = (ItemEstruturaIett) itDescendentes.next();
2816 codIettDescendentes.add(iett.getCodIett());
2817 }
2818
2819 StringBuilder query = new StringBuilder("select ari from AcompReferenciaItemAri ari").append(" where ari.acompReferenciaAref = ? and ari.itemEstruturaIett.codIett in (:listaItens)").append(" and ari.itemEstruturaIett.indAtivoIett = 'S'");
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831 Query queryAri = this.getSession().createQuery(query.toString());
2832 queryAri.setLong(0, acompRefItem.getAcompReferenciaAref().getCodAref().longValue());
2833 queryAri.setParameterList("listaItens", codIettDescendentes);
2834
2835
2836
2837
2838
2839
2840
2841 lista.addAll(queryAri.list());
2842
2843 List listaTemp = new ArrayList();
2844 List listaAri = new ArrayList();
2845 for (Iterator it = lista.iterator(); it.hasNext();) {
2846 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) it.next();
2847
2848 if (!listaTemp.contains(ari.getItemEstruturaIett().getCodIett())) {
2849
2850
2851
2852 if (ari.getItemEstruturaIett().getPontoCriticoPtcs().size() > 0) {
2853 listaTemp.add(ari.getItemEstruturaIett().getCodIett());
2854 listaAri.add(ari);
2855 }
2856
2857 }
2858 }
2859
2860 lista.clear();
2861 lista.addAll(listaAri);
2862
2863 Collections.sort(lista, new Comparator() {
2864 ItemEstruturaDao iettDaoSort = new ItemEstruturaDao(null);
2865
2866 public int compare(Object o1, Object o2) {
2867 AcompReferenciaItemAri ari1 = (AcompReferenciaItemAri) o1;
2868 AcompReferenciaItemAri ari2 = (AcompReferenciaItemAri) o2;
2869
2870 ItemEstruturaIett item1 = ari1.getItemEstruturaIett();
2871 ItemEstruturaIett item2 = ari2.getItemEstruturaIett();
2872 if (iettDaoSort.getAscendenteMaximo(item1).equals(iettDaoSort.getAscendenteMaximo(item2))) {
2873 if (item1.getNivelIett().intValue() == item2.getNivelIett().intValue()) {
2874 return item1.getNomeIett().compareToIgnoreCase(item2.getNomeIett());
2875 }
2876 else {
2877 return item1.getNivelIett().intValue() - item2.getNivelIett().intValue();
2878 }
2879 }
2880 else {
2881 if (item1.getNivelIett().intValue() == item2.getNivelIett().intValue()) {
2882 return item1.getNomeIett().compareToIgnoreCase(item2.getNomeIett());
2883 }
2884 else {
2885 return iettDaoSort.getAscendenteMaximo(item1).getNomeIett().compareToIgnoreCase(iettDaoSort.getAscendenteMaximo(item2).getNomeIett());
2886 }
2887 }
2888 }
2889 });
2890 }
2891 } catch (HibernateException e) {
2892 this.logger.error(e);
2893 throw new ECARException();
2894 }
2895
2896 return lista;
2897 }
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907 public List getAcompReferenciaItemFilhosByIett(final String strCodIetts, final AcompReferenciaAref aref, final OrgaoOrg orgaoResponsavel) throws ECARException {
2908
2909 final ItemEstruturaDao itemDao = new ItemEstruturaDao(null);
2910 List<AcompReferenciaItemAri> lista = new ArrayList<AcompReferenciaItemAri>();
2911
2912 if (!strCodIetts.equals("")) {
2913 String[] codIett = strCodIetts.split(";");
2914 Set<Long> codIetts = new HashSet<Long>();
2915 for (int i = 0; i < codIett.length; i++) {
2916 if (!"".equals(codIett[i])) {
2917 ItemEstruturaIettMin item = (ItemEstruturaIettMin) itemDao.buscar(ItemEstruturaIettMin.class, Long.valueOf(codIett[i]));
2918 codIetts.add(item.getCodIett());
2919 List<ItemEstruturaIettMin> descendentes = itemDao.getDescendentesMin(item, false);
2920
2921 for (ItemEstruturaIettMin element : descendentes) {
2922 codIetts.add(element.getCodIett());
2923 }
2924 }
2925 }
2926
2927 if (!codIetts.isEmpty()) {
2928 StringBuilder sql = new StringBuilder();
2929 sql.append("select ari from AcompReferenciaItemAri ari").append(" where ari.acompReferenciaAref.codAref = :codAref").append(" and ari.itemEstruturaIett.indAtivoIett = 'S' ");
2930
2931 if (codIetts.size() == 1) {
2932 sql.append(" and ari.itemEstruturaIett.codIett = :codIett ");
2933 }
2934 else {
2935 sql.append(" and ari.itemEstruturaIett.codIett in (:codIett) ");
2936 }
2937
2938 if (orgaoResponsavel != null && orgaoResponsavel.getCodOrg() != null) {
2939 sql.append(" and ( ari.itemEstruturaIett.orgaoOrgByCodOrgaoResponsavel1Iett.codOrg = :orgaoResp ").append("or ( ari.itemEstruturaIett.orgaoOrgByCodOrgaoResponsavel1Iett.codOrg is null ").append("and ari.itemEstruturaIett.itemEstruturaIett.orgaoOrgByCodOrgaoResponsavel1Iett.codOrg = :orgaoResp ) )");
2940 }
2941
2942 Query queryAri = this.getSession().createQuery(sql.toString());
2943
2944 queryAri.setLong("codAref", aref.getCodAref().longValue());
2945
2946 if (codIetts.size() == 1) {
2947 List<Long> listCodIetts = new ArrayList<Long>(codIetts);
2948 queryAri.setLong("codIett", ((Long) listCodIetts.get(0)).longValue());
2949 }
2950 else {
2951 queryAri.setParameterList("codIett", codIetts);
2952 }
2953
2954 if (orgaoResponsavel != null && orgaoResponsavel.getCodOrg() != null) {
2955 queryAri.setLong("orgaoResp", orgaoResponsavel.getCodOrg().longValue());
2956 }
2957 lista.addAll((ArrayList<AcompReferenciaItemAri>) queryAri.list());
2958 }
2959 }
2960 return lista;
2961 }
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972 public List getAcompReferenciaItemFilhosByIettPorPtosCriticos(final String strCodIetts, final AcompReferenciaAref aref, final OrgaoOrg orgaoResponsavel) throws ECARException {
2973
2974 final ItemEstruturaDao itemDao = new ItemEstruturaDao(null);
2975 List<AcompReferenciaItemAri> lista = new ArrayList<AcompReferenciaItemAri>();
2976
2977 if (!strCodIetts.equals("")) {
2978 String[] codIett = strCodIetts.split(";");
2979 Set<Long> codIetts = new HashSet<Long>();
2980 for (int i = 0; i < codIett.length; i++) {
2981 if (!"".equals(codIett[i])) {
2982 ItemEstruturaIettMin item = (ItemEstruturaIettMin) itemDao.buscar(ItemEstruturaIettMin.class, Long.valueOf(codIett[i]));
2983 codIetts.add(item.getCodIett());
2984 List<ItemEstruturaIettMin> descendentes = itemDao.getDescendentesMin(item, false);
2985
2986 for (ItemEstruturaIettMin element : descendentes) {
2987 codIetts.add(element.getCodIett());
2988 }
2989 }
2990 }
2991
2992 if (!codIetts.isEmpty()) {
2993 StringBuilder sql = new StringBuilder();
2994 sql.append("select ari from AcompReferenciaItemAri ari").append(" where ari.acompReferenciaAref.codAref = :codAref").append(" and ari.itemEstruturaIett.indAtivoIett = 'S' ");
2995
2996 if (codIetts.size() == 1) {
2997 sql.append(" and ari.itemEstruturaIett.codIett = :codIett ");
2998 }
2999 else {
3000 sql.append(" and ari.itemEstruturaIett.codIett in (:codIett) ");
3001 }
3002
3003 if (orgaoResponsavel != null && orgaoResponsavel.getCodOrg() != null) {
3004 sql.append(" and ( ari.itemEstruturaIett.orgaoOrgByCodOrgaoResponsavel1Iett.codOrg = :orgaoResp ").append("or ( ari.itemEstruturaIett.orgaoOrgByCodOrgaoResponsavel1Iett.codOrg is null ").append("and ari.itemEstruturaIett.itemEstruturaIett.orgaoOrgByCodOrgaoResponsavel1Iett.codOrg = :orgaoResp ) )");
3005 }
3006
3007 Query queryAri = this.getSession().createQuery(sql.toString());
3008
3009 queryAri.setLong("codAref", aref.getCodAref().longValue());
3010
3011 if (codIetts.size() == 1) {
3012 List<Long> listCodIetts = new ArrayList<Long>(codIetts);
3013 queryAri.setLong("codIett", ((Long) listCodIetts.get(0)).longValue());
3014 }
3015 else {
3016 queryAri.setParameterList("codIett", codIetts);
3017 }
3018
3019 if (orgaoResponsavel != null && orgaoResponsavel.getCodOrg() != null) {
3020 queryAri.setLong("orgaoResp", orgaoResponsavel.getCodOrg().longValue());
3021 }
3022 lista.addAll((ArrayList<AcompReferenciaItemAri>) queryAri.list());
3023 }
3024 }
3025
3026
3027 List<AcompReferenciaItemAri> listaRetorno = new ArrayList<AcompReferenciaItemAri>();
3028 for (AcompReferenciaItemAri obj : lista) {
3029
3030 if (obj.getItemEstruturaIett().getPontoCriticoPtcs().size() > 0) {
3031 listaRetorno.add(obj);
3032 }
3033 }
3034
3035 return listaRetorno;
3036 }
3037
3038
3039
3040
3041
3042
3043
3044
3045 public AcompReferenciaItemAri getAriByIett(Collection aris, ItemEstruturaIett iett) throws ECARException {
3046
3047 try {
3048 for (Iterator it = aris.iterator(); it.hasNext();) {
3049 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) it.next();
3050 if (ari.getItemEstruturaIett().equals(iett)) {
3051 return ari;
3052 }
3053 }
3054 return null;
3055 } catch (Exception e) {
3056 this.logger.error(e);
3057 throw new ECARException(e);
3058 }
3059 }
3060
3061
3062
3063
3064
3065 public List getDadosEvolucaoPosicao(HttpServletRequest request) throws ECARException {
3066 try {
3067 AcompReferenciaItemDao acompReferenciaItemDao = new AcompReferenciaItemDao(null);
3068 TipoFuncAcompDao tipoFuncAcompDao = new TipoFuncAcompDao(null);
3069 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(null);
3070 OrgaoDao orgaoDao = new OrgaoDao(null);
3071 OrgaoOrg orgao = null;
3072
3073 List tpfaOrdenadosEstrutura = tipoFuncAcompDao.getFuncaoAcompOrderByEstruturas();
3074
3075 if (!"".equals(Pagina.getParamStr(request, "codOrgao"))) {
3076 orgao = (OrgaoOrg) orgaoDao.buscar(OrgaoOrg.class, Long.valueOf(Pagina.getParamStr(request, "codOrgao")));
3077 }
3078
3079 Collection periodosConsiderados = (Collection) request.getSession().getAttribute("periodosConsiderados" + Pagina.getParamStr(request, "codOrgao"));
3080
3081 StatusRelatorioSrl statusLiberado = (StatusRelatorioSrl) itemEstruturaDao.buscar(StatusRelatorioSrl.class, Long.valueOf(AcompReferenciaItemDao.STATUS_LIBERADO));
3082
3083 List niveis = (List) request.getAttribute("listNiveis");
3084
3085 UsuarioUsu usuario = null;
3086 Set gruposAcessoUsuario = null;
3087 if (((ecar.login.SegurancaECAR) request.getSession().getAttribute("seguranca")) != null) {
3088 usuario = ((ecar.login.SegurancaECAR) request.getSession().getAttribute("seguranca")).getUsuario();
3089 gruposAcessoUsuario = ((ecar.login.SegurancaECAR) request.getSession().getAttribute("seguranca")).getGruposAcesso();
3090 }
3091 Boolean itensSemInformacaoNivelPlanejamento = new Boolean(false);
3092 if ("S".equals(Pagina.getParamStr(request, "semInformacaoNivelPlanejamento"))) {
3093 itensSemInformacaoNivelPlanejamento = new Boolean(true);
3094 }
3095 List itensAcompanhamentos = (List) acompReferenciaItemDao.getItensAcompanhamentoInPeriodosByOrgaoResp(periodosConsiderados, niveis, orgao, usuario, gruposAcessoUsuario, null, null, itensSemInformacaoNivelPlanejamento, null, null)[0];
3096
3097
3098
3099
3100
3101 List listAvaliacoes = new ArrayList();
3102
3103 for (Iterator itPeriodos = periodosConsiderados.iterator(); itPeriodos.hasNext();) {
3104 AcompReferenciaAref acompReferencia = (AcompReferenciaAref) itPeriodos.next();
3105
3106 Iterator itItens = itensAcompanhamentos.iterator();
3107
3108 PosicaoBean posicaoBean = new PosicaoBean();
3109 posicaoBean.setARef(acompReferencia);
3110 List coresPosicoes = new ArrayList();
3111
3112 while (itItens.hasNext()) {
3113
3114
3115
3116
3117
3118
3119
3120
3121 AtributoEstruturaListagemItens aeIett = (AtributoEstruturaListagemItens) itItens.next();
3122
3123 ItemEstruturaIett item = aeIett.getItem();
3124
3125 Map map = acompReferenciaItemDao.criarMapPeriodoAri(periodosConsiderados, item);
3126
3127 if (!map.containsKey(acompReferencia)) {
3128
3129 coresPosicoes.add("N/A");
3130 }
3131 else {
3132 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) map.get(acompReferencia);
3133
3134
3135 if (ari.getStatusRelatorioSrl().equals(statusLiberado) || acompReferencia.getTipoAcompanhamentoTa().getIndLiberarAcompTa().equals(Pagina.NAO)) {
3136 List relatorios = acompReferenciaItemDao.getAcompRelatorioArelOrderByFuncaoAcomp(ari, tpfaOrdenadosEstrutura);
3137
3138 for (Iterator itRelatorios = relatorios.iterator(); itRelatorios.hasNext();) {
3139 AcompRelatorioArel relatorio = (AcompRelatorioArel) itRelatorios.next();
3140
3141 if (relatorio.getTipoFuncAcompTpfa().getCodTpfa().toString().equals(Pagina.getParamStr(request, "tipoFuncAcompTpfa"))) {
3142 if (relatorio.getCor() != null && "S".equals(relatorio.getIndLiberadoArel())) {
3143 coresPosicoes.add(relatorio.getCor().getCodCor().toString());
3144 }
3145 else {
3146 TipoAcompFuncAcompTafc tafc = new TipoAcompFuncAcompTafc();
3147 TipoAcompFuncAcompDao tafcDao = new TipoAcompFuncAcompDao(request);
3148 tafc = tafcDao.buscar(acompReferencia.getTipoAcompanhamentoTa().getCodTa(), relatorio.getTipoFuncAcompTpfa().getCodTpfa());
3149
3150 if (tafc.getIndRegistroPosicaoTafc() != null && tafc.getIndRegistroPosicaoTafc().equals("O")) {
3151 coresPosicoes.add("BRANCO");
3152 }
3153 }
3154 }
3155 }
3156 }
3157
3158 else {
3159 List relatorios = acompReferenciaItemDao.getAcompRelatorioArelOrderByFuncaoAcomp(ari, tpfaOrdenadosEstrutura);
3160
3161 if (ari.getAcompRelatorioArels() != null && ari.getAcompRelatorioArels().size() > 0) {
3162 for (Iterator itRelatorios = relatorios.iterator(); itRelatorios.hasNext();) {
3163 AcompRelatorioArel relatorio = (AcompRelatorioArel) itRelatorios.next();
3164
3165 if (relatorio.getTipoFuncAcompTpfa().getCodTpfa().toString().equals(Pagina.getParamStr(request, "tipoFuncAcompTpfa"))) {
3166 TipoAcompFuncAcompTafc tafc = new TipoAcompFuncAcompTafc();
3167 TipoAcompFuncAcompDao tafcDao = new TipoAcompFuncAcompDao(request);
3168 tafc = tafcDao.buscar(acompReferencia.getTipoAcompanhamentoTa().getCodTa(), relatorio.getTipoFuncAcompTpfa().getCodTpfa());
3169
3170
3171 if (tafc.getIndRegistroPosicaoTafc() != null && tafc.getIndRegistroPosicaoTafc().equals("O") && (relatorio.getIndLiberadoArel() == null || relatorio.getIndLiberadoArel().equals(Pagina.NAO))) {
3172
3173 coresPosicoes.add("N/L");
3174 }
3175 }
3176 }
3177 }
3178 else {
3179
3180 coresPosicoes.add("N/A");
3181 }
3182 }
3183 }
3184
3185 }
3186
3187 posicaoBean.setCor(coresPosicoes);
3188 listAvaliacoes.add(posicaoBean);
3189 }
3190
3191 return listAvaliacoes;
3192
3193 } catch (Exception e) {
3194 this.logger.error(e);
3195 throw new ECARException(e);
3196 }
3197
3198 }
3199
3200
3201
3202
3203
3204 public List getDadosEvolucaoPosicaoGrafico(HttpServletRequest request) throws ECARException {
3205 try {
3206 AcompReferenciaItemDao acompReferenciaItemDao = new AcompReferenciaItemDao(null);
3207 TipoFuncAcompDao tipoFuncAcompDao = new TipoFuncAcompDao(null);
3208 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(null);
3209 OrgaoDao orgaoDao = new OrgaoDao(null);
3210 OrgaoOrg orgao = null;
3211 String tipoFuncAcompTpfa = Pagina.getParamStr(request, "tipoFuncAcompTpfa");
3212
3213 List tpfaOrdenadosEstrutura = tipoFuncAcompDao.getFuncaoAcompOrderByEstruturas();
3214
3215 if (!"".equals(Pagina.getParamStr(request, "codOrgao"))) {
3216 orgao = (OrgaoOrg) orgaoDao.buscar(OrgaoOrg.class, Long.valueOf(Pagina.getParamStr(request, "codOrgao")));
3217 }
3218
3219 Collection periodosConsiderados = (Collection) request.getSession().getAttribute("periodosConsiderados" + Pagina.getParamStr(request, "codOrgao"));
3220
3221 StatusRelatorioSrl statusLiberado = (StatusRelatorioSrl) itemEstruturaDao.buscar(StatusRelatorioSrl.class, Long.valueOf(AcompReferenciaItemDao.STATUS_LIBERADO));
3222
3223 List niveis = (List) request.getAttribute("listNiveis");
3224
3225 UsuarioUsu usuario = null;
3226 Set gruposAcessoUsuario = null;
3227 if (((ecar.login.SegurancaECAR) request.getSession().getAttribute("seguranca")) != null) {
3228 usuario = ((ecar.login.SegurancaECAR) request.getSession().getAttribute("seguranca")).getUsuario();
3229 gruposAcessoUsuario = ((ecar.login.SegurancaECAR) request.getSession().getAttribute("seguranca")).getGruposAcesso();
3230 }
3231 Boolean itensSemInformacaoNivelPlanejamento = new Boolean(false);
3232 if ("S".equals(Pagina.getParamStr(request, "semInformacaoNivelPlanejamento"))) {
3233 itensSemInformacaoNivelPlanejamento = new Boolean(true);
3234 }
3235 List itensAcompanhamentos = (List) acompReferenciaItemDao.getItensAcompanhamentoInPeriodosByOrgaoResp(periodosConsiderados, niveis, orgao, usuario, gruposAcessoUsuario, null, null, itensSemInformacaoNivelPlanejamento, null, null)[0];
3236
3237
3238
3239
3240
3241 List listAvaliacoes = new ArrayList();
3242
3243 for (Iterator itPeriodos = periodosConsiderados.iterator(); itPeriodos.hasNext();) {
3244 AcompReferenciaAref acompReferencia = (AcompReferenciaAref) itPeriodos.next();
3245
3246 Iterator itItens = itensAcompanhamentos.iterator();
3247
3248 PosicaoBean posicaoBean = new PosicaoBean();
3249 posicaoBean.setARef(acompReferencia);
3250 List coresPosicoes = new ArrayList();
3251
3252 while (itItens.hasNext()) {
3253
3254
3255
3256
3257
3258
3259
3260
3261 AtributoEstruturaListagemItens aeIett = (AtributoEstruturaListagemItens) itItens.next();
3262
3263 ItemEstruturaIett item = aeIett.getItem();
3264
3265 Map map = acompReferenciaItemDao.criarMapPeriodoAri(periodosConsiderados, item);
3266
3267 if (!map.containsKey(acompReferencia)) {
3268
3269
3270 }
3271 else {
3272 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) map.get(acompReferencia);
3273
3274
3275 if (ari.getStatusRelatorioSrl().equals(statusLiberado) || acompReferencia.getTipoAcompanhamentoTa().getIndLiberarAcompTa().equals(Pagina.NAO)) {
3276 List relatorios = acompReferenciaItemDao.getAcompRelatorioArelOrderByFuncaoAcomp(ari, tpfaOrdenadosEstrutura);
3277
3278 for (Iterator itRelatorios = relatorios.iterator(); itRelatorios.hasNext();) {
3279 AcompRelatorioArel relatorio = (AcompRelatorioArel) itRelatorios.next();
3280
3281 if (relatorio.getTipoFuncAcompTpfa().getCodTpfa().toString().equals(tipoFuncAcompTpfa)) {
3282 if (relatorio.getCor() != null && "S".equals(relatorio.getIndLiberadoArel())) {
3283 coresPosicoes.add(relatorio.getCor().getCodCor().toString());
3284 }
3285 else {
3286 TipoAcompFuncAcompTafc tafc = new TipoAcompFuncAcompTafc();
3287 TipoAcompFuncAcompDao tafcDao = new TipoAcompFuncAcompDao(request);
3288 tafc = tafcDao.buscar(acompReferencia.getTipoAcompanhamentoTa().getCodTa(), relatorio.getTipoFuncAcompTpfa().getCodTpfa());
3289
3290 if (tafc.getIndRegistroPosicaoTafc() != null && tafc.getIndRegistroPosicaoTafc().equals("O")) {
3291 coresPosicoes.add(Cor.BRANCO);
3292 }
3293 }
3294 }
3295 }
3296 }
3297
3298 else {
3299 List relatorios = acompReferenciaItemDao.getAcompRelatorioArelOrderByFuncaoAcomp(ari, tpfaOrdenadosEstrutura);
3300
3301 if (ari.getAcompRelatorioArels() != null && ari.getAcompRelatorioArels().size() > 0) {
3302 for (Iterator itRelatorios = relatorios.iterator(); itRelatorios.hasNext();) {
3303 AcompRelatorioArel relatorio = (AcompRelatorioArel) itRelatorios.next();
3304
3305 if (relatorio.getTipoFuncAcompTpfa().getCodTpfa().toString().equals(tipoFuncAcompTpfa)) {
3306 TipoAcompFuncAcompTafc tafc = new TipoAcompFuncAcompTafc();
3307 TipoAcompFuncAcompDao tafcDao = new TipoAcompFuncAcompDao(request);
3308 tafc = tafcDao.buscar(acompReferencia.getTipoAcompanhamentoTa().getCodTa(), relatorio.getTipoFuncAcompTpfa().getCodTpfa());
3309
3310
3311 if (tafc.getIndRegistroPosicaoTafc() != null && tafc.getIndRegistroPosicaoTafc().equals("O") && (relatorio.getIndLiberadoArel() == null || relatorio.getIndLiberadoArel().equals(Pagina.NAO))) {
3312
3313 coresPosicoes.add(Cor.NAO_LIBERADO);
3314 }
3315 }
3316 }
3317 }
3318 else {
3319
3320 coresPosicoes.add(Cor.NAO_ACOMPANHADO);
3321 }
3322 }
3323 }
3324
3325 }
3326
3327 posicaoBean.setCor(coresPosicoes);
3328 listAvaliacoes.add(posicaoBean);
3329 }
3330
3331 return listAvaliacoes;
3332
3333 } catch (Exception e) {
3334 this.logger.error(e);
3335 throw new ECARException(e);
3336 }
3337
3338 }
3339
3340 public List getUltimosAcompanhamentosItem(AcompReferenciaItemAri ari, TipoFuncAcompTpfa tpfa, Integer qtdeUltimosAcompanhamentos) throws HibernateException, ECARException {
3341 try {
3342 StringBuilder str = new StringBuilder();
3343
3344 str.append("select arel from AcompRelatorioArel arel");
3345 str.append(" join arel.acompReferenciaItemAri as ari");
3346 str.append(" join ari.acompReferenciaAref as aref");
3347 str.append(" where ari.itemEstruturaIett.codIett = :codItem");
3348 str.append(" and ari.itemEstruturaIett.indAtivoIett = 'S'");
3349 str.append(" and arel.tipoFuncAcompTpfa.codTpfa = :codTpfa");
3350 str.append(" and arel.situacaoSit is not null");
3351 str.append(" and aref.tipoAcompanhamentoTa.codTa = :codTa");
3352 if (qtdeUltimosAcompanhamentos != null) {
3353 str.append(" and (aref.anoAref <> :ano");
3354 str.append(" or (aref.anoAref = :ano and aref.mesAref <> :mes))");
3355 }
3356 str.append(" order by aref.anoAref desc, aref.mesAref desc");
3357
3358 Query query = this.getSession().createQuery(str.toString());
3359 query.setLong("codItem", ari.getItemEstruturaIett().getCodIett().longValue());
3360 query.setLong("codTpfa", tpfa.getCodTpfa().longValue());
3361 query.setLong("codTa", ari.getAcompReferenciaAref().getTipoAcompanhamentoTa().getCodTa().longValue());
3362
3363 if (qtdeUltimosAcompanhamentos != null) {
3364 query.setString("ano", ari.getAcompReferenciaAref().getAnoAref());
3365 query.setString("mes", ari.getAcompReferenciaAref().getMesAref());
3366 query.setMaxResults(qtdeUltimosAcompanhamentos.intValue());
3367 }
3368
3369 return query.list();
3370
3371 } catch (HibernateException e) {
3372 throw new ECARException(e);
3373 }
3374 }
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386 public List getAcompRelatorioAcompanhamentoByAris(List codArisSelecionados, AcompReferenciaAref mesReferencia, String opcaoModelo, String chave, String codTpfa) throws ECARException {
3387 try {
3388 StringBuilder sql = new StringBuilder("select arel from AcompRelatorioArel arel");
3389
3390 sql.append(" where ");
3391 sql.append(" arel.acompReferenciaItemAri.itemEstruturaIett.indAtivoIett = 'S'");
3392
3393 if ("ECAR-001B".equalsIgnoreCase(opcaoModelo) && !"".equals(chave)) {
3394 sql.append(" and arel.acompReferenciaItemAri.itemEstruturaIett.orgaoOrgByCodOrgaoResponsavel1Iett.codOrg = :chave ");
3395 }
3396 else if ("ECAR-002B".equalsIgnoreCase(opcaoModelo) && !"".equals(chave)) {
3397 sql.append(" and arel.cor.codCor = :chave ");
3398 }
3399
3400 if (codArisSelecionados != null && codArisSelecionados.size() > 1) {
3401 sql.append(" and arel.acompReferenciaItemAri.codAri in (:listaAris) ");
3402 }
3403 else if (codArisSelecionados != null && !codArisSelecionados.isEmpty()) {
3404 sql.append(" and arel.acompReferenciaItemAri.codAri = :listaAris ");
3405 }
3406
3407 if (!"".equals(codTpfa)) {
3408 sql.append(" and arel.tipoFuncAcompTpfa.codTpfa = :codTpfa");
3409 }
3410
3411 sql.append(" and arel.acompReferenciaItemAri.acompReferenciaAref.codAref = :codAref").append(" order by arel.acompReferenciaItemAri.itemEstruturaIett.nomeIett");
3412
3413 Query q = this.session.createQuery(sql.toString());
3414
3415 q.setLong("codAref", mesReferencia.getCodAref().longValue());
3416
3417 if (!"".equals(chave)) {
3418 q.setLong("chave", Long.valueOf(chave).longValue());
3419 }
3420
3421 if (codArisSelecionados != null && codArisSelecionados.size() > 1) {
3422 q.setParameterList("listaAris", codArisSelecionados);
3423 }
3424 else if (codArisSelecionados != null && !codArisSelecionados.isEmpty()) {
3425 q.setLong("listaAris", ((Long) codArisSelecionados.get(0)).longValue());
3426 }
3427
3428 if (!"".equals(codTpfa)) {
3429 q.setLong("codTpfa", Long.valueOf(codTpfa).longValue());
3430 }
3431
3432 List retorno = q.list();
3433
3434 if (retorno != null && !retorno.isEmpty()) {
3435
3436
3437
3438 List arelsTpfaOrdenados = this.getAcompRelatorioArelOrderByFuncaoAcomp(retorno, new TipoFuncAcompDao(null).getFuncaoAcompOrderByEstruturasHierarquicamente());
3439 ordenarListaRelatorioAcompanhamento(arelsTpfaOrdenados, opcaoModelo);
3440 retorno.clear();
3441 retorno.addAll(arelsTpfaOrdenados);
3442 }
3443
3444 return retorno;
3445
3446 } catch (HibernateException e) {
3447 e.printStackTrace();
3448 this.logger.error(e);
3449 throw new ECARException(e);
3450 }
3451 }
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472 private void ordenarListaRelatorioAcompanhamento(List lista, String opcaoModelo) throws ECARException {
3473
3474
3475
3476 if (RELATORIO_ORGAO.equals(opcaoModelo)) {
3477
3478
3479
3480
3481
3482
3483 boolean ppa = false;
3484 if (lista != null && !lista.isEmpty()) {
3485 AcompRelatorioArel arel = (AcompRelatorioArel) lista.get(0);
3486 ppa = arel.getAcompReferenciaItemAri().getAcompReferenciaAref().getTipoAcompanhamentoTa().getDescricaoTa().contains("PPA");
3487 }
3488
3489 if (!ppa) {
3490 ordenarArelsPorIettsConfigurados(lista);
3491 }
3492 else {
3493 Collections.sort(lista, new Comparator() {
3494 public int compare(Object arg1, Object arg2) {
3495
3496 AcompRelatorioArel arel1 = (AcompRelatorioArel) arg1;
3497 AcompRelatorioArel arel2 = (AcompRelatorioArel) arg2;
3498
3499 ItemEstruturaIett iett1 = arel1.getAcompReferenciaItemAri().getItemEstruturaIett();
3500 ItemEstruturaIett iett2 = arel2.getAcompReferenciaItemAri().getItemEstruturaIett();
3501
3502 return iett1.getSiglaIett().compareTo(iett2.getSiglaIett());
3503 }
3504
3505 });
3506 }
3507
3508 Collections.sort(lista, new Comparator() {
3509 public int compare(Object arg1, Object arg2) {
3510
3511 AcompRelatorioArel arel1 = (AcompRelatorioArel) arg1;
3512 AcompRelatorioArel arel2 = (AcompRelatorioArel) arg2;
3513
3514 OrgaoOrg org1 = arel1.getAcompReferenciaItemAri().getItemEstruturaIett().getOrgaoOrgByCodOrgaoResponsavel1Iett();
3515 OrgaoOrg org2 = arel2.getAcompReferenciaItemAri().getItemEstruturaIett().getOrgaoOrgByCodOrgaoResponsavel1Iett();
3516
3517 if (org1 == null && org2 == null)
3518 return 0;
3519 if (org1 != null && org2 == null)
3520 return 1;
3521 if (org1 == null && org2 != null)
3522 return -1;
3523
3524 return org1.getSiglaOrg().compareTo(org2.getSiglaOrg());
3525 }
3526
3527 });
3528 }
3529
3530
3531 else if (RELATORIO_ORGAO_ESPECIFICO.equals(opcaoModelo)) {
3532 Collections.sort(lista, new Comparator() {
3533 public int compare(Object arg1, Object arg2) {
3534
3535 AcompRelatorioArel arel1 = (AcompRelatorioArel) arg1;
3536 AcompRelatorioArel arel2 = (AcompRelatorioArel) arg2;
3537
3538 Cor cor1 = arel1.getCor();
3539 Cor cor2 = arel2.getCor();
3540
3541 if (cor1 == null && cor2 == null)
3542 return 0;
3543 if (cor1 != null && cor2 == null)
3544 return 1;
3545 if (cor1 == null && cor2 != null)
3546 return -1;
3547
3548 return cor1.getOrdemCor().compareTo(cor2.getOrdemCor());
3549 }
3550
3551 });
3552
3553 ordenarArelsPorIettsConfigurados(lista);
3554
3555 }
3556
3557
3558 else if (RELATORIO_SITUACAO_ESPECIFICO.equals(opcaoModelo)) {
3559
3560 ordenarArelsPorIettsConfigurados(lista);
3561
3562 Collections.sort(lista, new Comparator() {
3563 public int compare(Object arg1, Object arg2) {
3564
3565 AcompRelatorioArel arel1 = (AcompRelatorioArel) arg1;
3566 AcompRelatorioArel arel2 = (AcompRelatorioArel) arg2;
3567
3568 OrgaoOrg org1 = arel1.getAcompReferenciaItemAri().getItemEstruturaIett().getOrgaoOrgByCodOrgaoResponsavel1Iett();
3569 OrgaoOrg org2 = arel2.getAcompReferenciaItemAri().getItemEstruturaIett().getOrgaoOrgByCodOrgaoResponsavel1Iett();
3570
3571 if (org1 == null && org2 == null)
3572 return 0;
3573 if (org1 != null && org2 == null)
3574 return 1;
3575 if (org1 == null && org2 != null)
3576 return -1;
3577
3578 return org1.getSiglaOrg().compareTo(org2.getSiglaOrg());
3579 }
3580
3581 });
3582 }
3583
3584
3585 else if (RELATORIO_SITUACAO.equals(opcaoModelo)) {
3586
3587
3588 ordenarArelsPorIettsConfigurados(lista);
3589
3590 Collections.sort(lista, new Comparator() {
3591 public int compare(Object arg1, Object arg2) {
3592
3593 AcompRelatorioArel arel1 = (AcompRelatorioArel) arg1;
3594 AcompRelatorioArel arel2 = (AcompRelatorioArel) arg2;
3595
3596 OrgaoOrg org1 = arel1.getAcompReferenciaItemAri().getItemEstruturaIett().getOrgaoOrgByCodOrgaoResponsavel1Iett();
3597 OrgaoOrg org2 = arel2.getAcompReferenciaItemAri().getItemEstruturaIett().getOrgaoOrgByCodOrgaoResponsavel1Iett();
3598
3599 if (org1 == null && org2 == null)
3600 return 0;
3601 if (org1 != null && org2 == null)
3602 return 1;
3603 if (org1 == null && org2 != null)
3604 return -1;
3605
3606 return org1.getSiglaOrg().compareTo(org2.getSiglaOrg());
3607 }
3608
3609 });
3610
3611 Collections.sort(lista, new Comparator() {
3612 public int compare(Object arg1, Object arg2) {
3613
3614 AcompRelatorioArel arel1 = (AcompRelatorioArel) arg1;
3615 AcompRelatorioArel arel2 = (AcompRelatorioArel) arg2;
3616
3617 Cor cor1 = arel1.getCor();
3618 Cor cor2 = arel2.getCor();
3619
3620 if (cor1 == null && cor2 == null)
3621 return 0;
3622 if (cor1 != null && cor2 == null)
3623 return 1;
3624 if (cor1 == null && cor2 != null)
3625 return -1;
3626
3627 return cor1.getOrdemCor().compareTo(cor2.getOrdemCor());
3628 }
3629
3630 });
3631 }
3632
3633
3634 else if (RELATORIO_ESTRUTURA.equals(opcaoModelo)) {
3635 ordenarArelsPorIettsConfigurados(lista);
3636 }
3637 }
3638
3639 private void ordenarArelsPorIettsConfigurados(List lista) throws ECARException {
3640 List ietts = new ArrayList();
3641 TipoAcompanhamentoTa tipoAcomp = null;
3642
3643 for (Iterator itAcomps = lista.iterator(); itAcomps.hasNext();) {
3644 AcompRelatorioArel arel = (AcompRelatorioArel) itAcomps.next();
3645
3646 if (tipoAcomp == null) {
3647 tipoAcomp = arel.getAcompReferenciaItemAri().getAcompReferenciaAref().getTipoAcompanhamentoTa();
3648 }
3649 if (!ietts.contains(arel.getAcompReferenciaItemAri().getItemEstruturaIett())) {
3650 ietts.add(arel.getAcompReferenciaItemAri().getItemEstruturaIett());
3651 }
3652 }
3653
3654 List aeList = new ItemEstruturaDao(null).getItensOrdenados(ietts, tipoAcomp);
3655 List arels = new ArrayList();
3656
3657 for (Iterator itAe = aeList.iterator(); itAe.hasNext();) {
3658 AtributoEstruturaListagemItens ae = (AtributoEstruturaListagemItens) itAe.next();
3659
3660 for (Iterator itArels = lista.iterator(); itArels.hasNext();) {
3661 AcompRelatorioArel arel = (AcompRelatorioArel) itArels.next();
3662
3663 if (!arels.contains(arel) && arel.getAcompReferenciaItemAri().getItemEstruturaIett().equals(ae.getItem())) {
3664 arels.add(arel);
3665 }
3666 }
3667 }
3668
3669 lista.clear();
3670 lista.addAll(arels);
3671 }
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682 public List listarAcompReferenciaItemPorDataLimiteFisico(String dataLimiteStr) throws ECARException {
3683 List list = null;
3684
3685 try {
3686 Query query = session.createQuery("from AcompReferenciaItemAri " + "where dataLimiteAcompFisicoAri = :data " + "order by codAri asc ");
3687
3688 Date data = Data.parseDate(dataLimiteStr);
3689 query.setDate("data", data);
3690
3691 list = query.list();
3692 } catch (HibernateException e) {
3693 this.logger.error(e);
3694 throw new ECARException("erro.hibernateException");
3695 }
3696
3697 return list;
3698 }
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709 public List listarAcompReferenciaItemLimitesPorVenctoParecer(String dataLimiteStr) throws ECARException {
3710 List list = null;
3711
3712 try {
3713 Query query = session.createQuery("from AcompRefItemLimitesArli " + "where dataLimiteArli = :data " + "order by dataLimiteArli asc ");
3714
3715 Date data = Data.parseDate(dataLimiteStr);
3716 query.setDate("data", data);
3717
3718 list = query.list();
3719 } catch (HibernateException e) {
3720 this.logger.error(e);
3721 throw new ECARException("erro.hibernateException");
3722 }
3723
3724 return (list == null ? new ArrayList() : list);
3725 }
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737 public List[] listarArisAndIetts(List codAris) throws ECARException {
3738 List listAris = new ArrayList();
3739 List listIetts = new ArrayList();
3740
3741 try {
3742
3743 StringBuilder selectAri = new StringBuilder();
3744 StringBuilder selectIett = new StringBuilder();
3745 StringBuilder where = new StringBuilder();
3746
3747 selectAri.append("select ari from AcompReferenciaItemAri ari where ");
3748 selectIett.append("select ari.itemEstruturaIett from AcompReferenciaItemAri ari where ");
3749
3750 int tamanho = codAris.size() - 1;
3751 int cont = 0;
3752 for (Iterator it = codAris.iterator(); it.hasNext();) {
3753 Object cod = (Object) it.next();
3754
3755 where.append(" ari.codAri = " + cod.toString());
3756
3757 if (cont < tamanho) {
3758 where.append(" or ");
3759 }
3760
3761 cont++;
3762 }
3763
3764 selectAri.append(where.toString());
3765 selectIett.append(where.toString()).append(" and ari.itemEstruturaIett.indAtivoIett = 'S' ");
3766
3767 Query query = this.session.createQuery(selectAri.toString());
3768 listAris = query.list();
3769
3770 query = this.session.createQuery(selectIett.toString());
3771 listIetts = query.list();
3772
3773 } catch (HibernateException e) {
3774 this.logger.error(e);
3775 throw new ECARException("erro.hibernateException");
3776 }
3777
3778 return new List[] { (listAris != null ? listAris : new ArrayList()), (listIetts != null ? listIetts : new ArrayList()) };
3779 }
3780
3781 public List getAcompItemReferenciasOrderByReferecias(AcompReferenciaItemAri referenciaItem, Collection periodosConsiderados) throws ECARException {
3782 try {
3783 StringBuilder query = new StringBuilder("");
3784 int numPeriodos = 1;
3785
3786 if (periodosConsiderados != null) {
3787 query = new StringBuilder("SELECT ari FROM AcompReferenciaItemAri ari ").append(" JOIN ari.acompReferenciaAref as aref").append(" JOIN ari.acompRelatorioArels as arels").append(" JOIN arels.tipoFuncAcompTpfa as tpfa")
3788
3789 .append(" where ari.itemEstruturaIett = ? and aref.codAref in (:listaAcompanhamentos) ").append(" order by ari.acompReferenciaAref.anoAref asc, ari.acompReferenciaAref.mesAref asc");
3790 }
3791 else {
3792 query = new StringBuilder("select ari from AcompReferenciaItemAri ari ").append("where ari.itemEstruturaIett = ?");
3793 }
3794
3795 Query queryAri = this.getSession().createQuery(query.toString());
3796 queryAri.setLong(0, referenciaItem.getItemEstruturaIett().getCodIett().longValue());
3797
3798 List listaCodigosAref = new ArrayList();
3799 if (periodosConsiderados != null) {
3800
3801 numPeriodos = periodosConsiderados.size();
3802
3803 for (Iterator it = periodosConsiderados.iterator(); it.hasNext();) {
3804 AcompReferenciaAref aReferencia = (AcompReferenciaAref) it.next();
3805 listaCodigosAref.add(aReferencia.getCodAref());
3806 }
3807
3808 queryAri.setParameterList("listaAcompanhamentos", listaCodigosAref);
3809 }
3810
3811 return queryAri.list();
3812 } catch (HibernateException e) {
3813 this.logger.error(e);
3814 throw new ECARException(e);
3815 }
3816
3817 }
3818
3819 public Map agrupaRelatorioTpfa_e_Aref(List listaAris, Collection periodosConsiderados) {
3820
3821
3822
3823
3824 Map mapTpfaReferenciaRelatorio = new HashMap<TipoFuncAcompTpfa, Map>();
3825 int numPeriodos = periodosConsiderados.size();
3826
3827
3828
3829
3830 Map mapReferenciaRelatorio = null;
3831
3832 for (Iterator itAris = listaAris.iterator(); itAris.hasNext();) {
3833 AcompReferenciaItemAri ari = (AcompReferenciaItemAri) itAris.next();
3834 Set arels = ari.getAcompRelatorioArels();
3835
3836 for (Iterator itArels = arels.iterator(); itArels.hasNext();) {
3837 AcompRelatorioArel arel = (AcompRelatorioArel) itArels.next();
3838
3839
3840
3841
3842
3843
3844
3845
3846 if (!mapTpfaReferenciaRelatorio.containsKey(arel.getTipoFuncAcompTpfa())) {
3847 mapTpfaReferenciaRelatorio.put(arel.getTipoFuncAcompTpfa(), new HashMap<Long, AcompRelatorioArel>(numPeriodos));
3848 }
3849 else {
3850 Map mapTpfaRef = (Map) mapTpfaReferenciaRelatorio.get(arel.getTipoFuncAcompTpfa());
3851
3852 if (!mapTpfaRef.containsKey(arel.getAcompReferenciaItemAri().getAcompReferenciaAref())) {
3853 mapTpfaRef.put(arel.getAcompReferenciaItemAri().getAcompReferenciaAref(), arel);
3854 }
3855 }
3856 }
3857 }
3858 return mapTpfaReferenciaRelatorio;
3859
3860 }
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873 private boolean usuarioAdministraAcompanhamentoNaoLiberado(ItemEstruturaIett itemEstrutura, Set gruposUsuario, AcompReferenciaItemAri acompAri, TipoAcompanhamentoTa tipoAcompanhamento) throws ECARException {
3874
3875 boolean usuarioAdministraAcompanhamentoNaoLiberado = false;
3876 Boolean administradorAcompanhamento = new Boolean(false);
3877
3878 String exigeLiberarAcompanhamento = tipoAcompanhamento.getIndLiberarAcompTa();
3879
3880
3881 administradorAcompanhamento = new Boolean(validaPermissao.permissaoAcessoReferencia(acompAri.getAcompReferenciaAref().getTipoAcompanhamentoTa(), gruposUsuario));
3882
3883
3884
3885
3886
3887 if (administradorAcompanhamento && exigeLiberarAcompanhamento.equals("S")) {
3888
3889 StatusRelatorioSrl statusLiberado = (StatusRelatorioSrl) buscar(StatusRelatorioSrl.class, Long.valueOf(STATUS_LIBERADO));
3890
3891 if (!acompAri.getStatusRelatorioSrl().equals(statusLiberado)) {
3892
3893 usuarioAdministraAcompanhamentoNaoLiberado = true;
3894 }
3895 }
3896
3897 return usuarioAdministraAcompanhamentoNaoLiberado;
3898 }
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912 private boolean usuarioLogadoEmiteParecerNaoLiberado(ItemEstruturaIett itemEstrutura, List tpfaOrdenadosPorEstrutura, UsuarioUsu usuario, AcompReferenciaItemAri acompAri) throws ECARException {
3913
3914 boolean usuarioLogadoEmiteParecerNaoLiberado = false;
3915 boolean usuarioLogadoEmiteParecer = false;
3916
3917
3918
3919 ItemEstUsutpfuacDao itemEstUsuDao = new ItemEstUsutpfuacDao(request);
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932 List relatorios = getAcompRelatorioArelOrderByFuncaoAcomp(acompAri, tpfaOrdenadosPorEstrutura);
3933 Iterator itRelatorios = relatorios.iterator();
3934
3935 while (itRelatorios.hasNext()) {
3936 AcompRelatorioArel relatorio = (AcompRelatorioArel) itRelatorios.next();
3937
3938 ItemEstUsutpfuacIettutfa itemEstUsu = null;
3939
3940 if (relatorio.getTipoFuncAcompTpfa() != null) {
3941
3942 try {
3943 itemEstUsu = itemEstUsuDao.buscar(itemEstrutura.getCodIett(), relatorio.getTipoFuncAcompTpfa().getCodTpfa());
3944 } catch (ECARException e) {
3945 Logger.getLogger(this.getClass()).error(e);
3946
3947 }
3948
3949 if (itemEstUsu != null && itemEstUsu.getUsuarioUsu() != null) {
3950 usuarioLogadoEmiteParecer = itemEstUsu.getUsuarioUsu().getCodUsu().equals(usuario.getCodUsu());
3951
3952 if (usuarioLogadoEmiteParecer && !"S".equals(relatorio.getIndLiberadoArel())) {
3953 usuarioLogadoEmiteParecerNaoLiberado = true;
3954 break;
3955 }
3956 }
3957 else if (itemEstUsu != null && itemEstUsu.getSisAtributoSatb() != null) {
3958 if (itemEstUsu.getSisAtributoSatb().getUsuarioAtributoUsuas() != null) {
3959 Iterator itUsuarios = itemEstUsu.getSisAtributoSatb().getUsuarioAtributoUsuas().iterator();
3960 while (itUsuarios.hasNext()) {
3961 UsuarioAtributoUsua usuarioAtributoUsua = (UsuarioAtributoUsua) itUsuarios.next();
3962 if (usuarioAtributoUsua.getUsuarioUsu().getCodUsu().equals(usuario.getCodUsu())) {
3963
3964 if (!"S".equals(relatorio.getIndLiberadoArel())) {
3965 usuarioLogadoEmiteParecerNaoLiberado = true;
3966 break;
3967 }
3968
3969 }
3970 }
3971 }
3972 }
3973 }
3974
3975
3976 }
3977
3978
3979
3980 return usuarioLogadoEmiteParecerNaoLiberado;
3981 }
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994 private boolean usuarioLogadoEmiteParecer(ItemEstruturaIett itemEstrutura, List tpfaOrdenadosPorEstrutura, UsuarioUsu usuario, AcompReferenciaItemAri acompAri) throws ECARException {
3995
3996
3997
3998 ItemEstUsutpfuacDao itemEstUsuDao = new ItemEstUsutpfuacDao(request);
3999
4000
4001
4002 boolean usuarioLogadoEmiteParecer = false;
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013 List relatorios = getAcompRelatorioArelOrderByFuncaoAcomp(acompAri, tpfaOrdenadosPorEstrutura);
4014 Iterator itRelatorios = relatorios.iterator();
4015
4016 while (itRelatorios.hasNext()) {
4017 AcompRelatorioArel relatorio = (AcompRelatorioArel) itRelatorios.next();
4018
4019 ItemEstUsutpfuacIettutfa itemEstUsu;
4020
4021 if (relatorio.getTipoFuncAcompTpfa() != null) {
4022 itemEstUsu = itemEstUsuDao.buscar(itemEstrutura.getCodIett(), relatorio.getTipoFuncAcompTpfa().getCodTpfa());
4023
4024
4025 if (itemEstUsu.getUsuarioUsu() != null) {
4026 usuarioLogadoEmiteParecer = itemEstUsu.getUsuarioUsu().getCodUsu().equals(usuario.getCodUsu());
4027 }
4028 else if (itemEstUsu.getSisAtributoSatb() != null) {
4029 if (itemEstUsu.getSisAtributoSatb().getUsuarioAtributoUsuas() != null) {
4030 Iterator itUsuarios = itemEstUsu.getSisAtributoSatb().getUsuarioAtributoUsuas().iterator();
4031 while (itUsuarios.hasNext()) {
4032 UsuarioAtributoUsua usuarioAtributoUsua = (UsuarioAtributoUsua) itUsuarios.next();
4033 if (usuarioAtributoUsua.getUsuarioUsu().getCodUsu().equals(usuario.getCodUsu())) {
4034 usuarioLogadoEmiteParecer = true;
4035 break;
4036 }
4037 }
4038 }
4039 }
4040 if (usuarioLogadoEmiteParecer == true)
4041 break;
4042 }
4043 else
4044 continue;
4045 }
4046
4047
4048
4049 return usuarioLogadoEmiteParecer;
4050 }
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066 private Collection aplicarMinhaVisao(Collection itensEstrutura, TipoAcompanhamentoTa tipoAcompanhamento, Set gruposUsuario, AcompReferenciaAref arefSelecionada, List tpfaOrdenadosPorEstrutura, UsuarioUsu usuario) throws ECARException {
4067 try {
4068 Iterator itItensEstrutura = itensEstrutura.iterator();
4069 ItemEstruturaIett itemEstrutura;
4070 AtributoEstruturaListagemItens atributoEstruturaListagemItens;
4071
4072
4073 boolean permissaoAdministradorAcompanhamento = new EstruturaAcessoDao(null).temPermissoesAcessoAcomp(tipoAcompanhamento, gruposUsuario);
4074
4075 AcompReferenciaItemDao ariDao = new AcompReferenciaItemDao(request);
4076 boolean usuarioLogadoEmiteParecer = false;
4077
4078 while (itItensEstrutura.hasNext()) {
4079
4080 atributoEstruturaListagemItens = (AtributoEstruturaListagemItens) itItensEstrutura.next();
4081 itemEstrutura = atributoEstruturaListagemItens.getItem();
4082
4083
4084 if (itemEstrutura.getNivelIett().intValue() > 1) {
4085
4086 AcompReferenciaItemAri acompAri = ariDao.getAcompReferenciaItemByItemEstruturaIett(arefSelecionada, itemEstrutura);
4087
4088 usuarioLogadoEmiteParecer = usuarioLogadoEmiteParecer(itemEstrutura, tpfaOrdenadosPorEstrutura, usuario, acompAri);
4089
4090 boolean algumFilhoTemPermissaoEditar = false;
4091
4092 if ((acompAri == null || (!usuarioLogadoEmiteParecer && !permissaoAdministradorAcompanhamento))) {
4093
4094 Set itensFilhos = itemEstrutura.getItemEstruturaIetts();
4095
4096
4097
4098 if (itensFilhos != null && itensFilhos.size() > 0) {
4099
4100 Iterator itItensFilhos = itensFilhos.iterator();
4101 ItemEstruturaIett itemFilho;
4102 boolean usuarioEmiteParecerFilho = false;
4103 AcompReferenciaItemAri acompAriFilho;
4104
4105 while (itItensFilhos.hasNext()) {
4106
4107 itemFilho = (ItemEstruturaIett) itItensFilhos.next();
4108
4109 acompAriFilho = ariDao.getAcompReferenciaItemByItemEstruturaIett(arefSelecionada, itemFilho);
4110
4111 usuarioEmiteParecerFilho = usuarioLogadoEmiteParecer(itemFilho, tpfaOrdenadosPorEstrutura, usuario, acompAriFilho);
4112
4113 if ((acompAriFilho != null && (usuarioEmiteParecerFilho || permissaoAdministradorAcompanhamento))) {
4114
4115 algumFilhoTemPermissaoEditar = true;
4116 }
4117 }
4118
4119 }
4120
4121 if (!algumFilhoTemPermissaoEditar)
4122 itItensEstrutura.remove();
4123 }
4124 }
4125 }
4126 } catch (Exception e) {
4127 System.out.println(e.getMessage());
4128 }
4129 return itensEstrutura;
4130 }
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143 private Collection aplicarMinhasPendencias(Collection itensEstrutura, TipoAcompanhamentoTa tipoAcompanhamento, Set gruposUsuario, Collection periodosConsiderados, List tpfaOrdenadosPorEstrutura, UsuarioUsu usuario) throws ECARException {
4144
4145 Iterator itItensEstrutura = itensEstrutura.iterator();
4146 ItemEstruturaIett itemEstrutura;
4147 AtributoEstruturaListagemItens atributoEstruturaListagemItens;
4148 AcompReferenciaItemAri acompAri;
4149 AcompReferenciaItemDao ariDao = new AcompReferenciaItemDao(request);
4150
4151 while (itItensEstrutura.hasNext()) {
4152
4153 boolean usuarioLogadoEmiteParecerNaoLiberado = false;
4154 boolean usuarioAdministraAcompanhamentoNaoLiberado = false;
4155 boolean acompanhamentoLiberado = false;
4156
4157 boolean algumFilhoTemPendencias = false;
4158 boolean itemPossuiPendencias = false;
4159
4160 atributoEstruturaListagemItens = (AtributoEstruturaListagemItens) itItensEstrutura.next();
4161 itemEstrutura = atributoEstruturaListagemItens.getItem();
4162
4163
4164
4165
4166 Iterator itPeriodos = periodosConsiderados.iterator();
4167
4168 while (itPeriodos.hasNext()) {
4169
4170 AcompReferenciaAref arefCorrente = (AcompReferenciaAref) itPeriodos.next();
4171
4172 acompAri = ariDao.getAcompReferenciaItemByItemEstruturaIett(arefCorrente, itemEstrutura);
4173
4174 if (acompAri != null) {
4175
4176 usuarioLogadoEmiteParecerNaoLiberado = usuarioLogadoEmiteParecerNaoLiberado(itemEstrutura, tpfaOrdenadosPorEstrutura, usuario, acompAri);
4177
4178 usuarioAdministraAcompanhamentoNaoLiberado = usuarioAdministraAcompanhamentoNaoLiberado(itemEstrutura, gruposUsuario, acompAri, tipoAcompanhamento);
4179
4180 StatusRelatorioSrl statusLiberado = (StatusRelatorioSrl) buscar(StatusRelatorioSrl.class, Long.valueOf(STATUS_LIBERADO));
4181
4182 if (acompAri.getStatusRelatorioSrl().equals(statusLiberado)) {
4183
4184 acompanhamentoLiberado = true;
4185
4186 }
4187
4188 if ((usuarioLogadoEmiteParecerNaoLiberado || usuarioAdministraAcompanhamentoNaoLiberado) && !acompanhamentoLiberado) {
4189 itemPossuiPendencias = true;
4190 break;
4191 }
4192
4193 }
4194
4195
4196
4197
4198
4199
4200 if (acompAri == null || acompanhamentoLiberado || (!usuarioAdministraAcompanhamentoNaoLiberado && !usuarioLogadoEmiteParecerNaoLiberado)) {
4201
4202 Set itensFilhosImediatos = itemEstrutura.getItemEstruturaIetts();
4203
4204
4205
4206
4207
4208
4209 if (itensFilhosImediatos != null && itensFilhosImediatos.size() > 0) {
4210
4211 algumFilhoTemPendencias = verificarFilhos(itensFilhosImediatos, tipoAcompanhamento, gruposUsuario, arefCorrente, tpfaOrdenadosPorEstrutura, usuario, ariDao);
4212
4213 if (algumFilhoTemPendencias)
4214 break;
4215 }
4216
4217 }
4218
4219 }
4220
4221 if (!itemPossuiPendencias && !algumFilhoTemPendencias)
4222 itItensEstrutura.remove();
4223 }
4224
4225 return itensEstrutura;
4226 }
4227
4228 private boolean verificarFilhos(Set itensFilhos, TipoAcompanhamentoTa tipoAcompanhamento, Set gruposUsuario, AcompReferenciaAref arefCorrente, List tpfaOrdenadosPorEstrutura, UsuarioUsu usuario, AcompReferenciaItemDao ariDao) throws ECARException {
4229
4230 Iterator itItensFilhos = itensFilhos.iterator();
4231 ItemEstruturaIett itemFilho;
4232 AcompReferenciaItemAri acompAriFilho;
4233
4234 boolean retorno = false;
4235
4236 while (itItensFilhos.hasNext()) {
4237
4238 boolean usuarioLogadoEmiteParecerNaoLiberadoFilho = false;
4239 boolean usuarioAdministraAcompanhamentoNaoLiberadoFilho = false;
4240 boolean acompanhamentoLiberado = false;
4241
4242 itemFilho = (ItemEstruturaIett) itItensFilhos.next();
4243
4244 acompAriFilho = ariDao.getAcompReferenciaItemByItemEstruturaIett(arefCorrente, itemFilho);
4245
4246 if (acompAriFilho != null) {
4247
4248 usuarioLogadoEmiteParecerNaoLiberadoFilho = usuarioLogadoEmiteParecerNaoLiberado(itemFilho, tpfaOrdenadosPorEstrutura, usuario, acompAriFilho);
4249
4250 usuarioAdministraAcompanhamentoNaoLiberadoFilho = usuarioAdministraAcompanhamentoNaoLiberado(itemFilho, gruposUsuario, acompAriFilho, tipoAcompanhamento);
4251
4252 StatusRelatorioSrl statusLiberado = (StatusRelatorioSrl) buscar(StatusRelatorioSrl.class, Long.valueOf(STATUS_LIBERADO));
4253
4254 if (acompAriFilho.getStatusRelatorioSrl().equals(statusLiberado)) {
4255
4256 acompanhamentoLiberado = true;
4257 }
4258 }
4259
4260 if (acompAriFilho != null && !acompanhamentoLiberado) {
4261 if (usuarioAdministraAcompanhamentoNaoLiberadoFilho || usuarioLogadoEmiteParecerNaoLiberadoFilho) {
4262
4263 return true;
4264 }
4265 }
4266 else {
4267
4268
4269 if (itemFilho.getItemEstruturaIetts() != null && itemFilho.getItemEstruturaIetts().size() > 0) {
4270 retorno = verificarFilhos(itemFilho.getItemEstruturaIetts(), tipoAcompanhamento, gruposUsuario, arefCorrente, tpfaOrdenadosPorEstrutura, usuario, ariDao);
4271
4272 if (retorno == true)
4273 break;
4274 }
4275 }
4276 }
4277
4278 return retorno;
4279 }
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308 public Object[] getItensAcompanhamentoComPendencias(Collection periodosConsiderados, Collection niveisPlanejamento, OrgaoOrg orgaoResponsavel, UsuarioUsu usuarioUsu, Set gruposUsuario, TipoAcompanhamentoTa tipoAcompanhamento, Long codIettPai, AcompReferenciaAref arefSelecionada, List tpfaOrdenadosPorEstrutura, Boolean itensSemInformacaoNivelPlanejamento, Long codCor, String indLiberados, int menorNivel, int nuPaginaSelecionada) throws ECARException {
4309
4310 try {
4311
4312 Object[] itensAcompanhamentoMinhasPendencias = getItensAcompanhamentoInPeriodosByOrgaoRespPaginado(periodosConsiderados, niveisPlanejamento, orgaoResponsavel, usuarioUsu, gruposUsuario, tipoAcompanhamento.getCodTa().longValue(), codIettPai, itensSemInformacaoNivelPlanejamento, codCor, indLiberados, menorNivel, nuPaginaSelecionada);
4313
4314 itensAcompanhamentoMinhasPendencias[0] = aplicarMinhasPendencias((Collection) itensAcompanhamentoMinhasPendencias[0], tipoAcompanhamento, gruposUsuario, periodosConsiderados, tpfaOrdenadosPorEstrutura, usuarioUsu);
4315
4316 return itensAcompanhamentoMinhasPendencias;
4317
4318 } catch (HibernateException e) {
4319 this.logger.error(e);
4320 throw new ECARException(e);
4321 }
4322 }
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348 public Object[] getItensAcompanhamentoComPermissaoAlteracao(Collection periodosConsiderados, Collection niveisPlanejamento, OrgaoOrg orgaoResponsavel, UsuarioUsu usuarioUsu, Set gruposUsuario, TipoAcompanhamentoTa tipoAcompanhamento, Long codIettPai, AcompReferenciaAref arefSelecionada, List tpfaOrdenadosPorEstrutura, Boolean itensSemInformacaoNivelPlanejamento, Long codCor, String indLiberados, int menorNivel, int nuPaginaSelecionada) throws ECARException {
4349
4350 try {
4351
4352 Object[] itensAcompanhamentoMinhaVisao = getItensAcompanhamentoInPeriodosByOrgaoRespPaginado(periodosConsiderados, niveisPlanejamento, orgaoResponsavel, usuarioUsu, gruposUsuario, tipoAcompanhamento.getCodTa().longValue(), codIettPai, itensSemInformacaoNivelPlanejamento, codCor, indLiberados, menorNivel, nuPaginaSelecionada);
4353
4354 itensAcompanhamentoMinhaVisao[0] = aplicarMinhaVisao((Collection) itensAcompanhamentoMinhaVisao[0], tipoAcompanhamento, gruposUsuario, arefSelecionada, tpfaOrdenadosPorEstrutura, usuarioUsu);
4355
4356 return itensAcompanhamentoMinhaVisao;
4357
4358 } catch (HibernateException e) {
4359 this.logger.error(e);
4360 throw new ECARException(e);
4361 } catch (Exception e) {
4362 this.logger.error(e);
4363 throw new ECARException(e);
4364 }
4365 }
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377 private boolean filtrarItemString(HttpServletRequest request, String campo, ItemEstruturaIett iett, List itensRemovidos, Iterator itItensEstrutura) {
4378 boolean retorno = false;
4379 String valorCampo = Pagina.getParamStr(request, iett.getEstruturaEtt().getCodEtt() + "_" + campo);
4380 try {
4381
4382 if (!"".equals(valorCampo)) {
4383
4384 String valorCampoIett = (String) iett.getClass().getMethod("get" + Util.primeiraLetraToUpperCase(campo), null).invoke(iett, null);
4385
4386 if (valorCampoIett == null || !valorCampoIett.toUpperCase().contains((valorCampo.toUpperCase()))) {
4387 itensRemovidos.add(iett.getCodIett());
4388 itItensEstrutura.remove();
4389 retorno = true;
4390 }
4391 }
4392 } catch (Exception e) {
4393
4394 }
4395
4396 return retorno;
4397 }
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409 private boolean filtrarItemData(HttpServletRequest request, String campo, ItemEstruturaIett iett, List itensRemovidos, Iterator itItensEstrutura, String inicioFim) {
4410 boolean retorno = false;
4411 String valorCampo = Pagina.getParamStr(request, iett.getEstruturaEtt().getCodEtt() + "_" + campo + "_" + inicioFim);
4412 try {
4413
4414 if (!"".equals(valorCampo)) {
4415
4416
4417 valorCampo = valorCampo.substring(3, valorCampo.lastIndexOf("/") + 1) + valorCampo.substring(0, valorCampo.indexOf("/") + 1) + valorCampo.substring(valorCampo.lastIndexOf("/") + 1);
4418
4419 Date valorCampoData = new Date(valorCampo);
4420
4421 Date valorCampoDataIett = (Date) iett.getClass().getMethod("get" + Util.primeiraLetraToUpperCase(campo), null).invoke(iett, null);
4422
4423 if (inicioFim.equals("Inicio")) {
4424
4425
4426 if (valorCampoDataIett == null || valorCampoDataIett.compareTo(valorCampoData) < 0) {
4427 itensRemovidos.add(iett.getCodIett());
4428 itItensEstrutura.remove();
4429 retorno = true;
4430 }
4431 }
4432 else if (inicioFim.equals("Fim")) {
4433
4434
4435 if (valorCampoDataIett == null || valorCampoDataIett.compareTo(valorCampoData) > 0) {
4436 itensRemovidos.add(iett.getCodIett());
4437 itItensEstrutura.remove();
4438 retorno = true;
4439 }
4440 }
4441
4442 }
4443 } catch (Exception e) {
4444
4445 }
4446
4447 return retorno;
4448 }
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460 private boolean filtrarItemValor(HttpServletRequest request, String campo, ItemEstruturaIett iett, List itensRemovidos, Iterator itItensEstrutura, String inicioFim) {
4461 boolean retorno = false;
4462 String valorCampo = Pagina.getParamStr(request, iett.getEstruturaEtt().getCodEtt() + "_" + campo + "_" + inicioFim);
4463 try {
4464
4465 if (!"".equals(valorCampo)) {
4466
4467 BigDecimal valorCampoBigDecimal = new BigDecimal(valorCampo);
4468
4469 BigDecimal valorCampoBigDecimalIett = (BigDecimal) iett.getClass().getMethod("get" + Util.primeiraLetraToUpperCase(campo), null).invoke(iett, null);
4470
4471 if (inicioFim.equals("Inicio")) {
4472 if (valorCampoBigDecimalIett == null ||
4473
4474
4475 valorCampoBigDecimalIett.doubleValue() < valorCampoBigDecimal.doubleValue()) {
4476 itensRemovidos.add(iett.getCodIett());
4477 itItensEstrutura.remove();
4478 retorno = true;
4479 }
4480 }
4481 else if (inicioFim.equals("Fim")) {
4482 if (valorCampoBigDecimalIett == null ||
4483
4484
4485 valorCampoBigDecimalIett.doubleValue() > valorCampoBigDecimal.doubleValue()) {
4486 itensRemovidos.add(iett.getCodIett());
4487 itItensEstrutura.remove();
4488 retorno = true;
4489 }
4490 }
4491
4492 }
4493 } catch (Exception e) {
4494
4495 }
4496
4497 return retorno;
4498 }
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510 private boolean filtrarAtributosLivres(HttpServletRequest request, ItemEstruturaIett iett, List itensRemovidos, Iterator itItensEstrutura, List atributosLivres) {
4511 boolean retorno = false;
4512 try {
4513 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(request);
4514 String codEtt = iett.getEstruturaEtt().getCodEtt().toString();
4515 boolean filtrarAtributoLivre = true;
4516 Iterator itAtributos = atributosLivres.iterator();
4517
4518 while (itAtributos.hasNext() && filtrarAtributoLivre) {
4519 ObjetoEstrutura objetoEstrutura = (ObjetoEstrutura) itAtributos.next();
4520 SisGrupoAtributoSga grupoAtributo = objetoEstrutura.iGetGrupoAtributosLivres();
4521
4522 String nomeCampo = codEtt + "_a" + grupoAtributo.getCodSga();
4523 String tipoCampo = grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().toString();
4524
4525
4526
4527 if (tipoCampo.equals(SisTipoExibicGrupoDao.CHECKBOX) || tipoCampo.equals(SisTipoExibicGrupoDao.LISTBOX)) {
4528 String[] atributos = request.getParameterValues(nomeCampo);
4529 int numAtributos = 0;
4530 if (atributos != null) {
4531 numAtributos = atributos.length;
4532 }
4533 for (int i = 0; i < numAtributos && filtrarAtributoLivre; i++) {
4534 if (!itemEstruturaDao.getSisAtributosIett(iett, grupoAtributo.getCodSga()).contains((SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(atributos[i])))) {
4535 itensRemovidos.add(iett.getCodIett());
4536 itItensEstrutura.remove();
4537 filtrarAtributoLivre = false;
4538 retorno = true;
4539 break;
4540 }
4541 }
4542 }
4543
4544 else if (tipoCampo.equals(SisTipoExibicGrupoDao.RADIO_BUTTON) || tipoCampo.equals(SisTipoExibicGrupoDao.COMBOBOX)) {
4545
4546 if (!"".equals(Pagina.getParamStr(request, nomeCampo))) {
4547
4548 if (!itemEstruturaDao.getSisAtributosIett(iett, grupoAtributo.getCodSga()).contains((SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(Pagina.getParamStr(request, nomeCampo))))) {
4549 itensRemovidos.add(iett.getCodIett());
4550 itItensEstrutura.remove();
4551 filtrarAtributoLivre = false;
4552 retorno = true;
4553 break;
4554 }
4555 }
4556 }
4557
4558 else if (tipoCampo.equals(SisTipoExibicGrupoDao.TEXT) || tipoCampo.equals(SisTipoExibicGrupoDao.TEXTAREA)) {
4559
4560 if (!"".equals(Pagina.getParamStr(request, nomeCampo))) {
4561 List atributosTextTextArea = itemEstruturaDao.getItemEstruturaSisAtributoIettSatbsIett(iett, grupoAtributo.getCodSga());
4562 if (atributosTextTextArea.size() == 0) {
4563 itensRemovidos.add(iett.getCodIett());
4564 itItensEstrutura.remove();
4565 filtrarAtributoLivre = false;
4566 retorno = true;
4567 break;
4568 }
4569
4570 Iterator itAtributosTextTextArea = atributosTextTextArea.iterator();
4571
4572 while (itAtributosTextTextArea.hasNext() && filtrarAtributoLivre) {
4573 ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb = (ItemEstruturaSisAtributoIettSatb) itAtributosTextTextArea.next();
4574 if (!itemEstruturaSisAtributoIettSatb.getInformacaoIettSatb().toUpperCase().trim().contains(Pagina.getParamStr(request, nomeCampo).toUpperCase().trim())) {
4575 itensRemovidos.add(iett.getCodIett());
4576 itItensEstrutura.remove();
4577 filtrarAtributoLivre = false;
4578 retorno = true;
4579 break;
4580 }
4581
4582 }
4583 }
4584
4585 }
4586 else if (tipoCampo.equals(SisTipoExibicGrupoDao.MULTITEXTO)) {
4587 Enumeration lAtrib = request.getParameterNames();
4588 while (lAtrib.hasMoreElements() && filtrarAtributoLivre) {
4589 nomeCampo = (String) lAtrib.nextElement();
4590 if (nomeCampo.startsWith(codEtt + "_a" + grupoAtributo.getCodSga().toString())) {
4591 if (!"".equals(Pagina.getParamStr(request, nomeCampo))) {
4592 String codSisAtrib = nomeCampo.substring(nomeCampo.lastIndexOf("_") + 1);
4593 SisAtributoSatb sisAtributoSatb = (SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(codSisAtrib));
4594 List atributosMultiText = itemEstruturaDao.getItemEstruturaSisAtributoIettSatbsIett(iett, grupoAtributo.getCodSga());
4595 if (atributosMultiText.size() == 0 || !itemEstruturaDao.getSisAtributosIett(iett, grupoAtributo.getCodSga()).contains(sisAtributoSatb)) {
4596 itensRemovidos.add(iett.getCodIett());
4597 itItensEstrutura.remove();
4598 filtrarAtributoLivre = false;
4599 retorno = true;
4600 break;
4601 }
4602 Iterator itAtributosMultiTexto = atributosMultiText.iterator();
4603
4604 while (itAtributosMultiTexto.hasNext() && filtrarAtributoLivre) {
4605 ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb = (ItemEstruturaSisAtributoIettSatb) itAtributosMultiTexto.next();
4606 if (itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getCodSatb().toString().equals(codSisAtrib)) {
4607 if (!itemEstruturaSisAtributoIettSatb.getInformacaoIettSatb().toUpperCase().trim().contains(Pagina.getParamStr(request, nomeCampo).toUpperCase().trim())) {
4608 itensRemovidos.add(iett.getCodIett());
4609 itItensEstrutura.remove();
4610 filtrarAtributoLivre = false;
4611 retorno = true;
4612 break;
4613 }
4614 }
4615 }
4616 }
4617 }
4618 }
4619
4620 }
4621 else if (tipoCampo.equals(SisTipoExibicGrupoDao.VALIDACAO)) {
4622 nomeCampo = codEtt + "_a" + grupoAtributo.getCodSga() + "_Inicio";
4623 String filtroParametro = Pagina.getParamStr(request, nomeCampo);
4624 if (!"".equals(Pagina.getParamStr(request, nomeCampo))) {
4625
4626 List atributosValidacao = itemEstruturaDao.getItemEstruturaSisAtributoIettSatbsIett(iett, grupoAtributo.getCodSga());
4627
4628 if (atributosValidacao.size() == 0) {
4629 itensRemovidos.add(iett.getCodIett());
4630 itItensEstrutura.remove();
4631 filtrarAtributoLivre = false;
4632 retorno = true;
4633 break;
4634 }
4635
4636 Iterator itAtributosValidacao = atributosValidacao.iterator();
4637
4638 while (itAtributosValidacao.hasNext() && filtrarAtributoLivre) {
4639 ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb = (ItemEstruturaSisAtributoIettSatb) itAtributosValidacao.next();
4640
4641 if (itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("dataScript")) {
4642
4643
4644
4645 filtroParametro = filtroParametro.substring(3, filtroParametro.lastIndexOf("/") + 1) + filtroParametro.substring(0, filtroParametro.indexOf("/") + 1) + filtroParametro.substring(filtroParametro.lastIndexOf("/") + 1);
4646
4647 Date dataFiltro = new Date(filtroParametro);
4648
4649 String valorAtribLivre = itemEstruturaSisAtributoIettSatb.getInformacaoIettSatb();
4650
4651
4652
4653 valorAtribLivre = valorAtribLivre.substring(3, valorAtribLivre.lastIndexOf("/") + 1) + valorAtribLivre.substring(0, valorAtribLivre.indexOf("/") + 1) + valorAtribLivre.substring(valorAtribLivre.lastIndexOf("/") + 1);
4654
4655 Date dataAtribLivre = new Date(valorAtribLivre);
4656
4657
4658 if (dataAtribLivre.compareTo(dataFiltro) < 0) {
4659 itensRemovidos.add(iett.getCodIett());
4660 itItensEstrutura.remove();
4661 filtrarAtributoLivre = false;
4662 retorno = true;
4663 break;
4664 }
4665
4666 }
4667 else if (itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroInteiroScript") || itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroRealScript") || itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("valorMonetarioScript")) {
4668
4669 BigDecimal valorFiltro = new BigDecimal(filtroParametro);
4670
4671 BigDecimal valorAtribLivre = new BigDecimal(itemEstruturaSisAtributoIettSatb.getInformacaoIettSatb());
4672
4673
4674
4675 if (valorAtribLivre.doubleValue() < valorFiltro.doubleValue()) {
4676 itensRemovidos.add(iett.getCodIett());
4677 itItensEstrutura.remove();
4678 filtrarAtributoLivre = false;
4679 retorno = true;
4680 break;
4681 }
4682 }
4683 }
4684 }
4685
4686 nomeCampo = codEtt + "_a" + grupoAtributo.getCodSga() + "_Fim";
4687 filtroParametro = Pagina.getParamStr(request, nomeCampo);
4688 if (!"".equals(Pagina.getParamStr(request, nomeCampo))) {
4689
4690 List atributosValidacao = itemEstruturaDao.getItemEstruturaSisAtributoIettSatbsIett(iett, grupoAtributo.getCodSga());
4691
4692 if (atributosValidacao.size() == 0) {
4693 itensRemovidos.add(iett.getCodIett());
4694 itItensEstrutura.remove();
4695 filtrarAtributoLivre = false;
4696 retorno = true;
4697 break;
4698 }
4699
4700 Iterator itAtributosValidacao = atributosValidacao.iterator();
4701
4702 while (itAtributosValidacao.hasNext() && filtrarAtributoLivre) {
4703 ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb = (ItemEstruturaSisAtributoIettSatb) itAtributosValidacao.next();
4704
4705 if (itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("dataScript")) {
4706
4707
4708
4709 filtroParametro = filtroParametro.substring(3, filtroParametro.lastIndexOf("/") + 1) + filtroParametro.substring(0, filtroParametro.indexOf("/") + 1) + filtroParametro.substring(filtroParametro.lastIndexOf("/") + 1);
4710
4711 Date dataFiltro = new Date(filtroParametro);
4712
4713 String valorAtribLivre = itemEstruturaSisAtributoIettSatb.getInformacaoIettSatb();
4714
4715
4716
4717 valorAtribLivre = valorAtribLivre.substring(3, valorAtribLivre.lastIndexOf("/") + 1) + valorAtribLivre.substring(0, valorAtribLivre.indexOf("/") + 1) + valorAtribLivre.substring(valorAtribLivre.lastIndexOf("/") + 1);
4718
4719 Date dataAtribLivre = new Date(valorAtribLivre);
4720
4721
4722 if (dataAtribLivre.compareTo(dataFiltro) > 0) {
4723 itensRemovidos.add(iett.getCodIett());
4724 itItensEstrutura.remove();
4725 filtrarAtributoLivre = false;
4726 retorno = true;
4727 break;
4728 }
4729
4730 }
4731 else if (itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroInteiroScript") || itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroRealScript") || itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("valorMonetarioScript")) {
4732
4733 BigDecimal valorFiltro = new BigDecimal(filtroParametro);
4734
4735 BigDecimal valorAtribLivre = new BigDecimal(itemEstruturaSisAtributoIettSatb.getInformacaoIettSatb());
4736
4737
4738
4739 if (valorAtribLivre.doubleValue() > valorFiltro.doubleValue()) {
4740 itensRemovidos.add(iett.getCodIett());
4741 itItensEstrutura.remove();
4742 filtrarAtributoLivre = false;
4743 retorno = true;
4744 break;
4745 }
4746 }
4747
4748 }
4749 }
4750
4751 nomeCampo = codEtt + "_a" + grupoAtributo.getCodSga();
4752 filtroParametro = Pagina.getParamStr(request, nomeCampo);
4753 if (!"".equals(Pagina.getParamStr(request, nomeCampo))) {
4754
4755 List atributosValidacao = itemEstruturaDao.getItemEstruturaSisAtributoIettSatbsIett(iett, grupoAtributo.getCodSga());
4756
4757 if (atributosValidacao.size() == 0) {
4758 itensRemovidos.add(iett.getCodIett());
4759 itItensEstrutura.remove();
4760 filtrarAtributoLivre = false;
4761 retorno = true;
4762 break;
4763 }
4764
4765 Iterator itAtributosValidacao = atributosValidacao.iterator();
4766
4767 while (itAtributosValidacao.hasNext() && filtrarAtributoLivre) {
4768 ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb = (ItemEstruturaSisAtributoIettSatb) itAtributosValidacao.next();
4769
4770 if (!itemEstruturaSisAtributoIettSatb.getInformacaoIettSatb().toUpperCase().contains(filtroParametro.toUpperCase())) {
4771 itensRemovidos.add(iett.getCodIett());
4772 itItensEstrutura.remove();
4773 filtrarAtributoLivre = false;
4774 retorno = true;
4775 break;
4776 }
4777 }
4778 }
4779 }
4780 }
4781
4782 } catch (Exception e) {
4783
4784 }
4785
4786 return retorno;
4787 }
4788
4789 }