Commit a1e3c1bb0900ad1716c1c3819273f1b916cf7cc8

Authored by andre.guimaraes
1 parent fb4a12ef

Adiciona consulta a unidades do processo

Inclusão de serviço que consulte as unidades onde o processo está
aberto.
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 <modelVersion>4.0.0</modelVersion> 4 <modelVersion>4.0.0</modelVersion>
5 <groupId>br.gov.ans</groupId> 5 <groupId>br.gov.ans</groupId>
6 <artifactId>sei-broker</artifactId> 6 <artifactId>sei-broker</artifactId>
7 - <version>2.5.1</version> 7 + <version>2.6</version>
8 <packaging>war</packaging> 8 <packaging>war</packaging>
9 <name>sei-broker</name> 9 <name>sei-broker</name>
10 <description>Camada de integração REST para comunicação com o SEI</description> 10 <description>Camada de integração REST para comunicação com o SEI</description>
src/main/java/br/gov/ans/integracao/sei/client/Unidade.java
@@ -7,15 +7,19 @@ @@ -7,15 +7,19 @@
7 7
8 package br.gov.ans.integracao.sei.client; 8 package br.gov.ans.integracao.sei.client;
9 9
  10 +import javax.persistence.Entity;
  11 +import javax.persistence.Id;
10 import javax.xml.bind.annotation.XmlRootElement; 12 import javax.xml.bind.annotation.XmlRootElement;
11 13
12 import org.codehaus.jackson.annotate.JsonIgnoreProperties; 14 import org.codehaus.jackson.annotate.JsonIgnoreProperties;
13 import org.codehaus.jackson.map.annotate.JsonSerialize; 15 import org.codehaus.jackson.map.annotate.JsonSerialize;
14 16
  17 +@Entity
