From a1e3c1bb0900ad1716c1c3819273f1b916cf7cc8 Mon Sep 17 00:00:00 2001 From: andre.guimaraes Date: Fri, 1 Jun 2018 09:47:47 -0300 Subject: [PATCH] Adiciona consulta a unidades do processo --- pom.xml | 2 +- src/main/java/br/gov/ans/integracao/sei/client/Unidade.java | 10 ++++++++-- src/main/java/br/gov/ans/integracao/sei/dao/UnidadeDAO.java | 33 +++++++++++++++++++++++++++++++++ src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java | 21 ++++++++++++++++++++- src/main/java/br/gov/ans/utils/PDFUtil.java | 4 ++-- src/main/resources/messages.properties | 1 + 6 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 src/main/java/br/gov/ans/integracao/sei/dao/UnidadeDAO.java diff --git a/pom.xml b/pom.xml index bb201a0..853d96a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.gov.ans sei-broker - 2.5.1 + 2.6 war sei-broker Camada de integração REST para comunicação com o SEI diff --git a/src/main/java/br/gov/ans/integracao/sei/client/Unidade.java b/src/main/java/br/gov/ans/integracao/sei/client/Unidade.java index 8f1301a..6349322 100644 --- a/src/main/java/br/gov/ans/integracao/sei/client/Unidade.java +++ b/src/main/java/br/gov/ans/integracao/sei/client/Unidade.java @@ -7,15 +7,19 @@ package br.gov.ans.integracao.sei.client; +import javax.persistence.Entity; +import javax.persistence.Id; import javax.xml.bind.annotation.XmlRootElement; import org.codehaus.jackson.annotate.JsonIgnoreProperties; import org.codehaus.jackson.map.annotate.JsonSerialize; +@Entity @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) @XmlRootElement public class Unidade implements java.io.Serializable { + @Id private java.lang.String idUnidade; private java.lang.String sigla; @@ -166,7 +170,8 @@ public class Unidade implements java.io.Serializable { this.sinOuvidoria = sinOuvidoria; } - private java.lang.Object __equalsCalc = null; + private transient java.lang.Object __equalsCalc = null; + public synchronized boolean equals(java.lang.Object obj) { if (!(obj instanceof Unidade)) return false; Unidade other = (Unidade) obj; @@ -200,7 +205,8 @@ public class Unidade implements java.io.Serializable { return _equals; } - private boolean __hashCodeCalc = false; + private transient boolean __hashCodeCalc = false; + public synchronized int hashCode() { if (__hashCodeCalc) { return 0; 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 new file mode 100644 index 0000000..dc0252e --- /dev/null +++ b/src/main/java/br/gov/ans/integracao/sei/dao/UnidadeDAO.java @@ -0,0 +1,33 @@ +package br.gov.ans.integracao.sei.dao; + +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.PersistenceContextType; +import javax.persistence.Query; + +import br.gov.ans.integracao.sei.client.Unidade; + +public class UnidadeDAO { + @PersistenceContext(unitName = "sei_pu", type = PersistenceContextType.EXTENDED) + private EntityManager em; + + 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("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) "); + sql.append("group by u.id_unidade order by u.idx_unidade; "); + + Query query = em.createNativeQuery(sql.toString(), Unidade.class); + + query.setParameter("protocolo", idProcedimento); + + return query.getResultList(); + } +} diff --git a/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java b/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java index 1db1918..0da0bbf 100644 --- a/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java +++ b/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java @@ -46,12 +46,13 @@ import br.gov.ans.integracao.sei.client.RetornoConsultaProcedimento; import br.gov.ans.integracao.sei.client.RetornoGeracaoProcedimento; import br.gov.ans.integracao.sei.client.SeiPortTypeProxy; import br.gov.ans.integracao.sei.client.TipoProcedimento; +import br.gov.ans.integracao.sei.client.Unidade; import br.gov.ans.integracao.sei.dao.DocumentoDAO; import br.gov.ans.integracao.sei.dao.ProcessoDAO; import br.gov.ans.integracao.sei.dao.SiparDAO; +import br.gov.ans.integracao.sei.dao.UnidadeDAO; import br.gov.ans.integracao.sei.modelo.DocumentoResumido; import br.gov.ans.integracao.sei.modelo.EnvioDeProcesso; -import br.gov.ans.integracao.sei.modelo.InclusaoDocumento; import br.gov.ans.integracao.sei.modelo.Motivo; import br.gov.ans.integracao.sei.modelo.NovoAndamento; import br.gov.ans.integracao.sei.modelo.NovoProcesso; @@ -78,6 +79,9 @@ public class ProcessoResource { @Inject private DocumentoDAO documentoDAO; + + @Inject + private UnidadeDAO unidadeDAO; @Inject private SeiPortTypeProxy seiNativeService; @@ -1295,6 +1299,21 @@ public class ProcessoResource { } } + @GET + @Path("/processos/{processo:\\d+}/unidades") + @Produces(MediaType.APPLICATION_JSON) + public Response consultarUnidadesProcesso(@PathParam("processo") String processo) throws Exception{ + String idProcedimento = consultarIdProcedimento(processo); + + List unidades = unidadeDAO.listarUnidadesProcesso(idProcedimento); + + if(unidades.isEmpty()){ + throw new ResourceNotFoundException(messages.getMessage("erro.nao.unidades.processo.aberto")); + } + + return Response.ok(unidades).build(); + } + public URI getResourcePath(String resourceId){ UriBuilder builder = uriInfo.getAbsolutePathBuilder(); diff --git a/src/main/java/br/gov/ans/utils/PDFUtil.java b/src/main/java/br/gov/ans/utils/PDFUtil.java index a4b3123..cb8da3a 100644 --- a/src/main/java/br/gov/ans/utils/PDFUtil.java +++ b/src/main/java/br/gov/ans/utils/PDFUtil.java @@ -16,10 +16,10 @@ public class PDFUtil { tidy.setXHTML(true); Document document = tidy.parseDOM(new ByteArrayInputStream(bytes), null); - + ITextRenderer renderer = new ITextRenderer(); renderer.setDocument(document, null); - renderer.layout(); + renderer.layout(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); renderer.createPDF(outputStream); diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index fa93221..c2b8d82 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -30,6 +30,7 @@ erro.campos.obrigatorios.sobrestamento.processo = É necessário informar o número erro.marcar.processo = Ocorreu um erro ao adicionar o marcador ao processo. erro.motivo.cancelamento.obrigatorio = É obrigatório informar o motivo do cancelamento. erro.motivo.nao.infomado = Motivo não informado. +erro.nao.unidades.processo.aberto = Não há unidades onde o processo esteja aberto. erro.nenhum.contato.encontrado = Nenhum contato encontrado. erro.nenhum.documento.encontrado.interessado = Nenhum documento foi encontrado para o interessado {0}. erro.nenhum.processo.encontrado.filtros = Nenhum processo encontrado para os filtros informados. -- libgit2 0.21.2