Commit 9d6d8b0195875ae76378a7729cba0812d07de163
1 parent
eb9f4811
Exists in
master
and in
1 other branch
Atualização do retorno do método consulta documentos do processo, agora o Docume…
…ntoResumido retorna o Tipo do documento de uma forma mais clara.
Showing
9 changed files
with
48 additions
and
84 deletions
Show diff stats
.settings/org.eclipse.wst.common.component
| 1 | 1 | <?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0"> |
| 2 | - <wb-module deploy-name="sei-broker-2.1"> | |
| 2 | + <wb-module deploy-name="sei-broker-2.3"> | |
| 3 | 3 | <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/> |
| 4 | 4 | <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> |
| 5 | 5 | <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/> | ... | ... |
src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java
| ... | ... | @@ -3,6 +3,7 @@ package br.gov.ans.integracao.sei.dao; |
| 3 | 3 | import static br.gov.ans.integracao.sei.utils.Util.setPaginacaoQuery; |
| 4 | 4 | import static br.gov.ans.integracao.sei.utils.Util.setQueryParameters; |
| 5 | 5 | |
| 6 | +import java.util.ArrayList; | |
| 6 | 7 | import java.util.HashMap; |
| 7 | 8 | import java.util.List; |
| 8 | 9 | |
| ... | ... | @@ -14,6 +15,7 @@ import javax.persistence.Query; |
| 14 | 15 | import org.apache.commons.lang3.StringUtils; |
| 15 | 16 | |
| 16 | 17 | import br.gov.ans.integracao.sei.modelo.DocumentoResumido; |
| 18 | +import br.gov.ans.integracao.sei.modelo.ProcessoResumido; | |
| 17 | 19 | |
| 18 | 20 | public class DocumentoDAO { |
| 19 | 21 | @PersistenceContext(unitName = "sei_pu", type = PersistenceContextType.EXTENDED) |
| ... | ... | @@ -43,7 +45,7 @@ public class DocumentoDAO { |
| 43 | 45 | |
| 44 | 46 | builder.append("order by pr.dta_geracao asc"); |
| 45 | 47 | |
| 46 | - Query query = em.createNativeQuery(builder.toString(), DocumentoResumido.class); | |
| 48 | + Query query = em.createNativeQuery(builder.toString(), "DocumentoResumidoMapping"); | |
| 47 | 49 | |
| 48 | 50 | setQueryParameters(query, parametros); |
| 49 | 51 | |
| ... | ... | @@ -79,33 +81,10 @@ public class DocumentoDAO { |
| 79 | 81 | } |
| 80 | 82 | |
| 81 | 83 | @SuppressWarnings("unchecked") |
| 82 | - public List<DocumentoResumido> getDocumentosProcessoV1(String idProcedimento){ | |
| 83 | - HashMap<String, Object> parametros = new HashMap<String, Object>(); | |
| 84 | - | |
| 85 | - StringBuilder builder = new StringBuilder("SELECT pr.protocolo_formatado_pesquisa numero, s.nome tipo, d.numero numeroInformado, "); | |
| 86 | - builder.append("CASE pr.sta_protocolo WHEN 'G' THEN 'GERADO' ELSE 'RECEBIDO' END origem, "); | |
| 87 | - builder.append("pr.dta_geracao dataGeracao, null as processo, null as unidade "); | |
| 88 | - builder.append("FROM protocolo pr, documento d, serie s "); | |
| 89 | - builder.append("WHERE d.id_serie = s.id_serie "); | |
| 90 | - builder.append("AND pr.id_protocolo = d.id_documento "); | |
| 91 | - builder.append("AND d.id_procedimento = :idProcedimento "); | |
| 92 | - | |
| 93 | - parametros.put("idProcedimento", idProcedimento); | |
| 94 | - | |
| 95 | - builder.append("ORDER BY pr.dta_geracao ASC"); | |
| 96 | - | |
| 97 | - Query query = em.createNativeQuery(builder.toString(), DocumentoResumido.class); | |
| 98 | - | |
| 99 | - setQueryParameters(query, parametros); | |
| 100 | - | |
| 101 | - return query.getResultList(); | |
| 102 | - } | |
| 103 | - | |
| 104 | - @SuppressWarnings("unchecked") | |
| 105 | 84 | public List<DocumentoResumido> getDocumentosProcesso(String idProcedimento, String codigoTipo, String origem, boolean somenteAssinados){ |
| 106 | 85 | HashMap<String, Object> parametros = new HashMap<String, Object>(); |
| 107 | 86 | |
| 108 | - StringBuilder builder = new StringBuilder("SELECT pr.protocolo_formatado_pesquisa numero, s.nome tipo, s.id_serie codigoTipo, d.numero numeroInformado, "); | |
| 87 | + StringBuilder builder = new StringBuilder("SELECT pr.protocolo_formatado_pesquisa numero, s.nome tipoNome, s.id_serie tipoCodigo, d.numero numeroInformado, "); | |
| 109 | 88 | builder.append("CASE pr.sta_protocolo WHEN 'G' THEN 'GERADO' ELSE 'RECEBIDO' END origem, d.id_tipo_conferencia tipoConferencia, "); |
| 110 | 89 | builder.append("pr.dta_geracao dataGeracao, null as processo, null as unidade, "); |
| 111 | 90 | builder.append("CASE WHEN a.id_assinatura is null THEN false ELSE true END assinado "); |
| ... | ... | @@ -135,11 +114,20 @@ public class DocumentoDAO { |
| 135 | 114 | |
| 136 | 115 | builder.append("GROUP BY numero ORDER BY pr.dta_geracao ASC"); |
| 137 | 116 | |
| 138 | - Query query = em.createNativeQuery(builder.toString(), DocumentoResumido.class); | |
| 117 | + Query query = em.createNativeQuery(builder.toString(), "DocumentoResumidoMapping"); | |
| 139 | 118 | |
| 140 | 119 | setQueryParameters(query, parametros); |
| 141 | 120 | |
| 142 | - return query.getResultList(); | |
| 121 | + List<Object[]> results = query.getResultList(); | |
| 122 | + | |
| 123 | + List<DocumentoResumido> documentos = new ArrayList<DocumentoResumido>(); | |
| 124 | + | |
| 125 | + results.stream().forEach((record) -> { | |
| 126 | + DocumentoResumido documento = (DocumentoResumido) record[0]; | |
| 127 | + documentos.add(documento); | |
| 128 | + }); | |
| 129 | + | |
| 130 | + return documentos; | |
| 143 | 131 | } |
| 144 | 132 | |
| 145 | 133 | } | ... | ... |
src/main/java/br/gov/ans/integracao/sei/modelo/DocumentoResumido.java
| ... | ... | @@ -6,6 +6,7 @@ import javax.persistence.Entity; |
| 6 | 6 | import javax.persistence.EntityResult; |
| 7 | 7 | import javax.persistence.FieldResult; |
| 8 | 8 | import javax.persistence.Id; |
| 9 | +import javax.persistence.OneToOne; | |
| 9 | 10 | import javax.persistence.SqlResultSetMapping; |
| 10 | 11 | import javax.xml.bind.annotation.XmlRootElement; |
| 11 | 12 | |
| ... | ... | @@ -15,39 +16,36 @@ import org.codehaus.jackson.map.annotate.JsonSerialize; |
| 15 | 16 | @Entity |
| 16 | 17 | @SqlResultSetMapping(name = "DocumentoResumidoMapping", entities = { @EntityResult(entityClass = DocumentoResumido.class, fields = { |
| 17 | 18 | @FieldResult(name = "numero", column = "numero"), |
| 18 | - @FieldResult(name = "tipo", column = "tipo"), | |
| 19 | 19 | @FieldResult(name = "numeroInformado", column = "numeroInformado"), |
| 20 | + @FieldResult(name = "unidade", column = "unidade"), | |
| 20 | 21 | @FieldResult(name = "origem", column = "origem"), |
| 21 | - @FieldResult(name = "dataGeracao", column = "dataGeracao") }) }) | |
| 22 | + @FieldResult(name = "processo", column = "processo"), | |
| 23 | + @FieldResult(name = "tipoConferencia", column = "tipoConferencia"), | |
| 24 | + @FieldResult(name = "assinado", column = "assinado"), | |
| 25 | + @FieldResult(name = "dataGeracao", column = "dataGeracao"), | |
| 26 | + @FieldResult(name = "tipo", column = "tipoCodigo") | |
| 27 | + }), | |
| 28 | + @EntityResult( | |
| 29 | + entityClass = Tipo.class, | |
| 30 | + fields = { | |
| 31 | + @FieldResult(name = "codigo", column = "tipoCodigo"), | |
| 32 | + @FieldResult(name = "nome", column = "tipoNome")}) | |
| 33 | + }) | |
| 22 | 34 | @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) |
| 23 | 35 | public class DocumentoResumido { |
| 24 | 36 | @Id |
| 25 | 37 | private String numero; |
| 26 | 38 | private String numeroInformado; |
| 27 | - private String tipo; | |
| 28 | 39 | private String unidade; |
| 29 | 40 | private String origem; |
| 30 | 41 | private Date dataGeracao; |
| 31 | 42 | private String processo; |
| 32 | - private String codigoTipo; | |
| 43 | + | |
| 44 | + @OneToOne | |
| 45 | + private Tipo tipo; | |
| 33 | 46 | private String tipoConferencia; |
| 34 | 47 | private boolean assinado; |
| 35 | 48 | |
| 36 | - public DocumentoResumido(){ | |
| 37 | - | |
| 38 | - } | |
| 39 | - | |
| 40 | - public DocumentoResumido(String numero, String tipo, String numeroInformado, String origem, Date dataGeracao){ | |
| 41 | - this.numero = numero; | |
| 42 | - this.tipo = tipo; | |
| 43 | - this.numeroInformado = numeroInformado; | |
| 44 | - this.origem = origem; | |
| 45 | - this.dataGeracao = dataGeracao; | |
| 46 | - } | |
| 47 | - | |
| 48 | - | |
| 49 | - | |
| 50 | - @Id | |
| 51 | 49 | public String getNumero() { |
| 52 | 50 | return numero; |
| 53 | 51 | } |
| ... | ... | @@ -56,11 +54,11 @@ public class DocumentoResumido { |
| 56 | 54 | this.numero = numero; |
| 57 | 55 | } |
| 58 | 56 | |
| 59 | - public String getTipo() { | |
| 57 | + public Tipo getTipo() { | |
| 60 | 58 | return tipo; |
| 61 | 59 | } |
| 62 | 60 | |
| 63 | - public void setTipo(String tipo) { | |
| 61 | + public void setTipo(Tipo tipo) { | |
| 64 | 62 | this.tipo = tipo; |
| 65 | 63 | } |
| 66 | 64 | |
| ... | ... | @@ -104,14 +102,6 @@ public class DocumentoResumido { |
| 104 | 102 | this.numeroInformado = numeroInformado; |
| 105 | 103 | } |
| 106 | 104 | |
| 107 | - public String getCodigoTipo() { | |
| 108 | - return codigoTipo; | |
| 109 | - } | |
| 110 | - | |
| 111 | - public void setCodigoTipo(String codigoTipo) { | |
| 112 | - this.codigoTipo = codigoTipo; | |
| 113 | - } | |
| 114 | - | |
| 115 | 105 | public String getTipoConferencia() { |
| 116 | 106 | return tipoConferencia; |
| 117 | 107 | } | ... | ... |
src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java
| ... | ... | @@ -1127,7 +1127,7 @@ public class ProcessoResource { |
| 1127 | 1127 | } |
| 1128 | 1128 | |
| 1129 | 1129 | /** |
| 1130 | - * @api {get} /:unidade/processos/:processo/documentos Listar documentos | |
| 1130 | + * @api {get} /processos/:processo/documentos Listar documentos | |
| 1131 | 1131 | * @apiName listarDocumentosPorProcesso |
| 1132 | 1132 | * @apiGroup Processo |
| 1133 | 1133 | * @apiVersion 2.0.0 |
| ... | ... | @@ -1136,7 +1136,6 @@ public class ProcessoResource { |
| 1136 | 1136 | * |
| 1137 | 1137 | * @apiDescription Retorna os documentos de um determinado processo. |
| 1138 | 1138 | * |
| 1139 | - * @apiParam (Path Parameters) {String} unidade Sigla da Unidade cadastrada no SEI. | |
| 1140 | 1139 | * @apiParam (Path Parameters) {String} processo Número do processo. |
| 1141 | 1140 | * |
| 1142 | 1141 | * @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 { |
| 1144 | 1143 | * @apiParam (Query Parameters) {boolean} [somenteAssinados=false] Exibir somente documentos assinados |
| 1145 | 1144 | * |
| 1146 | 1145 | * @apiExample Exemplo de requisição: |
| 1147 | - * curl -i https://<host>/sei-broker/service/cosap/processos/33910003149201793/documentos | |
| 1146 | + * curl -i https://<host>/sei-broker/service/processos/33910003149201793/documentos | |
| 1148 | 1147 | * |
| 1149 | 1148 | * @apiSuccess (Sucesso Response Body - 200) {List} documentos Lista com os documentos encontrados. |
| 1150 | 1149 | * @apiSuccess (Sucesso Response Body - 200) {DocumentoResumido} documentos.documentoResumido Resumo do documento encontrado no SEI. |
| ... | ... | @@ -1176,9 +1175,9 @@ public class ProcessoResource { |
| 1176 | 1175 | * } |
| 1177 | 1176 | */ |
| 1178 | 1177 | @GET |
| 1179 | - @Path("/{unidade}/processos/{processo:\d+}/documentos") | |
| 1178 | + @Path("/processos/{processo:\d+}/documentos") | |
| 1180 | 1179 | @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) |
| 1181 | - public List<DocumentoResumido> listarDocumentosPorProcesso(@PathParam("unidade") String unidade, @PathParam("processo") String processo, @QueryParam("tipo")String tipo, | |
| 1180 | + public List<DocumentoResumido> listarDocumentosPorProcesso(@PathParam("processo") String processo, @QueryParam("tipo")String tipo, | |
| 1182 | 1181 | @QueryParam("origem") String origem, @QueryParam("somenteAssinados") boolean somenteAssinados) throws RemoteException, Exception{ |
| 1183 | 1182 | try{ |
| 1184 | 1183 | BigInteger idProcedimento = processoDAO.getIdProcedimento(formatarNumeroProcesso(processo)); | ... | ... |
src/main/resources/META-INF/persistence.xml
| ... | ... | @@ -21,10 +21,11 @@ |
| 21 | 21 | <persistence-unit name="sei_pu" transaction-type="JTA"> |
| 22 | 22 | <jta-data-source>jdbc/sei-mysql</jta-data-source> |
| 23 | 23 | |
| 24 | - | |
| 25 | - <class>br.gov.ans.integracao.sei.modelo.ProcessoResumido</class> | |
| 26 | 24 | <class>br.gov.ans.integracao.sei.modelo.Contato</class> |
| 25 | + <class>br.gov.ans.integracao.sei.modelo.DocumentoResumido</class> | |
| 26 | + <class>br.gov.ans.integracao.sei.modelo.ProcessoResumido</class> | |
| 27 | 27 | <class>br.gov.ans.integracao.sei.modelo.Tarefa</class> |
| 28 | + <class>br.gov.ans.integracao.sei.modelo.Tipo</class> | |
| 28 | 29 | |
| 29 | 30 | <properties> |
| 30 | 31 | <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> | ... | ... |
src/main/webapp/api-docs/api_data.js
| ... | ... | @@ -7151,7 +7151,7 @@ define({ "api": [ |
| 7151 | 7151 | }, |
| 7152 | 7152 | { |
| 7153 | 7153 | "type": "get", |
| 7154 | - "url": "/:unidade/processos/:processo/documentos", | |
| 7154 | + "url": "/processos/:processo/documentos", | |
| 7155 | 7155 | "title": "Listar documentos", |
| 7156 | 7156 | "name": "listarDocumentosPorProcesso", |
| 7157 | 7157 | "group": "Processo", |
| ... | ... | @@ -7169,13 +7169,6 @@ define({ "api": [ |
| 7169 | 7169 | "group": "Path Parameters", |
| 7170 | 7170 | "type": "String", |
| 7171 | 7171 | "optional": false, |
| 7172 | - "field": "unidade", | |
| 7173 | - "description": "<p>Sigla da Unidade cadastrada no SEI.</p>" | |
| 7174 | - }, | |
| 7175 | - { | |
| 7176 | - "group": "Path Parameters", | |
| 7177 | - "type": "String", | |
| 7178 | - "optional": false, | |
| 7179 | 7172 | "field": "processo", |
| 7180 | 7173 | "description": "<p>Número do processo.</p>" |
| 7181 | 7174 | } |
| ... | ... | @@ -7214,7 +7207,7 @@ define({ "api": [ |
| 7214 | 7207 | "examples": [ |
| 7215 | 7208 | { |
| 7216 | 7209 | "title": "Exemplo de requisição:\t", |
| 7217 | - "content": "curl -i https://<host>/sei-broker/service/cosap/processos/33910003149201793/documentos", | |
| 7210 | + "content": "curl -i https://<host>/sei-broker/service/processos/33910003149201793/documentos", | |
| 7218 | 7211 | "type": "json" |
| 7219 | 7212 | } |
| 7220 | 7213 | ], | ... | ... |
src/main/webapp/api-docs/api_data.json
| ... | ... | @@ -7151,7 +7151,7 @@ |
| 7151 | 7151 | }, |
| 7152 | 7152 | { |
| 7153 | 7153 | "type": "get", |
| 7154 | - "url": "/:unidade/processos/:processo/documentos", | |
| 7154 | + "url": "/processos/:processo/documentos", | |
| 7155 | 7155 | "title": "Listar documentos", |
| 7156 | 7156 | "name": "listarDocumentosPorProcesso", |
| 7157 | 7157 | "group": "Processo", |
| ... | ... | @@ -7169,13 +7169,6 @@ |
| 7169 | 7169 | "group": "Path Parameters", |
| 7170 | 7170 | "type": "String", |
| 7171 | 7171 | "optional": false, |
| 7172 | - "field": "unidade", | |
| 7173 | - "description": "<p>Sigla da Unidade cadastrada no SEI.</p>" | |
| 7174 | - }, | |
| 7175 | - { | |
| 7176 | - "group": "Path Parameters", | |
| 7177 | - "type": "String", | |
| 7178 | - "optional": false, | |
| 7179 | 7172 | "field": "processo", |
| 7180 | 7173 | "description": "<p>Número do processo.</p>" |
| 7181 | 7174 | } |
| ... | ... | @@ -7214,7 +7207,7 @@ |
| 7214 | 7207 | "examples": [ |
| 7215 | 7208 | { |
| 7216 | 7209 | "title": "Exemplo de requisição:\t", |
| 7217 | - "content": "curl -i https://<host>/sei-broker/service/cosap/processos/33910003149201793/documentos", | |
| 7210 | + "content": "curl -i https://<host>/sei-broker/service/processos/33910003149201793/documentos", | |
| 7218 | 7211 | "type": "json" |
| 7219 | 7212 | } |
| 7220 | 7213 | ], | ... | ... |
src/main/webapp/api-docs/api_project.js
src/main/webapp/api-docs/api_project.json