15 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) 18 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
16 @JsonIgnoreProperties(ignoreUnknown = true) 19 @JsonIgnoreProperties(ignoreUnknown = true)
17 @XmlRootElement 20 @XmlRootElement
18 public class Unidade implements java.io.Serializable { 21 public class Unidade implements java.io.Serializable {
  22 + @Id
19 private java.lang.String idUnidade; 23 private java.lang.String idUnidade;
20 24
21 private java.lang.String sigla; 25 private java.lang.String sigla;
@@ -166,7 +170,8 @@ public class Unidade implements java.io.Serializable { @@ -166,7 +170,8 @@ public class Unidade implements java.io.Serializable {
166 this.sinOuvidoria = sinOuvidoria; 170 this.sinOuvidoria = sinOuvidoria;
167 } 171 }
168 172
169 - private java.lang.Object __equalsCalc = null; 173 + private transient java.lang.Object __equalsCalc = null;
  174 +
170 public synchronized boolean equals(java.lang.Object obj) { 175 public synchronized boolean equals(java.lang.Object obj) {
171 if (!(obj instanceof Unidade)) return false; 176 if (!(obj instanceof Unidade)) return false;
172 Unidade other = (Unidade) obj; 177 Unidade other = (Unidade) obj;
@@ -200,7 +205,8 @@ public class Unidade implements java.io.Serializable { @@ -200,7 +205,8 @@ public class Unidade implements java.io.Serializable {
200 return _equals; 205 return _equals;
201 } 206 }
202 207
203 - private boolean __hashCodeCalc = false; 208 + private transient boolean __hashCodeCalc = false;
  209 +
204 public synchronized int hashCode() { 210 public synchronized int hashCode() {
205 if (__hashCodeCalc) { 211 if (__hashCodeCalc) {
206 return 0; 212 return 0;
src/main/java/br/gov/ans/integracao/sei/dao/UnidadeDAO.java 0 → 100644
@@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
  1 +package br.gov.ans.integracao.sei.dao;
  2 +
  3 +import java.util.List;
  4 +
  5 +import javax.persistence.EntityManager;
  6 +import javax.persistence.PersistenceContext;
  7 +import javax.persistence.PersistenceContextType;
  8 +import javax.persistence.Query;
  9 +
  10 +import br.gov.ans.integracao.sei.client.Unidade;
  11 +
  12 +public class UnidadeDAO {
  13 + @PersistenceContext(unitName = "sei_pu", type = PersistenceContextType.EXTENDED)
  14 + private EntityManager em;
  15 +
  16 + public List<Unidade> listarUnidadesProcesso(String idProcedimento){
  17 + StringBuilder sql = new StringBuilder("SELECT u.id_unidade idUnidade, u.sigla, u.descricao, u.sin_protocolo sinProtocolo, ");
  18 + sql.append("u.sin_arquivamento sinArquivamento, u.sin_ouvidoria sinOuvidoria ");
  19 + sql.append("FROM protocolo p ");
  20 + sql.append("JOIN atividade a ON p.id_protocolo = a.id_protocolo ");
  21 + sql.append("JOIN unidade u ON a.id_unidade = u.id_unidade ");
  22 + sql.append("JOIN tarefa t ON a.id_tarefa = t.id_tarefa ");
  23 + sql.append("WHERE p.id_protocolo = :protocolo ");
  24 + sql.append("and t.id_tarefa in (32, 29) ");
  25 + sql.append("group by u.id_unidade order by u.idx_unidade; ");
  26 +
  27 + Query query = em.createNativeQuery(sql.toString(), Unidade.class);
  28 +
  29 + query.setParameter("protocolo", idProcedimento);
  30 +
  31 + return query.getResultList();
  32 + }
  33 +}
src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java
@@ -46,12 +46,13 @@ import br.gov.ans.integracao.sei.client.RetornoConsultaProcedimento; @@ -46,12 +46,13 @@ import br.gov.ans.integracao.sei.client.RetornoConsultaProcedimento;
46 import br.gov.ans.integracao.sei.client.RetornoGeracaoProcedimento; 46 import br.gov.ans.integracao.sei.client.RetornoGeracaoProcedimento;
47 import br.gov.ans.integracao.sei.client.SeiPortTypeProxy; 47 import br.gov.ans.integracao.sei.client.SeiPortTypeProxy;
48 import br.gov.ans.integracao.sei.client.TipoProcedimento; 48 import br.gov.ans.integracao.sei.client.TipoProcedimento;
  49 +import br.gov.ans.integracao.sei.client.Unidade;
49 import br.gov.ans.integracao.sei.dao.DocumentoDAO; 50 import br.gov.ans.integracao.sei.dao.DocumentoDAO;
50 import br.gov.ans.integracao.sei.dao.ProcessoDAO; 51 import br.gov.ans.integracao.sei.dao.ProcessoDAO;
51 import br.gov.ans.integracao.sei.dao.SiparDAO; 52 import br.gov.ans.integracao.sei.dao.SiparDAO;
  53 +import br.gov.ans.integracao.sei.dao.UnidadeDAO;
52 import br.gov.ans.integracao.sei.modelo.DocumentoResumido; 54 import br.gov.ans.integracao.sei.modelo.DocumentoResumido;
53 import br.gov.ans.integracao.sei.modelo.EnvioDeProcesso; 55 import br.gov.ans.integracao.sei.modelo.EnvioDeProcesso;
54 -import br.gov.ans.integracao.sei.modelo.InclusaoDocumento;  
55 import br.gov.ans.integracao.sei.modelo.Motivo; 56 import br.gov.ans.integracao.sei.modelo.Motivo;
56 import br.gov.ans.integracao.sei.modelo.NovoAndamento; 57 import br.gov.ans.integracao.sei.modelo.NovoAndamento;
57 import br.gov.ans.integracao.sei.modelo.NovoProcesso; 58 import br.gov.ans.integracao.sei.modelo.NovoProcesso;
@@ -78,6 +79,9 @@ public class ProcessoResource { @@ -78,6 +79,9 @@ public class ProcessoResource {
78 79
79 @Inject 80 @Inject
80 private DocumentoDAO documentoDAO; 81 private DocumentoDAO documentoDAO;
  82 +
  83 + @Inject
  84 + private UnidadeDAO unidadeDAO;
81 85
82 @Inject 86 @Inject
83 private SeiPortTypeProxy seiNativeService; 87 private SeiPortTypeProxy seiNativeService;
@@ -1295,6 +1299,21 @@ public class ProcessoResource { @@ -1295,6 +1299,21 @@ public class ProcessoResource {
1295 } 1299 }
1296 } 1300 }
1297 1301
  1302 + @GET
  1303 + @Path("/processos/{processo:\\d+}/unidades")
  1304 + @Produces(MediaType.APPLICATION_JSON)
  1305 + public Response consultarUnidadesProcesso(@PathParam("processo") String processo) throws Exception{
  1306 + String idProcedimento = consultarIdProcedimento(processo);
  1307 +
  1308 + List<Unidade> unidades = unidadeDAO.listarUnidadesProcesso(idProcedimento);
  1309 +
  1310 + if(unidades.isEmpty()){
  1311 + throw new ResourceNotFoundException(messages.getMessage("erro.nao.unidades.processo.aberto"));
  1312 + }
  1313 +
  1314 + return Response.ok(unidades).build();
  1315 + }
  1316 +
1298 public URI getResourcePath(String resourceId){ 1317 public URI getResourcePath(String resourceId){
1299 UriBuilder builder = uriInfo.getAbsolutePathBuilder(); 1318 UriBuilder builder = uriInfo.getAbsolutePathBuilder();
1300 1319
src/main/java/br/gov/ans/utils/PDFUtil.java
@@ -16,10 +16,10 @@ public class PDFUtil { @@ -16,10 +16,10 @@ public class PDFUtil {
16 tidy.setXHTML(true); 16 tidy.setXHTML(true);
17 17
18 Document document = tidy.parseDOM(new ByteArrayInputStream(bytes), null); 18 Document document = tidy.parseDOM(new ByteArrayInputStream(bytes), null);
19 - 19 +
20 ITextRenderer renderer = new ITextRenderer(); 20 ITextRenderer renderer = new ITextRenderer();
21 renderer.setDocument(document, null); 21 renderer.setDocument(document, null);
22 - renderer.layout(); 22 + renderer.layout();
23 23
24 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 24 ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
25 renderer.createPDF(outputStream); 25 renderer.createPDF(outputStream);
src/main/resources/messages.properties
@@ -30,6 +30,7 @@ erro.campos.obrigatorios.sobrestamento.processo = É necessário informar o número @@ -30,6 +30,7 @@ erro.campos.obrigatorios.sobrestamento.processo = É necessário informar o número
30 erro.marcar.processo = Ocorreu um erro ao adicionar o marcador ao processo. 30 erro.marcar.processo = Ocorreu um erro ao adicionar o marcador ao processo.
31 erro.motivo.cancelamento.obrigatorio = É obrigatório informar o motivo do cancelamento. 31 erro.motivo.cancelamento.obrigatorio = É obrigatório informar o motivo do cancelamento.
32 erro.motivo.nao.infomado = Motivo não informado. 32 erro.motivo.nao.infomado = Motivo não informado.
  33 +erro.nao.unidades.processo.aberto = Não há unidades onde o processo esteja aberto.
33 erro.nenhum.contato.encontrado = Nenhum contato encontrado. 34 erro.nenhum.contato.encontrado = Nenhum contato encontrado.
34 erro.nenhum.documento.encontrado.interessado = Nenhum documento foi encontrado para o interessado {0}. 35 erro.nenhum.documento.encontrado.interessado = Nenhum documento foi encontrado para o interessado {0}.
35 erro.nenhum.processo.encontrado.filtros = Nenhum processo encontrado para os filtros informados. 36 erro.nenhum.processo.encontrado.filtros = Nenhum processo encontrado para os filtros informados.