From 9d6d8b0195875ae76378a7729cba0812d07de163 Mon Sep 17 00:00:00 2001 From: andre guimaraes Date: Mon, 9 Oct 2017 13:46:29 +0000 Subject: [PATCH] Atualização do retorno do método consulta documentos do processo, agora o DocumentoResumido retorna o Tipo do documento de uma forma mais clara. --- .settings/org.eclipse.wst.common.component | 2 +- src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java | 42 +++++++++++++++--------------------------- src/main/java/br/gov/ans/integracao/sei/modelo/DocumentoResumido.java | 48 +++++++++++++++++++----------------------------- src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java | 9 ++++----- src/main/resources/META-INF/persistence.xml | 5 +++-- src/main/webapp/api-docs/api_data.js | 11 ++--------- src/main/webapp/api-docs/api_data.json | 11 ++--------- src/main/webapp/api-docs/api_project.js | 2 +- src/main/webapp/api-docs/api_project.json | 2 +- 9 files changed, 48 insertions(+), 84 deletions(-) diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index e2f474a..98f60d2 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,5 @@ - + diff --git a/src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java b/src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java index c417a01..a55bfb7 100644 --- a/src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java +++ b/src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java @@ -3,6 +3,7 @@ package br.gov.ans.integracao.sei.dao; import static br.gov.ans.integracao.sei.utils.Util.setPaginacaoQuery; import static br.gov.ans.integracao.sei.utils.Util.setQueryParameters; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -14,6 +15,7 @@ import javax.persistence.Query; import org.apache.commons.lang3.StringUtils; import br.gov.ans.integracao.sei.modelo.DocumentoResumido; +import br.gov.ans.integracao.sei.modelo.ProcessoResumido; public class DocumentoDAO { @PersistenceContext(unitName = "sei_pu", type = PersistenceContextType.EXTENDED) @@ -43,7 +45,7 @@ public class DocumentoDAO { builder.append("order by pr.dta_geracao asc"); - Query query = em.createNativeQuery(builder.toString(), DocumentoResumido.class); + Query query = em.createNativeQuery(builder.toString(), "DocumentoResumidoMapping"); setQueryParameters(query, parametros); @@ -79,33 +81,10 @@ public class DocumentoDAO { } @SuppressWarnings("unchecked") - public List getDocumentosProcessoV1(String idProcedimento){ - HashMap parametros = new HashMap(); - - StringBuilder builder = new StringBuilder("SELECT pr.protocolo_formatado_pesquisa numero, s.nome tipo, d.numero numeroInformado, "); - builder.append("CASE pr.sta_protocolo WHEN 'G' THEN 'GERADO' ELSE 'RECEBIDO' END origem, "); - builder.append("pr.dta_geracao dataGeracao, null as processo, null as unidade "); - builder.append("FROM protocolo pr, documento d, serie s "); - builder.append("WHERE d.id_serie = s.id_serie "); - builder.append("AND pr.id_protocolo = d.id_documento "); - builder.append("AND d.id_procedimento = :idProcedimento "); - - parametros.put("idProcedimento", idProcedimento); - - builder.append("ORDER BY pr.dta_geracao ASC"); - - Query query = em.createNativeQuery(builder.toString(), DocumentoResumido.class); - - setQueryParameters(query, parametros); - - return query.getResultList(); - } - - @SuppressWarnings("unchecked") public List getDocumentosProcesso(String idProcedimento, String codigoTipo, String origem, boolean somenteAssinados){ HashMap parametros = new HashMap(); - StringBuilder builder = new StringBuilder("SELECT pr.protocolo_formatado_pesquisa numero, s.nome tipo, s.id_serie codigoTipo, d.numero numeroInformado, "); + StringBuilder builder = new StringBuilder("SELECT pr.protocolo_formatado_pesquisa numero, s.nome tipoNome, s.id_serie tipoCodigo, d.numero numeroInformado, "); builder.append("CASE pr.sta_protocolo WHEN 'G' THEN 'GERADO' ELSE 'RECEBIDO' END origem, d.id_tipo_conferencia tipoConferencia, "); builder.append("pr.dta_geracao dataGeracao, null as processo, null as unidade, "); builder.append("CASE WHEN a.id_assinatura is null THEN false ELSE true END assinado "); @@ -135,11 +114,20 @@ public class DocumentoDAO { builder.append("GROUP BY numero ORDER BY pr.dta_geracao ASC"); - Query query = em.createNativeQuery(builder.toString(), DocumentoResumido.class); + Query query = em.createNativeQuery(builder.toString(), "DocumentoResumidoMapping"); setQueryParameters(query, parametros); - return query.getResultList(); + List results = query.getResultList(); + + List documentos = new ArrayList(); + + results.stream().forEach((record) -> { + DocumentoResumido documento = (DocumentoResumido) record[0]; + documentos.add(documento); + }); + + return documentos; } } diff --git a/src/main/java/br/gov/ans/integracao/sei/modelo/DocumentoResumido.java b/src/main/java/br/gov/ans/integracao/sei/modelo/DocumentoResumido.java index dd4aaff..ccdf209 100644 --- a/src/main/java/br/gov/ans/integracao/sei/modelo/DocumentoResumido.java +++ b/src/main/java/br/gov/ans/integracao/sei/modelo/DocumentoResumido.java @@ -6,6 +6,7 @@ import javax.persistence.Entity; import javax.persistence.EntityResult; import javax.persistence.FieldResult; import javax.persistence.Id; +import javax.persistence.OneToOne; import javax.persistence.SqlResultSetMapping; import javax.xml.bind.annotation.XmlRootElement; @@ -15,39 +16,36 @@ import org.codehaus.jackson.map.annotate.JsonSerialize; @Entity @SqlResultSetMapping(name = "DocumentoResumidoMapping", entities = { @EntityResult(entityClass = DocumentoResumido.class, fields = { @FieldResult(name = "numero", column = "numero"), - @FieldResult(name = "tipo", column = "tipo"), @FieldResult(name = "numeroInformado", column = "numeroInformado"), + @FieldResult(name = "unidade", column = "unidade"), @FieldResult(name = "origem", column = "origem"), - @FieldResult(name = "dataGeracao", column = "dataGeracao") }) }) + @FieldResult(name = "processo", column = "processo"), + @FieldResult(name = "tipoConferencia", column = "tipoConferencia"), + @FieldResult(name = "assinado", column = "assinado"), + @FieldResult(name = "dataGeracao", column = "dataGeracao"), + @FieldResult(name = "tipo", column = "tipoCodigo") + }), + @EntityResult( + entityClass = Tipo.class, + fields = { + @FieldResult(name = "codigo", column = "tipoCodigo"), + @FieldResult(name = "nome", column = "tipoNome")}) + }) @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) public class DocumentoResumido { @Id private String numero; private String numeroInformado; - private String tipo; private String unidade; private String origem; private Date dataGeracao; private String processo; - private String codigoTipo; + + @OneToOne + private Tipo tipo; private String tipoConferencia; private boolean assinado; - public DocumentoResumido(){ - - } - - public DocumentoResumido(String numero, String tipo, String numeroInformado, String origem, Date dataGeracao){ - this.numero = numero; - this.tipo = tipo; - this.numeroInformado = numeroInformado; - this.origem = origem; - this.dataGeracao = dataGeracao; - } - - - - @Id public String getNumero() { return numero; } @@ -56,11 +54,11 @@ public class DocumentoResumido { this.numero = numero; } - public String getTipo() { + public Tipo getTipo() { return tipo; } - public void setTipo(String tipo) { + public void setTipo(Tipo tipo) { this.tipo = tipo; } @@ -104,14 +102,6 @@ public class DocumentoResumido { this.numeroInformado = numeroInformado; } - public String getCodigoTipo() { - return codigoTipo; - } - - public void setCodigoTipo(String codigoTipo) { - this.codigoTipo = codigoTipo; - } - public String getTipoConferencia() { return tipoConferencia; } 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 fe5e84b..35eab68 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 @@ -1127,7 +1127,7 @@ public class ProcessoResource { } /** - * @api {get} /:unidade/processos/:processo/documentos Listar documentos + * @api {get} /processos/:processo/documentos Listar documentos * @apiName listarDocumentosPorProcesso * @apiGroup Processo * @apiVersion 2.0.0 @@ -1136,7 +1136,6 @@ public class ProcessoResource { * * @apiDescription Retorna os documentos de um determinado processo. * - * @apiParam (Path Parameters) {String} unidade Sigla da Unidade cadastrada no SEI. * @apiParam (Path Parameters) {String} processo Número do processo. * * @apiParam (Query Parameters) {String} [tipo=null] Identificador do tipo do documento, caso seja necessário filtrar pelo tipo @@ -1144,7 +1143,7 @@ public class ProcessoResource { * @apiParam (Query Parameters) {boolean} [somenteAssinados=false] Exibir somente documentos assinados * * @apiExample Exemplo de requisição: - * curl -i https:///sei-broker/service/cosap/processos/33910003149201793/documentos + * curl -i https:///sei-broker/service/processos/33910003149201793/documentos * * @apiSuccess (Sucesso Response Body - 200) {List} documentos Lista com os documentos encontrados. * @apiSuccess (Sucesso Response Body - 200) {DocumentoResumido} documentos.documentoResumido Resumo do documento encontrado no SEI. @@ -1176,9 +1175,9 @@ public class ProcessoResource { * } */ @GET - @Path("/{unidade}/processos/{processo:\\d+}/documentos") + @Path("/processos/{processo:\\d+}/documentos") @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) - public List listarDocumentosPorProcesso(@PathParam("unidade") String unidade, @PathParam("processo") String processo, @QueryParam("tipo")String tipo, + public List listarDocumentosPorProcesso(@PathParam("processo") String processo, @QueryParam("tipo")String tipo, @QueryParam("origem") String origem, @QueryParam("somenteAssinados") boolean somenteAssinados) throws RemoteException, Exception{ try{ BigInteger idProcedimento = processoDAO.getIdProcedimento(formatarNumeroProcesso(processo)); diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index 9730aaa..033ad9a 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -21,10 +21,11 @@ jdbc/sei-mysql - - br.gov.ans.integracao.sei.modelo.ProcessoResumido br.gov.ans.integracao.sei.modelo.Contato + br.gov.ans.integracao.sei.modelo.DocumentoResumido + br.gov.ans.integracao.sei.modelo.ProcessoResumido br.gov.ans.integracao.sei.modelo.Tarefa + br.gov.ans.integracao.sei.modelo.Tipo diff --git a/src/main/webapp/api-docs/api_data.js b/src/main/webapp/api-docs/api_data.js index 5710934..85af008 100644 --- a/src/main/webapp/api-docs/api_data.js +++ b/src/main/webapp/api-docs/api_data.js @@ -7151,7 +7151,7 @@ define({ "api": [ }, { "type": "get", - "url": "/:unidade/processos/:processo/documentos", + "url": "/processos/:processo/documentos", "title": "Listar documentos", "name": "listarDocumentosPorProcesso", "group": "Processo", @@ -7169,13 +7169,6 @@ define({ "api": [ "group": "Path Parameters", "type": "String", "optional": false, - "field": "unidade", - "description": "

Sigla da Unidade cadastrada no SEI.

" - }, - { - "group": "Path Parameters", - "type": "String", - "optional": false, "field": "processo", "description": "

Número do processo.

" } @@ -7214,7 +7207,7 @@ define({ "api": [ "examples": [ { "title": "Exemplo de requisição:\t", - "content": "curl -i https:///sei-broker/service/cosap/processos/33910003149201793/documentos", + "content": "curl -i https:///sei-broker/service/processos/33910003149201793/documentos", "type": "json" } ], diff --git a/src/main/webapp/api-docs/api_data.json b/src/main/webapp/api-docs/api_data.json index 4cc7dbb..0e9b2ed 100644 --- a/src/main/webapp/api-docs/api_data.json +++ b/src/main/webapp/api-docs/api_data.json @@ -7151,7 +7151,7 @@ }, { "type": "get", - "url": "/:unidade/processos/:processo/documentos", + "url": "/processos/:processo/documentos", "title": "Listar documentos", "name": "listarDocumentosPorProcesso", "group": "Processo", @@ -7169,13 +7169,6 @@ "group": "Path Parameters", "type": "String", "optional": false, - "field": "unidade", - "description": "

Sigla da Unidade cadastrada no SEI.

" - }, - { - "group": "Path Parameters", - "type": "String", - "optional": false, "field": "processo", "description": "

Número do processo.

" } @@ -7214,7 +7207,7 @@ "examples": [ { "title": "Exemplo de requisição:\t", - "content": "curl -i https:///sei-broker/service/cosap/processos/33910003149201793/documentos", + "content": "curl -i https:///sei-broker/service/processos/33910003149201793/documentos", "type": "json" } ], diff --git a/src/main/webapp/api-docs/api_project.js b/src/main/webapp/api-docs/api_project.js index 85938e2..183ff49 100644 --- a/src/main/webapp/api-docs/api_project.js +++ b/src/main/webapp/api-docs/api_project.js @@ -8,7 +8,7 @@ define({ "apidoc": "0.2.0", "generator": { "name": "apidoc", - "time": "2017-10-04T19:12:14.480Z", + "time": "2017-10-09T13:37:15.818Z", "url": "http://apidocjs.com", "version": "0.15.1" } diff --git a/src/main/webapp/api-docs/api_project.json b/src/main/webapp/api-docs/api_project.json index 0a73600..d12fcb0 100644 --- a/src/main/webapp/api-docs/api_project.json +++ b/src/main/webapp/api-docs/api_project.json @@ -8,7 +8,7 @@ "apidoc": "0.2.0", "generator": { "name": "apidoc", - "time": "2017-10-04T19:12:14.480Z", + "time": "2017-10-09T13:37:15.818Z", "url": "http://apidocjs.com", "version": "0.15.1" } -- libgit2 0.21.2