Commit 9d6d8b0195875ae76378a7729cba0812d07de163

Authored by andre guimaraes
1 parent eb9f4811

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.
.settings/org.eclipse.wst.common.component
1 <?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0"> 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 <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/> 3 <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
4 <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> 4 <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
5 <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/> 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,6 +3,7 @@ package br.gov.ans.integracao.sei.dao;
3 import static br.gov.ans.integracao.sei.utils.Util.setPaginacaoQuery; 3 import static br.gov.ans.integracao.sei.utils.Util.setPaginacaoQuery;
4 import static br.gov.ans.integracao.sei.utils.Util.setQueryParameters; 4 import static br.gov.ans.integracao.sei.utils.Util.setQueryParameters;
5 5
  6 +import java.util.ArrayList;
6 import java.util.HashMap; 7 import java.util.HashMap;
7 import java.util.List; 8 import java.util.List;
8 9
@@ -14,6 +15,7 @@ import javax.persistence.Query; @@ -14,6 +15,7 @@ import javax.persistence.Query;
14 import org.apache.commons.lang3.StringUtils; 15 import org.apache.commons.lang3.StringUtils;
15 16
16 import br.gov.ans.integracao.sei.modelo.DocumentoResumido; 17 import br.gov.ans.integracao.sei.modelo.DocumentoResumido;
  18 +import br.gov.ans.integracao.sei.modelo.ProcessoResumido;
