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.
pom.xml
... ... @@ -4,7 +4,7 @@
4 4 <modelVersion>4.0.0</modelVersion>
5 5 <groupId>br.gov.ans</groupId>
6 6 <artifactId>sei-broker</artifactId>
7   - <version>2.5.1</version>
  7 + <version>2.6</version>
8 8 <packaging>war</packaging>
9 9 <name>sei-broker</name>
10 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 7  
8 8 package br.gov.ans.integracao.sei.client;
9 9  
  10 +import javax.persistence.Entity;
  11 +import javax.persistence.Id;
10 12 import javax.xml.bind.annotation.XmlRootElement;
11 13  
12 14 import org.codehaus.jackson.annotate.JsonIgnoreProperties;
13 15 import org.codehaus.jackson.map.annotate.JsonSerialize;
14 16  
  17 +@Entity
15 18 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
16 19 @JsonIgnoreProperties(ignoreUnknown = true)
17 20 @XmlRootElement
18 21 public class Unidade implements java.io.Serializable {
  22 + @Id
19 23 private java.lang.String idUnidade;
20 24  
21 25 private java.lang.String sigla;
... ... @@ -166,7 +170,8 @@ public class Unidade implements java.io.Serializable {
166 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 175 public synchronized boolean equals(java.lang.Object obj) {
171 176 if (!(obj instanceof Unidade)) return false;
172 177 Unidade other = (Unidade) obj;
... ... @@ -200,7 +205,8 @@ public class Unidade implements java.io.Serializable {
200 205 return _equals;
201 206 }
202 207  
203   - private boolean __hashCodeCalc = false;
  208 + private transient boolean __hashCodeCalc = false;
  209 +
204 210 public synchronized int hashCode() {
205 211 if (__hashCodeCalc) {
206 212 return 0;
... ...
src/main/java/br/gov/ans/integracao/sei/dao/UnidadeDAO.java 0 → 100644
... ... @@ -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 46 import br.gov.ans.integracao.sei.client.RetornoGeracaoProcedimento;
47 47 import br.gov.ans.integracao.sei.client.SeiPortTypeProxy;
48 48 import br.gov.ans.integracao.sei.client.TipoProcedimento;
  49 +import br.gov.ans.integracao.sei.client.Unidade;
49 50 import br.gov.ans.integracao.sei.dao.DocumentoDAO;
50 51 import br.gov.ans.integracao.sei.dao.ProcessoDAO;
51 52 import br.gov.ans.integracao.sei.dao.SiparDAO;
  53 +import br.gov.ans.integracao.sei.dao.UnidadeDAO;
52 54 import br.gov.ans.integracao.sei.modelo.DocumentoResumido;
53 55 import br.gov.ans.integracao.sei.modelo.EnvioDeProcesso;
54   -import br.gov.ans.integracao.sei.modelo.InclusaoDocumento;
55 56 import br.gov.ans.integracao.sei.modelo.Motivo;
56 57 import br.gov.ans.integracao.sei.modelo.NovoAndamento;
57 58 import br.gov.ans.integracao.sei.modelo.NovoProcesso;
... ... @@ -78,6 +79,9 @@ public class ProcessoResource {
78 79  
79 80 @Inject
80 81 private DocumentoDAO documentoDAO;
  82 +
  83 + @Inject
  84 + private UnidadeDAO unidadeDAO;
81 85  
82 86 @Inject
83 87 private SeiPortTypeProxy seiNativeService;
... ... @@ -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 1317 public URI getResourcePath(String resourceId){
1299 1318 UriBuilder builder = uriInfo.getAbsolutePathBuilder();
1300 1319  
... ...
src/main/java/br/gov/ans/utils/PDFUtil.java
... ... @@ -16,10 +16,10 @@ public class PDFUtil {
16 16 tidy.setXHTML(true);
17 17  
18 18 Document document = tidy.parseDOM(new ByteArrayInputStream(bytes), null);
19   -
  19 +
20 20 ITextRenderer renderer = new ITextRenderer();
21 21 renderer.setDocument(document, null);
22   - renderer.layout();
  22 + renderer.layout();
23 23  
24 24 ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
25 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 30 erro.marcar.processo = Ocorreu um erro ao adicionar o marcador ao processo.
31 31 erro.motivo.cancelamento.obrigatorio = É obrigatório informar o motivo do cancelamento.
32 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 34 erro.nenhum.contato.encontrado = Nenhum contato encontrado.
34 35 erro.nenhum.documento.encontrado.interessado = Nenhum documento foi encontrado para o interessado {0}.
35 36 erro.nenhum.processo.encontrado.filtros = Nenhum processo encontrado para os filtros informados.
... ...