From 17d5871c4ea27d93ac75c48ad679b29266518fa8 Mon Sep 17 00:00:00 2001 From: andre.guimaraes Date: Fri, 8 Jun 2018 11:38:11 -0300 Subject: [PATCH] Ajusta query de consulta unidades processo --- src/main/java/br/gov/ans/integracao/sei/dao/UnidadeDAO.java | 51 ++++++++++++++++++++++++++++++++++++++++++++++----- src/main/java/br/gov/ans/integracao/sei/modelo/UnidadeTarefa.java | 19 +++++++++++++++++++ 2 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 src/main/java/br/gov/ans/integracao/sei/modelo/UnidadeTarefa.java diff --git a/src/main/java/br/gov/ans/integracao/sei/dao/UnidadeDAO.java b/src/main/java/br/gov/ans/integracao/sei/dao/UnidadeDAO.java index 114d7d5..c437698 100644 --- a/src/main/java/br/gov/ans/integracao/sei/dao/UnidadeDAO.java +++ b/src/main/java/br/gov/ans/integracao/sei/dao/UnidadeDAO.java @@ -1,6 +1,8 @@ package br.gov.ans.integracao.sei.dao; import java.util.List; +import java.util.function.Predicate; +import java.util.stream.Collectors; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @@ -8,26 +10,65 @@ import javax.persistence.PersistenceContextType; import javax.persistence.Query; import br.gov.ans.integracao.sei.client.Unidade; +import br.gov.ans.integracao.sei.modelo.UnidadeTarefa; public class UnidadeDAO { @PersistenceContext(unitName = "sei_pu", type = PersistenceContextType.EXTENDED) private EntityManager em; + private static final int ABERTURA_PROCESSO = 1; + private static final int CONCLUSAO_PROCESSO = 28; + private static final int REABERTURA_PROCESSO = 29; + private static final int ENVIO_PROCESSO = 32; + private static final int RECEBIMENTO_PROCESSO = 48; + public List listarUnidadesProcesso(String idProcedimento){ StringBuilder sql = new StringBuilder("SELECT u.id_unidade idUnidade, u.sigla, u.descricao, u.sin_protocolo sinProtocolo, "); - sql.append("u.sin_arquivamento sinArquivamento, u.sin_ouvidoria sinOuvidoria "); + sql.append("u.sin_arquivamento sinArquivamento, u.sin_ouvidoria sinOuvidoria, t.id_tarefa tarefa "); sql.append("FROM protocolo p "); sql.append("JOIN atividade a ON p.id_protocolo = a.id_protocolo "); sql.append("JOIN unidade u ON a.id_unidade = u.id_unidade "); sql.append("JOIN tarefa t ON a.id_tarefa = t.id_tarefa "); sql.append("WHERE p.id_protocolo = :protocolo "); - sql.append("and t.id_tarefa in (32, 29, 1) "); - sql.append("group by u.id_unidade order by u.idx_unidade; "); + sql.append("and t.id_tarefa in ("); + sql.append(ABERTURA_PROCESSO + ","); + sql.append(CONCLUSAO_PROCESSO + ","); + sql.append(REABERTURA_PROCESSO + ","); + sql.append(ENVIO_PROCESSO + ","); + sql.append(RECEBIMENTO_PROCESSO); + sql.append(") "); + sql.append("order by a.dth_abertura desc "); - Query query = em.createNativeQuery(sql.toString(), Unidade.class); + Query query = em.createNativeQuery(sql.toString(), UnidadeTarefa.class); query.setParameter("protocolo", idProcedimento); - return query.getResultList(); + List resultado = query.getResultList(); + + List unidades = resultado.stream() + .filter(makeUntil(u -> u.getTarefa() == 28)) + .distinct() + .filter(u -> u.getTarefa() != 28) + .collect(Collectors.toList()); + + return unidades; + } + + public static Predicate makeUntil(final Predicate predicate) { + return new Predicate() { + + private boolean hasMatched; + + @Override + public boolean test(final T s) { + if (hasMatched) { + return false; + } + else { + hasMatched = predicate.test(s); + return true; + } + } + }; } } diff --git a/src/main/java/br/gov/ans/integracao/sei/modelo/UnidadeTarefa.java b/src/main/java/br/gov/ans/integracao/sei/modelo/UnidadeTarefa.java new file mode 100644 index 0000000..fe58cd5 --- /dev/null +++ b/src/main/java/br/gov/ans/integracao/sei/modelo/UnidadeTarefa.java @@ -0,0 +1,19 @@ +package br.gov.ans.integracao.sei.modelo; + +import javax.persistence.Entity; + +import br.gov.ans.integracao.sei.client.Unidade; + +@Entity +public class UnidadeTarefa extends Unidade{ + + private int tarefa; + + public int getTarefa() { + return tarefa; + } + + public void setTarefa(int tarefa) { + this.tarefa = tarefa; + } +} \ No newline at end of file -- libgit2 0.21.2