17 19
18 public class DocumentoDAO { 20 public class DocumentoDAO {
19 @PersistenceContext(unitName = "sei_pu", type = PersistenceContextType.EXTENDED) 21 @PersistenceContext(unitName = "sei_pu", type = PersistenceContextType.EXTENDED)
@@ -43,7 +45,7 @@ public class DocumentoDAO { @@ -43,7 +45,7 @@ public class DocumentoDAO {
43 45
44 builder.append("order by pr.dta_geracao asc"); 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 setQueryParameters(query, parametros); 50 setQueryParameters(query, parametros);
49 51
@@ -79,33 +81,10 @@ public class DocumentoDAO { @@ -79,33 +81,10 @@ public class DocumentoDAO {
79 } 81 }
80 82
81 @SuppressWarnings("unchecked") 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 public List<DocumentoResumido> getDocumentosProcesso(String idProcedimento, String codigoTipo, String origem, boolean somenteAssinados){ 84 public List<DocumentoResumido> getDocumentosProcesso(String idProcedimento, String codigoTipo, String origem, boolean somenteAssinados){
106 HashMap<String, Object> parametros = new HashMap<String, Object>(); 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 builder.append("CASE pr.sta_protocolo WHEN 'G' THEN 'GERADO' ELSE 'RECEBIDO' END origem, d.id_tipo_conferencia tipoConferencia, "); 88 builder.append("CASE pr.sta_protocolo WHEN 'G' THEN 'GERADO' ELSE 'RECEBIDO' END origem, d.id_tipo_conferencia tipoConferencia, ");
110 builder.append("pr.dta_geracao dataGeracao, null as processo, null as unidade, "); 89 builder.append("pr.dta_geracao dataGeracao, null as processo, null as unidade, ");
111 builder.append("CASE WHEN a.id_assinatura is null THEN false ELSE true END assinado "); 90 builder.append("CASE WHEN a.id_assinatura is null THEN false ELSE true END assinado ");
@@ -135,11 +114,20 @@ public class DocumentoDAO { @@ -135,11 +114,20 @@ public class DocumentoDAO {
135 114
136 builder.append("GROUP BY numero ORDER BY pr.dta_geracao ASC"); 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 setQueryParameters(query, parametros); 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 +6,7 @@ import javax.persistence.Entity;
6 import javax.persistence.EntityResult; 6 import javax.persistence.EntityResult;
7 import javax.persistence.FieldResult; 7 import javax.persistence.FieldResult;
8 import javax.persistence.Id; 8 import javax.persistence.Id;
  9 +import javax.persistence.OneToOne;
9 import javax.persistence.SqlResultSetMapping; 10 import javax.persistence.SqlResultSetMapping;
10 import javax.xml.bind.annotation.XmlRootElement; 11 import javax.xml.bind.annotation.XmlRootElement;
11 12
@@ -15,39 +16,36 @@ import org.codehaus.jackson.map.annotate.JsonSerialize; @@ -15,39 +16,36 @@ import org.codehaus.jackson.map.annotate.JsonSerialize;
15 @Entity 16 @Entity
16 @SqlResultSetMapping(name = "DocumentoResumidoMapping", entities = { @EntityResult(entityClass = DocumentoResumido.class, fields = { 17 @SqlResultSetMapping(name = "DocumentoResumidoMapping", entities = { @EntityResult(entityClass = DocumentoResumido.class, fields = {
17 @FieldResult(name = "numero", column = "numero"), 18 @FieldResult(name = "numero", column = "numero"),
18 - @FieldResult(name = "tipo", column = "tipo"),  
19 @FieldResult(name = "numeroInformado", column = "numeroInformado"), 19 @FieldResult(name = "numeroInformado", column = "numeroInformado"),
  20 + @FieldResult(name = "unidade", column = "unidade"),
20 @FieldResult(name = "origem", column = "origem"), 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 @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) 34 @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
23 public class DocumentoResumido { 35 public class DocumentoResumido {
24 @Id 36 @Id
25 private String numero; 37 private String numero;
26 private String numeroInformado; 38 private String numeroInformado;
27 - private String tipo;  
28 private String unidade; 39 private String unidade;
29 private String origem; 40 private String origem;
30 private Date dataGeracao; 41 private Date dataGeracao;
31 private String processo; 42 private String processo;
32 - private String codigoTipo; 43 +
  44 + @OneToOne
  45 + private Tipo tipo;
33 private String tipoConferencia; 46 private String tipoConferencia;
34 private boolean assinado; 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 public String getNumero() { 49 public String getNumero() {
52 return numero; 50 return numero;
53 } 51 }
@@ -56,11 +54,11 @@ public class DocumentoResumido { @@ -56,11 +54,11 @@ public class DocumentoResumido {
56 this.numero = numero; 54 this.numero = numero;
57 } 55 }
58 56
59 - public String getTipo() { 57 + public Tipo getTipo() {
60 return tipo; 58 return tipo;
61 } 59 }
62 60
63 - public void setTipo(String tipo) { 61 + public void setTipo(Tipo tipo) {
64 this.tipo = tipo; 62 this.tipo = tipo;
65 } 63 }
66 64
@@ -104,14 +102,6 @@ public class DocumentoResumido { @@ -104,14 +102,6 @@ public class DocumentoResumido {
104 this.numeroInformado = numeroInformado; 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 public String getTipoConferencia() { 105 public String getTipoConferencia() {
116 return tipoConferencia; 106 return tipoConferencia;
117 } 107 }
src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java
@@ -1127,7 +1127,7 @@ public class ProcessoResource { @@ -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 * @apiName listarDocumentosPorProcesso 1131 * @apiName listarDocumentosPorProcesso
1132 * @apiGroup Processo 1132 * @apiGroup Processo
1133 * @apiVersion 2.0.0 1133 * @apiVersion 2.0.0
@@ -1136,7 +1136,6 @@ public class ProcessoResource { @@ -1136,7 +1136,6 @@ public class ProcessoResource {
1136 * 1136 *
1137 * @apiDescription Retorna os documentos de um determinado processo. 1137 * @apiDescription Retorna os documentos de um determinado processo.
1138 * 1138 *
1139 - * @apiParam (Path Parameters) {String} unidade Sigla da Unidade cadastrada no SEI.  
1140 * @apiParam (Path Parameters) {String} processo Número do processo. 1139 * @apiParam (Path Parameters) {String} processo Número do processo.
1141 * 1140 *
1142 * @apiParam (Query Parameters) {String} [tipo=null] Identificador do tipo do documento, caso seja necessário filtrar pelo tipo 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,7 +1143,7 @@ public class ProcessoResource {
1144 * @apiParam (Query Parameters) {boolean} [somenteAssinados=false] Exibir somente documentos assinados 1143 * @apiParam (Query Parameters) {boolean} [somenteAssinados=false] Exibir somente documentos assinados
1145 * 1144 *
1146 * @apiExample Exemplo de requisição: 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 * @apiSuccess (Sucesso Response Body - 200) {List} documentos Lista com os documentos encontrados. 1148 * @apiSuccess (Sucesso Response Body - 200) {List} documentos Lista com os documentos encontrados.
1150 * @apiSuccess (Sucesso Response Body - 200) {DocumentoResumido} documentos.documentoResumido Resumo do documento encontrado no SEI. 1149 * @apiSuccess (Sucesso Response Body - 200) {DocumentoResumido} documentos.documentoResumido Resumo do documento encontrado no SEI.
@@ -1176,9 +1175,9 @@ public class ProcessoResource { @@ -1176,9 +1175,9 @@ public class ProcessoResource {
1176 * } 1175 * }
1177 */ 1176 */
1178 @GET 1177 @GET
1179 - @Path("/{unidade}/processos/{processo:\d+}/documentos") 1178 + @Path("/processos/{processo:\d+}/documentos")
1180 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 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 @QueryParam("origem") String origem, @QueryParam("somenteAssinados") boolean somenteAssinados) throws RemoteException, Exception{ 1181 @QueryParam("origem") String origem, @QueryParam("somenteAssinados") boolean somenteAssinados) throws RemoteException, Exception{
1183 try{ 1182 try{
1184 BigInteger idProcedimento = processoDAO.getIdProcedimento(formatarNumeroProcesso(processo)); 1183 BigInteger idProcedimento = processoDAO.getIdProcedimento(formatarNumeroProcesso(processo));
src/main/resources/META-INF/persistence.xml
@@ -21,10 +21,11 @@ @@ -21,10 +21,11 @@
21 <persistence-unit name="sei_pu" transaction-type="JTA"> 21 <persistence-unit name="sei_pu" transaction-type="JTA">
22 <jta-data-source>jdbc/sei-mysql</jta-data-source> 22 <jta-data-source>jdbc/sei-mysql</jta-data-source>
23 23
24 -  
25 - <class>br.gov.ans.integracao.sei.modelo.ProcessoResumido</class>  
26 <class>br.gov.ans.integracao.sei.modelo.Contato</class> 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 <class>br.gov.ans.integracao.sei.modelo.Tarefa</class> 27 <class>br.gov.ans.integracao.sei.modelo.Tarefa</class>
  28 + <class>br.gov.ans.integracao.sei.modelo.Tipo</class>
28 29
29 <properties> 30 <properties>
30 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 31 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
src/main/webapp/api-docs/api_data.js
@@ -7151,7 +7151,7 @@ define({ &quot;api&quot;: [ @@ -7151,7 +7151,7 @@ define({ &quot;api&quot;: [
7151 }, 7151 },
7152 { 7152 {
7153 "type": "get", 7153 "type": "get",
7154 - "url": "/:unidade/processos/:processo/documentos", 7154 + "url": "/processos/:processo/documentos",
7155 "title": "Listar documentos", 7155 "title": "Listar documentos",
7156 "name": "listarDocumentosPorProcesso", 7156 "name": "listarDocumentosPorProcesso",
7157 "group": "Processo", 7157 "group": "Processo",
@@ -7169,13 +7169,6 @@ define({ &quot;api&quot;: [ @@ -7169,13 +7169,6 @@ define({ &quot;api&quot;: [
7169 "group": "Path Parameters", 7169 "group": "Path Parameters",
7170 "type": "String", 7170 "type": "String",
7171 "optional": false, 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 "field": "processo", 7172 "field": "processo",
7180 "description": "<p>Número do processo.</p>" 7173 "description": "<p>Número do processo.</p>"
7181 } 7174 }
@@ -7214,7 +7207,7 @@ define({ &quot;api&quot;: [ @@ -7214,7 +7207,7 @@ define({ &quot;api&quot;: [
7214 "examples": [ 7207 "examples": [
7215 { 7208 {
7216 "title": "Exemplo de requisição:\t", 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 "type": "json" 7211 "type": "json"
7219 } 7212 }
7220 ], 7213 ],
src/main/webapp/api-docs/api_data.json
@@ -7151,7 +7151,7 @@ @@ -7151,7 +7151,7 @@
7151 }, 7151 },
7152 { 7152 {
7153 "type": "get", 7153 "type": "get",
7154 - "url": "/:unidade/processos/:processo/documentos", 7154 + "url": "/processos/:processo/documentos",
7155 "title": "Listar documentos", 7155 "title": "Listar documentos",
7156 "name": "listarDocumentosPorProcesso", 7156 "name": "listarDocumentosPorProcesso",
7157 "group": "Processo", 7157 "group": "Processo",
@@ -7169,13 +7169,6 @@ @@ -7169,13 +7169,6 @@
7169 "group": "Path Parameters", 7169 "group": "Path Parameters",
7170 "type": "String", 7170 "type": "String",
7171 "optional": false, 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 "field": "processo", 7172 "field": "processo",
7180 "description": "<p>Número do processo.</p>" 7173 "description": "<p>Número do processo.</p>"
7181 } 7174 }
@@ -7214,7 +7207,7 @@ @@ -7214,7 +7207,7 @@
7214 "examples": [ 7207 "examples": [
7215 { 7208 {
7216 "title": "Exemplo de requisição:\t", 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 "type": "json" 7211 "type": "json"
7219 } 7212 }
7220 ], 7213 ],
src/main/webapp/api-docs/api_project.js
@@ -8,7 +8,7 @@ define({ @@ -8,7 +8,7 @@ define({
8 "apidoc": "0.2.0", 8 "apidoc": "0.2.0",
9 "generator": { 9 "generator": {
10 "name": "apidoc", 10 "name": "apidoc",
11 - "time": "2017-10-04T19:12:14.480Z", 11 + "time": "2017-10-09T13:37:15.818Z",
12 "url": "http://apidocjs.com", 12 "url": "http://apidocjs.com",
13 "version": "0.15.1" 13 "version": "0.15.1"
14 } 14 }
src/main/webapp/api-docs/api_project.json
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 "apidoc": "0.2.0", 8 "apidoc": "0.2.0",
9 "generator": { 9 "generator": {
10 "name": "apidoc", 10 "name": "apidoc",
11 - "time": "2017-10-04T19:12:14.480Z", 11 + "time": "2017-10-09T13:37:15.818Z",
12 "url": "http://apidocjs.com", 12 "url": "http://apidocjs.com",
13 "version": "0.15.1" 13 "version": "0.15.1"
14 } 14 }