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 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({ &quot;api&quot;: [
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({ &quot;api&quot;: [
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({ &quot;api&quot;: [
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
... ... @@ -8,7 +8,7 @@ define({
8 8 "apidoc": "0.2.0",
9 9 "generator": {
10 10 "name": "apidoc",
11   - "time": "2017-10-04T19:12:14.480Z",
  11 + "time": "2017-10-09T13:37:15.818Z",
12 12 "url": "http://apidocjs.com",
13 13 "version": "0.15.1"
14 14 }
... ...
src/main/webapp/api-docs/api_project.json
... ... @@ -8,7 +8,7 @@
8 8 "apidoc": "0.2.0",
9 9 "generator": {
10 10 "name": "apidoc",
11   - "time": "2017-10-04T19:12:14.480Z",
  11 + "time": "2017-10-09T13:37:15.818Z",
12 12 "url": "http://apidocjs.com",
13 13 "version": "0.15.1"
14 14 }
... ...