1
2
3
4 package ecar.dao;
5
6 import java.text.SimpleDateFormat;
7 import java.util.ArrayList;
8 import java.util.Calendar;
9 import java.util.Collection;
10 import java.util.Collections;
11 import java.util.Date;
12 import java.util.HashSet;
13 import java.util.Iterator;
14 import java.util.List;
15 import java.util.Set;
16
17 import javax.servlet.http.HttpServletRequest;
18
19 import org.hibernate.HibernateException;
20 import org.hibernate.Query;
21
22 import comum.database.Dao;
23 import comum.util.Data;
24 import comum.util.Pagina;
25
26 import ecar.bean.AtributoEstruturaListagemItens;
27 import ecar.exception.ECARException;
28 import ecar.login.SegurancaECAR;
29 import ecar.permissao.ValidaPermissao;
30 import ecar.pojo.AcompRealFisicoArf;
31 import ecar.pojo.AcompRefItemLimitesArli;
32 import ecar.pojo.AcompRefLimitesArl;
33 import ecar.pojo.AcompRefLimitesArlPK;
34 import ecar.pojo.AcompReferenciaAref;
35 import ecar.pojo.AcompReferenciaItemAri;
36 import ecar.pojo.ExercicioExe;
37 import ecar.pojo.ItemEstrutUsuarioIettus;
38 import ecar.pojo.ItemEstruturaIett;
39 import ecar.pojo.OrgaoOrg;
40 import ecar.pojo.TipoAcompanhamentoTa;
41 import ecar.pojo.TipoFuncAcompTpfa;
42 import ecar.pojo.UsuarioAtributoUsua;
43 import ecar.pojo.UsuarioUsu;
44 import ecar.util.Dominios;
45
46
47
48
49 public class AcompReferenciaDao extends Dao {
50
51 ValidaPermissao validaPermissao = new ValidaPermissao();
52
53
54
55
56 public AcompReferenciaDao(HttpServletRequest request) {
57 super();
58 this.request = request;
59 }
60
61
62
63
64
65 public List getListAcompReferencia() throws ECARException {
66 return listar(AcompReferenciaAref.class, new String[] { "anoAref", "desc", "mesAref", "desc", "dataInicioAref", "desc" });
67 }
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 public AcompReferenciaAref getAcompSelecionado(List aref) {
91 int mesAtual = Data.getCalendar(Data.getDataAtual()).get(Calendar.MONTH) + 1;
92 int anoAtual = Data.getCalendar(Data.getDataAtual()).get(Calendar.YEAR);
93 AcompReferenciaAref arefSelecionado = null;
94
95 String anoMesAtual = "";
96 if (mesAtual < 10) {
97 anoMesAtual = "" + anoAtual + "0" + mesAtual;
98 }
99 else {
100 anoMesAtual = "" + anoAtual + mesAtual;
101
102 }
103 Integer atual = Integer.valueOf(anoMesAtual);
104 int maisProximo = 0;
105
106 for (Iterator it = aref.iterator(); it.hasNext();) {
107 AcompReferenciaAref itemAref = (AcompReferenciaAref) it.next();
108 Integer item = Integer.valueOf("" + itemAref.getAnoAref() + itemAref.getMesAref());
109 if (atual.intValue() == item.intValue()) {
110 return itemAref;
111 }
112 else if (item.intValue() < atual.intValue() && item.intValue() > maisProximo) {
113 maisProximo = item.intValue();
114 arefSelecionado = itemAref;
115 }
116 else if (item.longValue() > atual.longValue()) {
117 maisProximo = atual.intValue();
118 int mesItem = Integer.valueOf(itemAref.getMesAref()).intValue();
119 int anoItem = Integer.valueOf(itemAref.getAnoAref()).intValue();
120 int difItem;
121 int difProximo = atual.intValue() - maisProximo;
122
123 if (anoItem == anoAtual) {
124 difItem = atual.intValue() - item.intValue();
125
126 int anoProximo = Integer.valueOf(("" + maisProximo).substring(0, 4)).intValue();
127 int mesProximo = Integer.valueOf(("" + maisProximo).substring(4, 6)).intValue();
128
129 if (anoProximo < anoAtual) {
130
131 int qtd = 0;
132 int ano = anoAtual;
133 int mes = mesAtual;
134 while (ano >= anoProximo) {
135 while (mes >= 1) {
136 if (ano == anoProximo && mes == mesProximo) {
137 break;
138 }
139 qtd++;
140 mes--;
141 }
142 mes = 12;
143 ano--;
144 }
145 difProximo = qtd;
146
147 }
148 else if (anoProximo > anoAtual) {
149
150 int qtd = 0;
151 int ano = anoAtual;
152 int mes = mesAtual;
153 while (ano <= anoProximo) {
154 while (mes <= 12) {
155 if (ano == anoProximo && mes == mesProximo) {
156 break;
157 }
158 qtd++;
159 mes++;
160 }
161 mes = 1;
162 ano++;
163 }
164 difProximo = qtd;
165 }
166 else {
167 int mes = mesAtual;
168 if (mes == mesProximo) {
169 arefSelecionado = itemAref;
170 }
171 else {
172 difProximo = mes - mesProximo;
173 }
174 }
175
176
177
178
179
180 difItem = (difItem < 0 ? (difItem * -1) : difItem);
181 difProximo = (difProximo < 0 ? (difProximo * -1) : difProximo);
182
183 if (difItem < difProximo) {
184 maisProximo = item.intValue();
185 arefSelecionado = itemAref;
186 }
187 }
188 else if (anoItem > anoAtual) {
189 int qtdMesesMais = 0;
190 int mes = mesAtual;
191 int ano = anoAtual;
192
193 while (ano <= anoItem) {
194 while (mes <= 12) {
195 if (ano == anoItem && mes == mesItem) {
196 break;
197 }
198 qtdMesesMais++;
199 mes++;
200 }
201 mes = 1;
202 ano++;
203 }
204
205 if (qtdMesesMais < difProximo) {
206 maisProximo = item.intValue();
207 arefSelecionado = itemAref;
208 }
209
210 if (arefSelecionado == null) {
211 arefSelecionado = itemAref;
212 }
213 }
214 else {
215 int qtdMesesMenos = 0;
216 int mes = mesAtual;
217 int ano = anoAtual;
218 while (ano >= anoItem) {
219 while (mes >= 1) {
220 if (ano == anoItem && mes == mesItem) {
221 break;
222 }
223 qtdMesesMenos++;
224 mes--;
225 }
226 mes = 12;
227 ano--;
228 }
229
230 if (qtdMesesMenos < difProximo) {
231 maisProximo = item.intValue();
232 arefSelecionado = itemAref;
233 }
234 }
235 }
236 }
237 return arefSelecionado;
238 }
239
240
241
242
243
244 public List getListAcompReferenciaOrderByNome() throws ECARException {
245 return listar(AcompReferenciaAref.class, new String[] { "nomeAref", "asc" });
246 }
247
248
249
250
251
252
253 public List getListAcompReferenciaEmMonitoramento() throws ECARException {
254 List lista = null;
255
256 try {
257 lista = this.session.createQuery("from AcompReferenciaAref a where a.tipoAcompanhamentoTa.indMonitoramentoTa = 'S' order by a.anoAref desc, a.mesAref desc").list();
258 } catch (HibernateException e) {
259 this.logger.error(e);
260 throw new ECARException("erro.hibernateException");
261 }
262
263 return lista;
264 }
265
266
267
268
269
270
271
272
273 public List getListAcompReferenciaPorOrgao() throws ECARException {
274 List lista = null;
275
276 try {
277 lista = this.session.createQuery("from AcompReferenciaAref a where a.tipoAcompanhamentoTa.indMonitoramentoTa = 'N' order by a.orgaoOrg.codOrg asc, a.anoAref desc, a.mesAref desc").list();
278 } catch (HibernateException e) {
279 this.logger.error(e);
280 throw new ECARException("erro.hibernateException");
281 }
282
283 return lista;
284 }
285
286
287
288
289
290
291
292
293 public List getListAcompReferenciaProprioOrgao(OrgaoOrg orgao) throws ECARException {
294 try {
295
296 StringBuilder select = new StringBuilder("from AcompReferenciaAref a ").append("where a.orgaoOrg.codOrg = :codOrg ").append("order by a.orgaoOrg.codOrg asc, a.anoAref desc, a.mesAref desc");
297
298 Query q = this.session.createQuery(select.toString());
299
300 q.setLong("codOrg", orgao.getCodOrg().longValue());
301
302 return q.list();
303 } catch (HibernateException e) {
304 this.logger.error(e);
305 throw new ECARException("erro.hibernateException");
306 }
307 }
308
309
310
311
312
313
314
315
316 public List getListAcompReferenciaOutrosOrgaos(OrgaoOrg orgao) throws ECARException {
317 try {
318 StringBuilder select = new StringBuilder("from AcompReferenciaAref a ").append("where (a.orgaoOrg.codOrg <> :codOrg or a.orgaoOrg is null) ").append("order by a.orgaoOrg.codOrg asc, a.anoAref desc, a.mesAref desc");
319
320 Query q = this.session.createQuery(select.toString());
321
322 q.setLong("codOrg", orgao.getCodOrg().longValue());
323
324 return q.list();
325 } catch (HibernateException e) {
326 this.logger.error(e);
327 throw new ECARException("erro.hibernateException");
328 }
329 }
330
331
332
333
334
335
336
337
338 public List getAcompRefLimitesOrderByFuncaoAcomp(AcompReferenciaAref acomp) throws ECARException {
339
340 List lResultado = new ArrayList();
341 List lFuncAcomp = new TipoFuncAcompDao(request).getTipoFuncAcompEmitePosicao();
342
343 TipoFuncAcompTpfa funcao;
344 AcompRefLimitesArl acompRefLimite;
345
346 if (acomp != null && acomp.getAcompRefLimitesArls() != null) {
347
348
349 for (Iterator itFunc = lFuncAcomp.iterator(); itFunc.hasNext();) {
350 funcao = (TipoFuncAcompTpfa) itFunc.next();
351
352 for (Iterator itAcomp = acomp.getAcompRefLimitesArls().iterator(); itAcomp.hasNext();) {
353 acompRefLimite = (AcompRefLimitesArl) itAcomp.next();
354 if (acompRefLimite.getTipoFuncAcompTpfa().getCodTpfa().longValue() == funcao.getCodTpfa().longValue()) {
355 lResultado.add(acompRefLimite);
356 break;
357 }
358 }
359 }
360 }
361 return lResultado;
362 }
363
364
365
366
367
368
369
370
371
372 public AcompRefLimitesArl getAcompRefLimitesByFuncaoAcomp(AcompReferenciaAref acomp, TipoFuncAcompTpfa funcaoAcomp) throws ECARException {
373 try {
374 return (AcompRefLimitesArl) this.getSession().get(AcompRefLimitesArl.class, new AcompRefLimitesArlPK(acomp.getCodAref(), funcaoAcomp.getCodTpfa()));
375 } catch (HibernateException e) {
376 this.logger.error(e);
377 throw new ECARException(e);
378 }
379 }
380
381
382
383
384
385
386
387
388 public void setAcompReferencia(HttpServletRequest request, AcompReferenciaAref acompReferencia, Long orgaoOrg, TipoAcompanhamentoTa tipoAcompanhamento) throws ECARException {
389
390 acompReferencia.setTipoAcompanhamentoTa(tipoAcompanhamento);
391
392 if (orgaoOrg != null) {
393 acompReferencia.setOrgaoOrg((OrgaoOrg) this.buscar(OrgaoOrg.class, orgaoOrg));
394 }
395 else {
396 acompReferencia.setOrgaoOrg(null);
397 }
398
399 acompReferencia.setNomeAref(Pagina.getParamStr(request, "nomeAref").trim());
400 acompReferencia.setAnoAref(Pagina.getParamStr(request, "anoAref").trim());
401 acompReferencia.setMesAref(Pagina.getParamStr(request, "mesAref"));
402 acompReferencia.setDataInicioAref(Data.parseDate(Pagina.getParamStr(request, "dataInicioAref")));
403 acompReferencia.setDataLimiteAcompFisicoAref(Data.parseDate(Pagina.getParamStr(request, "dataLimiteAcompFisicoAref")));
404 acompReferencia.setDataUltManutAref(Data.getDataAtual());
405 acompReferencia.setExercicioExe(getExercicio(acompReferencia.getAnoAref(), acompReferencia.getMesAref()));
406
407 setAcompLimites(request, acompReferencia);
408
409 this.validaInclusaoPeriodoReferencia(acompReferencia);
410 }
411
412
413
414
415
416
417
418
419 public void setAcompLimites(HttpServletRequest request, AcompReferenciaAref acompReferencia) throws ECARException {
420
421 Set limites = new HashSet();
422
423 for (Iterator it = new TipoFuncAcompDao(request).getTipoFuncAcompEmitePosicao().iterator(); it.hasNext();) {
424 TipoFuncAcompTpfa funcao = (TipoFuncAcompTpfa) it.next();
425
426 if (!"".equals(Pagina.getParamStr(request, "prazoFinalPara" + funcao.getCodTpfa().toString()))) {
427 AcompRefLimitesArl acompLimite;
428
429
430 acompLimite = this.getAcompRefLimitesByFuncaoAcomp(acompReferencia, funcao);
431 if (acompLimite != null) {
432 acompLimite.setDataLimiteArl(Data.parseDate(Pagina.getParamStr(request, "prazoFinalPara" + funcao.getCodTpfa().toString())));
433
434 }
435 else {
436
437 acompLimite = new AcompRefLimitesArl();
438 acompLimite.setAcompReferenciaAref(acompReferencia);
439 acompLimite.setTipoFuncAcompTpfa(funcao);
440 acompLimite.setDataLimiteArl(Data.parseDate(Pagina.getParamStr(request, "prazoFinalPara" + funcao.getCodTpfa().toString())));
441 }
442 limites.add(acompLimite);
443 }
444
445 }
446
447
448
449 acompReferencia.setAcompRefLimitesArls(limites);
450 }
451
452
453
454
455
456
457 public void excluir(String[] codigosParaExcluir) throws ECARException, HibernateException {
458 AcompRealFisicoDao arfDao = new AcompRealFisicoDao(null);
459 List lista = new ArrayList();
460 for (int i = 0; i < codigosParaExcluir.length; i++) {
461 AcompReferenciaAref acompReferencia = (AcompReferenciaAref) buscar(AcompReferenciaAref.class, Long.valueOf(codigosParaExcluir[i]));
462
463
464
465 if (acompReferencia.getAcompReferenciaItemAris() != null) {
466 acompReferencia.getAcompReferenciaItemAris().size();
467 List itensAri = new ArrayList(acompReferencia.getAcompReferenciaItemAris());
468
469 for (Iterator itItensAri = itensAri.iterator(); itItensAri.hasNext();) {
470 AcompReferenciaItemAri acompRefItAri = (AcompReferenciaItemAri) itItensAri.next();
471
472 if (acompRefItAri.getStatusRelatorioSrl() != null && acompRefItAri.getStatusRelatorioSrl().getCodSrl() != null && acompRefItAri.getStatusRelatorioSrl().getCodSrl().intValue() == AcompReferenciaItemDao.STATUS_LIBERADO) {
473
474 throw new ECARException("periodoReferencia.exclusao.posicaoJaLiberada", null, new String[] { acompRefItAri.getItemEstruturaIett().getNomeIett() });
475
476 }
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494 StringBuilder query = new StringBuilder("select ARI from AcompReferenciaItemAri as ARI").append(" where ARI.itemEstruturaIett.codIett = :codIett").append(" and ARI.itemEstruturaIett.indAtivoIett = 'S'").append(" and ARI.acompReferenciaAref.mesAref = :mesAref").append(" and ARI.acompReferenciaAref.anoAref = :anoAref").append(" and ARI.codAri<> :codAri");
495
496 Query q = this.getSession().createQuery(query.toString());
497
498 q.setLong("codIett", acompRefItAri.getItemEstruturaIett().getCodIett().longValue());
499 q.setString("mesAref", acompRefItAri.getAcompReferenciaAref().getMesAref());
500 q.setString("anoAref", acompRefItAri.getAcompReferenciaAref().getAnoAref());
501 q.setLong("codAri", acompRefItAri.getCodAri().longValue());
502
503 List listaARI = q.list();
504
505 if (listaARI == null || listaARI.isEmpty()) {
506
507 List listArf = arfDao.buscarPorIett(acompRefItAri.getItemEstruturaIett().getCodIett(), Long.valueOf(acompRefItAri.getAcompReferenciaAref().getMesAref()), Long.valueOf(acompRefItAri.getAcompReferenciaAref().getAnoAref()));
508
509 if (listArf != null && !listArf.isEmpty()) {
510 lista.addAll(listArf);
511 }
512 }
513 }
514 }
515 lista.addAll(acompReferencia.getAcompRefLimitesArls());
516 lista.addAll(acompReferencia.getAcompReferenciaItemAris());
517 lista.add(acompReferencia);
518 }
519 super.excluir(lista);
520 }
521
522
523
524
525
526
527
528
529
530
531
532
533
534 public List[] getItemEstruturaAcompanhamento(List listAris, TipoAcompanhamentoTa tipoAcompanhamento, UsuarioUsu usuario, Set gruposUsuario, String tipoAcesso, String somenteAcompanhamento, int nuPagina, int nuItensPaginacao) throws ECARException {
535
536 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(request);
537
538 List[] retorno = new List[4];
539 List selecionaveis = new ArrayList();
540 List itensSemParecer = new ArrayList();
541 List selecionaveisOrdenadosPaginados = new ArrayList();
542
543
544 int indiceInicial = (nuPagina - 1) * nuItensPaginacao + 1;
545 int indiceFinal = (nuPagina - 1) * nuItensPaginacao + nuItensPaginacao;
546 int contador = 1;
547
548 for (Iterator it = listAris.iterator(); it.hasNext();) {
549 AcompReferenciaItemAri acompRefItem = (AcompReferenciaItemAri) it.next();
550 if (validaPermissao.permissaoAcessoItemElaboracaoAcomp(acompRefItem.getItemEstruturaIett(), usuario, gruposUsuario, tipoAcesso, tipoAcompanhamento)) {
551 if (acompRefItem.getAcompRelatorioArels() != null && acompRefItem.getAcompRelatorioArels().size() > 0) {
552 selecionaveis.add(acompRefItem.getItemEstruturaIett());
553 }
554 else if ("N".equals(somenteAcompanhamento)) {
555 selecionaveis.add(acompRefItem.getItemEstruturaIett());
556 itensSemParecer.add(acompRefItem.getItemEstruturaIett());
557 }
558 }
559 }
560
561
562 List selecionaveisOrdenados = itemEstruturaDao.getItensOrdenados(selecionaveis, tipoAcompanhamento);
563 Iterator selecionaveisOrdenadosIt = selecionaveisOrdenados.iterator();
564 while (selecionaveisOrdenadosIt.hasNext()) {
565 AtributoEstruturaListagemItens atEstListagem = (AtributoEstruturaListagemItens) selecionaveisOrdenadosIt.next();
566 if (indiceInicial <= contador && contador <= indiceFinal) {
567 selecionaveisOrdenadosPaginados.add(atEstListagem);
568 }
569 else if (contador > indiceFinal) {
570 break;
571 }
572 contador++;
573 }
574
575 retorno[0] = selecionaveisOrdenadosPaginados;
576 retorno[1] = selecionaveis;
577 retorno[2] = itensSemParecer;
578 retorno[3] = selecionaveisOrdenados;
579
580 return retorno;
581 }
582
583
584
585
586
587
588
589
590
591 public ExercicioExe getExercicio(String ano, String mes) throws ECARException {
592 ExercicioExe exercicio = new ExercicioExe();
593
594
595
596 StringBuilder select = new StringBuilder("select distinct exercicio from ExercicioExe as exercicio").append(" where exercicio.dataInicialExe <= :data").append(" and exercicio.dataFinalExe >= :data");
597
598 Date data = Data.parseDate("01/" + mes + "/" + ano);
599
600 try {
601
602 Query q = this.getSession().createQuery(select.toString());
603
604 q.setDate("data", data);
605
606 List lista = q.list();
607
608 Iterator it = lista.iterator();
609
610 if (it.hasNext()) {
611 exercicio = (ExercicioExe) it.next();
612 return exercicio;
613 }
614 else {
615 return null;
616 }
617 } catch (HibernateException e) {
618 this.logger.error(e);
619 throw new ECARException(e);
620 }
621 }
622
623
624
625
626
627
628
629
630
631
632
633
634
635 public List[] getItensFilhosByAcompReferencia(AcompReferenciaAref acompReferencia, ItemEstruturaIett itemPai, UsuarioUsu usuario) throws HibernateException, ECARException {
636 List[] retorno = new List[2];
637 List listaAux = new ArrayList();
638
639 AcompReferenciaItemDao acompReferenciaItemDao = new AcompReferenciaItemDao(request);
640 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(request);
641
642
643 List listItensGravados = new ArrayList();
644 if (acompReferencia.getCodAref() != null) {
645 listItensGravados = acompReferenciaItemDao.getListaItensAcompanhamento(acompReferencia);
646 }
647
648
649
650
651 List listaItem = itemEstruturaDao.getDescendentes(itemPai, true);
652
653 for (Iterator it = listaItem.iterator(); it.hasNext();) {
654 ItemEstruturaIett item = (ItemEstruturaIett) it.next();
655
656 StringBuilder select = new StringBuilder("select item from ItemEstruturaIett as item").append(" left join item.itemEstrtIndResulIettrs as indResultados").append(" left join indResultados.itemEstrutFisicoIettfs as qtdPrevista").append(" where qtdPrevista.indAtivoIettf = 'S'").append(" and item.codIett = :codIett").append(" and item.indAtivoIett = 'S'");
657
658 Query q = this.getSession().createQuery(select.toString());
659
660 q.setLong("codIett", item.getCodIett().longValue());
661
662 List<ItemEstruturaIett> listaQtdPrev = q.list();
663
664 boolean permissaoParecerLeituraMetaIndicador = false;
665
666 for (ItemEstruturaIett item_inner : listaQtdPrev) {
667
668 Collection<ItemEstrutUsuarioIettus> listaIettus = item_inner.getItemEstrutUsuarioIettusesByCodIett();
669
670 for (ItemEstrutUsuarioIettus iettus : listaIettus) {
671
672
673
674
675 if ((iettus.getIndLeituraParecerIettus() != null && iettus.getIndLeituraParecerIettus().equals(Dominios.SIM)) && (usuario.equals(iettus.getUsuarioUsu()) || consultarPermissaoUsuario(usuario, iettus))) {
676 permissaoParecerLeituraMetaIndicador = true;
677 break;
678 }
679 }
680 if (permissaoParecerLeituraMetaIndicador) {
681
682
683 break;
684 }
685
686 }
687
688 if (!permissaoParecerLeituraMetaIndicador || listaQtdPrev.isEmpty() || !listItensGravados.contains(item)) {
689 listaAux.add(item);
690 }
691
692
693
694
695
696
697 }
698
699 listaItem.removeAll(listaAux);
700
701 retorno[0] = itemEstruturaDao.getArvoreItens(listaItem, itemPai);
702 retorno[0].remove(itemPai);
703 retorno[1] = listaItem;
704
705 return retorno;
706 }
707
708
709
710
711
712
713
714
715 private boolean consultarPermissaoUsuario(UsuarioUsu usuario, ItemEstrutUsuarioIettus iettus) {
716
717 boolean ret = false;
718
719 Set<UsuarioAtributoUsua> listaUsuarioAtributo = usuario.getUsuarioAtributoUsuas();
720
721 for (UsuarioAtributoUsua usuarioAtributo : listaUsuarioAtributo) {
722
723 if (usuarioAtributo.getSisAtributoSatb().equals(iettus.getSisAtributoSatb())) {
724 ret = true;
725 break;
726 }
727 }
728
729 return ret;
730 }
731
732
733
734
735
736
737
738
739
740
741
742
743 public void validaInclusaoPeriodoReferencia(AcompReferenciaAref acompanhamentoReferencia) throws ECARException {
744 if (getExercicio(acompanhamentoReferencia.getAnoAref(), acompanhamentoReferencia.getMesAref()) == null) {
745 throw new ECARException("periodoReferencia.validacao.exercicioNaoEncontrado");
746 }
747 }
748
749
750
751
752
753
754
755
756
757 public Collection getPeriodosAnteriores(Long codArefReferencia, int numPeriodosAnteriores, Long tipoAcompanhamento) throws ECARException {
758 return getPeriodosAnterioresOrdenado(codArefReferencia, numPeriodosAnteriores, tipoAcompanhamento, true);
759 }
760
761
762
763
764
765
766
767
768
769
770 public Collection getPeriodosAnterioresOrdenado(Long codArefReferencia, int numPeriodosAnteriores, Long tipoAcompanhamento, boolean ordena) throws ECARException {
771
772 try {
773
774 AcompReferenciaAref aref = (AcompReferenciaAref) this.buscar(AcompReferenciaAref.class, codArefReferencia);
775
776
777
778 String mesReferencia = aref.getMesAref();
779 String anoReferencia = aref.getAnoAref();
780
781
782 StringBuilder query = new StringBuilder("select aref from AcompReferenciaAref aref").append(" where aref.codAref = :codArefReferencia").append(" and aref.tipoAcompanhamentoTa.codTa = :codTa");
783
784 Query queryAcompanhamentos = this.getSession().createQuery(query.toString());
785 queryAcompanhamentos.setString("codArefReferencia", codArefReferencia.toString());
786 queryAcompanhamentos.setLong("codTa", tipoAcompanhamento.longValue());
787
788
789 List retorno = queryAcompanhamentos.list();
790 AcompReferenciaAref arefResultado = (AcompReferenciaAref) retorno.get(0);
791
792
793
794 numPeriodosAnteriores = numPeriodosAnteriores - 1;
795
796 if (numPeriodosAnteriores > 0) {
797
798 query = new StringBuilder("select aref from AcompReferenciaAref aref ").append(" where (aref.anoAref < :anoReferencia or (aref.anoAref = :anoReferencia and aref.mesAref <= :mesReferencia))").append("and aref.codAref <> :codArefReferencia").append(" and aref.tipoAcompanhamentoTa.codTa = :codTa").append(" order by aref.anoAref desc, aref.mesAref desc, aref.dataInicioAref desc");
799
800 queryAcompanhamentos = this.getSession().createQuery(query.toString());
801 queryAcompanhamentos.setString("anoReferencia", anoReferencia);
802 queryAcompanhamentos.setString("mesReferencia", mesReferencia);
803 queryAcompanhamentos.setString("codArefReferencia", codArefReferencia.toString());
804 queryAcompanhamentos.setLong("codTa", tipoAcompanhamento.longValue());
805
806
807 queryAcompanhamentos.setMaxResults(numPeriodosAnteriores);
808
809 if (queryAcompanhamentos != null) {
810
811 Iterator it = queryAcompanhamentos.iterate();
812 while (it.hasNext()) {
813 AcompReferenciaAref arefTeste = (AcompReferenciaAref) it.next();
814 retorno.add(arefTeste);
815 }
816 }
817 }
818
819 if (ordena) {
820 Collections.reverse(retorno);
821 }
822
823 return retorno;
824
825 } catch (HibernateException e) {
826 this.logger.error(e);
827 throw new ECARException(e);
828 }
829 }
830
831
832
833
834
835
836
837 public Collection getOrgaosComAcompanhamentosCriados(String codTipoAcompanhamento) throws ECARException {
838 try {
839 StringBuilder query = new StringBuilder("select distinct aref.orgaoOrg from AcompReferenciaAref aref");
840 if (!"".equals(codTipoAcompanhamento)) {
841 query.append(" where aref.tipoAcompanhamentoTa.codTa=").append(codTipoAcompanhamento);
842 }
843 Query queryItens = this.getSession().createQuery(query.toString());
844
845 return queryItens.list();
846 } catch (HibernateException e) {
847 this.logger.error(e);
848 throw new ECARException(e);
849 }
850
851 }
852
853
854
855
856
857
858 public boolean existeQuantidades(String[] codigos) throws ECARException {
859 AcompRealFisicoDao arfDao = new AcompRealFisicoDao(null);
860 for (int i = 0; i < codigos.length; i++) {
861
862 AcompReferenciaAref acompReferencia = (AcompReferenciaAref) buscar(AcompReferenciaAref.class, Long.valueOf(codigos[i]));
863
864 if (acompReferencia.getAcompReferenciaItemAris() != null) {
865 acompReferencia.getAcompReferenciaItemAris().size();
866
867 for (Iterator itItensAri = acompReferencia.getAcompReferenciaItemAris().iterator(); itItensAri.hasNext();) {
868 AcompReferenciaItemAri acompRefItAri = (AcompReferenciaItemAri) itItensAri.next();
869
870 List listArf = arfDao.buscarPorIett(acompRefItAri.getItemEstruturaIett().getCodIett(), Long.valueOf(acompRefItAri.getAcompReferenciaAref().getMesAref()), Long.valueOf(acompRefItAri.getAcompReferenciaAref().getAnoAref()));
871
872 if (listArf != null) {
873
874 for (Iterator itItensArfs = listArf.iterator(); itItensArfs.hasNext();) {
875 AcompRealFisicoArf acompRealFisicoArf = (AcompRealFisicoArf) itItensArfs.next();
876 if (acompRealFisicoArf.getQtdRealizadaArf() != null && acompRealFisicoArf.getQtdRealizadaArf().doubleValue() > 0) {
877 return true;
878 }
879 }
880 }
881 }
882 }
883 }
884 return false;
885 }
886
887
888
889
890
891
892
893
894
895
896 public List getUltimoAcompanhamentoItem(ItemEstruturaIett item, Integer qtdeUltimosAcompanhamentos) throws HibernateException, ECARException {
897 try {
898 StringBuilder str = new StringBuilder();
899 str.append("select aref from AcompReferenciaAref aref");
900 str.append(" join aref.acompReferenciaItemAris as aris");
901 str.append(" where aris.itemEstruturaIett.codIett = :codItem");
902 str.append(" and aris.itemEstruturaIett.indAtivoIett = 'S'");
903 str.append(" order by aref.anoAref desc, aref.mesAref desc");
904
905 Query query = this.getSession().createQuery(str.toString());
906 query.setLong("codItem", item.getCodIett().longValue());
907 if (qtdeUltimosAcompanhamentos != null) {
908 query.setMaxResults(qtdeUltimosAcompanhamentos.intValue());
909 }
910
911 return query.list();
912
913 } catch (HibernateException e) {
914 this.logger.error(e);
915 throw new ECARException(e);
916 }
917 }
918
919
920
921
922
923
924
925
926
927 public List<AcompReferenciaAref> getListAcompReferenciaByTipoAcompanhamento(Long codTipoAcompanhamento) throws HibernateException, ECARException {
928 try {
929 StringBuilder str = new StringBuilder();
930 str.append("select aref from AcompReferenciaAref aref");
931 str.append(" where aref.tipoAcompanhamentoTa.codTa = :codTa");
932 str.append(" order by aref.anoAref desc, aref.mesAref desc, aref.dataInicioAref desc");
933
934 Query query = this.getSession().createQuery(str.toString());
935 query.setLong("codTa", codTipoAcompanhamento.longValue());
936 return query.list();
937
938 } catch (HibernateException e) {
939 this.logger.error(e);
940 throw new ECARException(e);
941 }
942 }
943
944
945
946
947
948
949
950
951
952
953 @SuppressWarnings("unchecked")
954 public List<AcompReferenciaAref> getListAcompReferenciaByTipoAcompanhamentoAbertos(Long codTipoAcompanhamento) throws HibernateException, ECARException {
955 try {
956 List<AcompReferenciaAref> listaAref = this.getListAcompReferenciaByTipoAcompanhamento(codTipoAcompanhamento);
957 List<AcompReferenciaAref> listaArefRetorno = new ArrayList<AcompReferenciaAref>();
958 for (AcompReferenciaAref aref : listaAref) {
959 Boolean aberto = false;
960 Set<AcompRefLimitesArl> limites = aref.getAcompRefLimitesArls();
961
962 aberto = (aref.getDataLimiteAcompFisicoAref().before(new Date()));
963
964 if (!aberto)
965 for (AcompRefLimitesArl arl : limites) {
966 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
967 Integer hj = new Integer(sdf.format(new Date()));
968
969 if (hj <= new Integer(sdf.format(arl.getDataLimiteArl()))) {
970 aberto = true;
971 break;
972 }
973 }
974 if (aberto) {
975 listaArefRetorno.add(aref);
976 }
977 }
978 return listaArefRetorno;
979 } catch (HibernateException e) {
980 this.logger.error(e);
981 throw new ECARException(e);
982 }
983 }
984
985
986
987
988
989
990
991
992
993
994 public List<AcompReferenciaAref> getListAcompReferenciaByTipoAcompanhamentoConcluidos(Long codTipoAcompanhamento) throws HibernateException, ECARException {
995 try {
996 List<AcompReferenciaAref> listaAref = this.getListAcompReferenciaByTipoAcompanhamento(codTipoAcompanhamento);
997 List<AcompReferenciaAref> listaArefRetorno = new ArrayList<AcompReferenciaAref>();
998 for (AcompReferenciaAref aref : listaAref) {
999 Boolean concluido = true;
1000 Set<AcompRefLimitesArl> limites = aref.getAcompRefLimitesArls();
1001
1002 if (aref.getDataLimiteAcompFisicoAref().compareTo(new Date()) >= 0) {
1003 concluido = false;
1004 }
1005
1006 if (concluido)
1007 for (AcompRefLimitesArl arl : limites) {
1008 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
1009 Integer hj = new Integer(sdf.format(new Date()));
1010
1011 if (hj <= new Integer(sdf.format(arl.getDataLimiteArl()))) {
1012 concluido = false;
1013 break;
1014 }
1015 }
1016 if (concluido) {
1017 listaArefRetorno.add(aref);
1018 }
1019 }
1020 return listaArefRetorno;
1021 } catch (HibernateException e) {
1022 this.logger.error(e);
1023 throw new ECARException(e);
1024 }
1025 }
1026
1027
1028
1029
1030
1031
1032
1033
1034 public List getAcompReferenciaItemAriByAref(Long codAref) throws HibernateException, ECARException {
1035 try {
1036 StringBuilder str = new StringBuilder();
1037 str.append("select ari from AcompReferenciaItemAri ari");
1038 str.append(" where ari.acompReferenciaAref.codAref = :codAref");
1039
1040 Query query = this.getSession().createQuery(str.toString());
1041 query.setLong("codAref", codAref.longValue());
1042
1043 return query.list();
1044
1045 } catch (HibernateException e) {
1046 this.logger.error(e);
1047 throw new ECARException(e);
1048 }
1049 }
1050
1051 public AcompRefItemLimitesArli getAcompRefItemLimitesArliByAriAndTpfa(Long codAri, Long codTpfa) throws ECARException {
1052 try {
1053 StringBuilder str = new StringBuilder();
1054 str.append("select arli from AcompRefItemLimitesArli arli");
1055 str.append(" where arli.acompReferenciaItemAri.codAri = :codAri");
1056 str.append(" and arli.tipoFuncAcompTpfa.codTpfa = :codTpfa");
1057
1058 Query query = this.getSession().createQuery(str.toString());
1059 query.setLong("codAri", codAri.longValue());
1060 query.setLong("codTpfa", codTpfa.longValue());
1061 query.setMaxResults(1);
1062
1063 return (AcompRefItemLimitesArli) query.uniqueResult();
1064
1065 } catch (HibernateException e) {
1066 this.logger.error(e);
1067 throw new ECARException(e);
1068 }
1069 }
1070
1071
1072
1073
1074
1075
1076 public List getListAcompReferenciaSuaResponsabilidade(SegurancaECAR seguranca) throws ECARException {
1077 List lista = null;
1078
1079
1080
1081
1082
1083 try {
1084
1085 Query query = this.session.createQuery("select aref from AcompReferenciaAref aref " + "join aref.acompReferenciaItemAris as aris " + "join aref.acompReferenciaItemAris as aris " + "join iett.itemEstUsutpfuacIettutfas as iettutfas " + "where aris.itemEstruturaIett.indAtivoIett = 'S' " + "and " + " (iettutfas.usuarioUsu = :usuario or iettutfas.sisAtributoSatb in (:gruposAcesso)) " + "order by aref.anoAref desc, aref.mesAref desc");
1086
1087 query.setParameterList("gruposAcesso", seguranca.getGruposAcesso());
1088 query.setParameter("usuario", seguranca.getUsuario());
1089
1090 lista = query.list();
1091
1092 } catch (HibernateException e) {
1093 this.logger.error(e);
1094 throw new ECARException("erro.hibernateException");
1095 }
1096
1097 return lista;
1098 }
1099 }