Commit 83e5b400a941d59a111a7ad6c90d8f0839817938
1 parent
988d4b86
Exists in
master
and in
1 other branch
Alterações na consulta a documentos do processo, agora exibindo mais informações…
… sobre os documentos.
Showing
6 changed files
with
174 additions
and
23 deletions
Show diff stats
src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java
| ... | ... | @@ -82,7 +82,7 @@ public class DocumentoDAO { |
| 82 | 82 | } |
| 83 | 83 | |
| 84 | 84 | @SuppressWarnings("unchecked") |
| 85 | - public List<DocumentoResumido> getDocumentosProcesso(String idProcedimento){ | |
| 85 | + public List<DocumentoResumido> getDocumentosProcessoV1(String idProcedimento){ | |
| 86 | 86 | HashMap<String, Object> parametros = new HashMap<String, Object>(); |
| 87 | 87 | |
| 88 | 88 | StringBuilder builder = new StringBuilder("SELECT pr.protocolo_formatado_pesquisa numero, s.nome tipo, d.numero numeroInformado, "); |
| ... | ... | @@ -103,5 +103,46 @@ public class DocumentoDAO { |
| 103 | 103 | |
| 104 | 104 | return query.getResultList(); |
| 105 | 105 | } |
| 106 | + | |
| 107 | + @SuppressWarnings("unchecked") | |
| 108 | + public List<DocumentoResumido> getDocumentosProcesso(String idProcedimento, String codigoTipo, String origem, boolean somenteAssinados){ | |
| 109 | + HashMap<String, Object> parametros = new HashMap<String, Object>(); | |
| 110 | + | |
| 111 | + StringBuilder builder = new StringBuilder("SELECT pr.protocolo_formatado_pesquisa numero, s.nome tipo, s.id_serie codigoTipo, d.numero numeroInformado, "); | |
| 112 | + builder.append("CASE pr.sta_protocolo WHEN 'G' THEN 'GERADO' ELSE 'RECEBIDO' END origem, d.id_tipo_conferencia tipoConferencia, "); | |
| 113 | + builder.append("pr.dta_geracao dataGeracao, null as processo, null as unidade, "); | |
| 114 | + builder.append("CASE WHEN a.id_assinatura is null THEN false ELSE true END assinado "); | |
| 115 | + builder.append("FROM documento AS d "); | |
| 116 | + | |
| 117 | + if(somenteAssinados){ | |
| 118 | + builder.append("RIGHT JOIN assinatura AS a ON d.id_documento = a.id_documento "); | |
| 119 | + }else{ | |
| 120 | + builder.append("LEFT JOIN assinatura AS a ON d.id_documento = a.id_documento "); | |
| 121 | + } | |
| 122 | + | |
| 123 | + builder.append("JOIN protocolo AS pr ON pr.id_protocolo = d.id_documento "); | |
| 124 | + builder.append("JOIN serie AS s ON d.id_serie = s.id_serie "); | |
| 125 | + builder.append("WHERE d.id_procedimento = :idProcedimento "); | |
| 126 | + | |
| 127 | + parametros.put("idProcedimento", idProcedimento); | |
| 128 | + | |
| 129 | + if(StringUtils.isNotBlank(codigoTipo)){ | |
| 130 | + builder.append("AND s.id_serie = :codigoTipo "); | |
| 131 | + parametros.put("codigoTipo", codigoTipo); | |
| 132 | + } | |
| 133 | + | |
| 134 | + if(StringUtils.isNotBlank(origem)){ | |
| 135 | + builder.append("AND pr.sta_protocolo = :origem "); | |
| 136 | + parametros.put("origem", origem); | |
| 137 | + } | |
| 138 | + | |
| 139 | + builder.append("GROUP BY numero ORDER BY pr.dta_geracao ASC"); | |
| 140 | + | |
| 141 | + Query query = em.createNativeQuery(builder.toString(), DocumentoResumido.class); | |
| 142 | + | |
| 143 | + setQueryParameters(query, parametros); | |
| 144 | + | |
| 145 | + return query.getResultList(); | |
| 146 | + } | |
| 106 | 147 | |
| 107 | 148 | } | ... | ... |
src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java
| ... | ... | @@ -1134,24 +1134,33 @@ public class ProcessoResource { |
| 1134 | 1134 | * @apiParam (Path Parameters) {String} unidade Sigla da Unidade cadastrada no SEI. |
| 1135 | 1135 | * @apiParam (Path Parameters) {String} processo Número do processo. |
| 1136 | 1136 | * |
| 1137 | + * @apiParam (Query Parameters) {String} [tipo=null] Identificador do tipo do documento, caso seja necessário filtrar pelo tipo | |
| 1138 | + * @apiParam (Query Parameters) {String = "G (gerado/interno), R (recebido/externo)"} [origem=null] Filtra os documentos por gerados ou recebidos | |
| 1139 | + * @apiParam (Query Parameters) {boolean} [somenteAssinados=false] Exibir somente documentos assinados | |
| 1137 | 1140 | * |
| 1138 | 1141 | * @apiExample Exemplo de requisição: |
| 1139 | 1142 | * curl -i https://<host>/sei-broker/service/cosap/processos/33910003149201793/documentos |
| 1140 | 1143 | * |
| 1141 | 1144 | * @apiSuccess (Sucesso Response Body - 200) {List} documentos Lista com os documentos encontrados. |
| 1142 | 1145 | * @apiSuccess (Sucesso Response Body - 200) {DocumentoResumido} documentos.documentoResumido Resumo do documento encontrado no SEI. |
| 1146 | + * @apiSuccess (Sucesso Response Body - 200) {boolean} documentos.documentoResumido.assinado Boolean indicando se o documento foi assinado. | |
| 1147 | + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.codigoTipo Identificador do tipo do documento. | |
| 1148 | + * @apiSuccess (Sucesso Response Body - 200) {Data} documentos.documentoResumido.dataGeracao Data de geração do documento. | |
| 1143 | 1149 | * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.numero Número do documento. |
| 1144 | - * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.tipo Tipo do documento. | |
| 1145 | 1150 | * @apiSuccess (Sucesso Response Body - 200) {String="GERADO","RECEBIDO"} documentos.documentoResumido.origem Origem do documento, se o mesmo é um documento "GERADO" internamente ou "RECEBIDO" de uma fonte externa. |
| 1146 | - * @apiSuccess (Sucesso Response Body - 200) {Data} documentos.documentoResumido.dataGeracao Data de geração do documento. | |
| 1151 | + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.tipo Tipo do documento. | |
| 1152 | + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.tipoConferencia Tipo de conferência do documento. | |
| 1147 | 1153 | * |
| 1148 | 1154 | * @apiSuccessExample {json} Success-Response: |
| 1149 | 1155 | * HTTP/1.1 200 OK |
| 1150 | 1156 | * { |
| 1157 | + * "assinado": true, | |
| 1158 | + * "codigoTipo": "5", | |
| 1151 | 1159 | * "dataGeracao": "2015-08-10T00:00:00-03:00", |
| 1152 | 1160 | * "numero": "0670949", |
| 1153 | 1161 | * "origem": "RECEBIDO", |
| 1154 | 1162 | * "tipo": "Despacho" |
| 1163 | + * "tipoConferencia": "4", | |
| 1155 | 1164 | * } |
| 1156 | 1165 | * |
| 1157 | 1166 | * @apiErrorExample {json} Error-Response: |
| ... | ... | @@ -1164,11 +1173,12 @@ public class ProcessoResource { |
| 1164 | 1173 | @GET |
| 1165 | 1174 | @Path("/{unidade}/processos/{processo:\\d+}/documentos") |
| 1166 | 1175 | @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) |
| 1167 | - public List<DocumentoResumido> listarDocumentosPorProcesso(@PathParam("unidade") String unidade, @PathParam("processo") String processo) throws RemoteException, Exception{ | |
| 1176 | + public List<DocumentoResumido> listarDocumentosPorProcesso(@PathParam("unidade") String unidade, @PathParam("processo") String processo, @QueryParam("tipo")String tipo, | |
| 1177 | + @QueryParam("origem") String origem, @QueryParam("somenteAssinados") boolean somenteAssinados) throws RemoteException, Exception{ | |
| 1168 | 1178 | try{ |
| 1169 | 1179 | BigInteger idProcedimento = processoDAO.getIdProcedimento(formatarNumeroProcesso(processo)); |
| 1170 | 1180 | |
| 1171 | - List<DocumentoResumido> documentosProcesso = documentoDAO.getDocumentosProcesso(idProcedimento.toString()); | |
| 1181 | + List<DocumentoResumido> documentosProcesso = documentoDAO.getDocumentosProcesso(idProcedimento.toString(), tipo, origem, somenteAssinados); | |
| 1172 | 1182 | |
| 1173 | 1183 | if(documentosProcesso.isEmpty()){ |
| 1174 | 1184 | throw new ResourceNotFoundException(messages.getMessage("erro.processo.sem.documentos",formatarNumeroProcesso(processo))); | ... | ... |
src/main/webapp/api-docs/api_data.js
| ... | ... | @@ -7145,6 +7145,35 @@ define({ "api": [ |
| 7145 | 7145 | "field": "processo", |
| 7146 | 7146 | "description": "<p>Número do processo.</p>" |
| 7147 | 7147 | } |
| 7148 | + ], | |
| 7149 | + "Query Parameters": [ | |
| 7150 | + { | |
| 7151 | + "group": "Query Parameters", | |
| 7152 | + "type": "String", | |
| 7153 | + "optional": true, | |
| 7154 | + "field": "tipo", | |
| 7155 | + "defaultValue": "null", | |
| 7156 | + "description": "<p>Identificador do tipo do documento, caso seja necessário filtrar pelo tipo</p>" | |
| 7157 | + }, | |
| 7158 | + { | |
| 7159 | + "group": "Query Parameters", | |
| 7160 | + "type": "String", | |
| 7161 | + "allowedValues": [ | |
| 7162 | + "\"G (gerado/interno), R (recebido/externo)\"" | |
| 7163 | + ], | |
| 7164 | + "optional": true, | |
| 7165 | + "field": "origem", | |
| 7166 | + "defaultValue": "null", | |
| 7167 | + "description": "<p>Filtra os documentos por gerados ou recebidos</p>" | |
| 7168 | + }, | |
| 7169 | + { | |
| 7170 | + "group": "Query Parameters", | |
| 7171 | + "type": "boolean", | |
| 7172 | + "optional": true, | |
| 7173 | + "field": "somenteAssinados", | |
| 7174 | + "defaultValue": "false", | |
| 7175 | + "description": "<p>Exibir somente documentos assinados</p>" | |
| 7176 | + } | |
| 7148 | 7177 | ] |
| 7149 | 7178 | } |
| 7150 | 7179 | }, |
| ... | ... | @@ -7174,17 +7203,31 @@ define({ "api": [ |
| 7174 | 7203 | }, |
| 7175 | 7204 | { |
| 7176 | 7205 | "group": "Sucesso Response Body - 200", |
| 7206 | + "type": "boolean", | |
| 7207 | + "optional": false, | |
| 7208 | + "field": "documentos.documentoResumido.assinado", | |
| 7209 | + "description": "<p>Boolean indicando se o documento foi assinado.</p>" | |
| 7210 | + }, | |
| 7211 | + { | |
| 7212 | + "group": "Sucesso Response Body - 200", | |
| 7177 | 7213 | "type": "String", |
| 7178 | 7214 | "optional": false, |
| 7179 | - "field": "documentos.documentoResumido.numero", | |
| 7180 | - "description": "<p>Número do documento.</p>" | |
| 7215 | + "field": "documentos.documentoResumido.codigoTipo", | |
| 7216 | + "description": "<p>Identificador do tipo do documento.</p>" | |
| 7217 | + }, | |
| 7218 | + { | |
| 7219 | + "group": "Sucesso Response Body - 200", | |
| 7220 | + "type": "Data", | |
| 7221 | + "optional": false, | |
| 7222 | + "field": "documentos.documentoResumido.dataGeracao", | |
| 7223 | + "description": "<p>Data de geração do documento.</p>" | |
| 7181 | 7224 | }, |
| 7182 | 7225 | { |
| 7183 | 7226 | "group": "Sucesso Response Body - 200", |
| 7184 | 7227 | "type": "String", |
| 7185 | 7228 | "optional": false, |
| 7186 | - "field": "documentos.documentoResumido.tipo", | |
| 7187 | - "description": "<p>Tipo do documento.</p>" | |
| 7229 | + "field": "documentos.documentoResumido.numero", | |
| 7230 | + "description": "<p>Número do documento.</p>" | |
| 7188 | 7231 | }, |
| 7189 | 7232 | { |
| 7190 | 7233 | "group": "Sucesso Response Body - 200", |
| ... | ... | @@ -7199,17 +7242,24 @@ define({ "api": [ |
| 7199 | 7242 | }, |
| 7200 | 7243 | { |
| 7201 | 7244 | "group": "Sucesso Response Body - 200", |
| 7202 | - "type": "Data", | |
| 7245 | + "type": "String", | |
| 7203 | 7246 | "optional": false, |
| 7204 | - "field": "documentos.documentoResumido.dataGeracao", | |
| 7205 | - "description": "<p>Data de geração do documento.</p>" | |
| 7247 | + "field": "documentos.documentoResumido.tipo", | |
| 7248 | + "description": "<p>Tipo do documento.</p>" | |
| 7249 | + }, | |
| 7250 | + { | |
| 7251 | + "group": "Sucesso Response Body - 200", | |
| 7252 | + "type": "String", | |
| 7253 | + "optional": false, | |
| 7254 | + "field": "documentos.documentoResumido.tipoConferencia", | |
| 7255 | + "description": "<p>Tipo de conferência do documento.</p>" | |
| 7206 | 7256 | } |
| 7207 | 7257 | ] |
| 7208 | 7258 | }, |
| 7209 | 7259 | "examples": [ |
| 7210 | 7260 | { |
| 7211 | 7261 | "title": "Success-Response:", |
| 7212 | - "content": "HTTP/1.1 200 OK\n{\n \"dataGeracao\": \"2015-08-10T00:00:00-03:00\",\n \"numero\": \"0670949\",\n \"origem\": \"RECEBIDO\",\n \"tipo\": \"Despacho\"\n}", | |
| 7262 | + "content": "HTTP/1.1 200 OK\n{\n \"assinado\": true,\n \"codigoTipo\": \"5\",\n \"dataGeracao\": \"2015-08-10T00:00:00-03:00\",\n \"numero\": \"0670949\",\n \"origem\": \"RECEBIDO\",\n \"tipo\": \"Despacho\"\n \"tipoConferencia\": \"4\",\n}", | |
| 7213 | 7263 | "type": "json" |
| 7214 | 7264 | } |
| 7215 | 7265 | ] | ... | ... |
src/main/webapp/api-docs/api_data.json
| ... | ... | @@ -7145,6 +7145,35 @@ |
| 7145 | 7145 | "field": "processo", |
| 7146 | 7146 | "description": "<p>Número do processo.</p>" |
| 7147 | 7147 | } |
| 7148 | + ], | |
| 7149 | + "Query Parameters": [ | |
| 7150 | + { | |
| 7151 | + "group": "Query Parameters", | |
| 7152 | + "type": "String", | |
| 7153 | + "optional": true, | |
| 7154 | + "field": "tipo", | |
| 7155 | + "defaultValue": "null", | |
| 7156 | + "description": "<p>Identificador do tipo do documento, caso seja necessário filtrar pelo tipo</p>" | |
| 7157 | + }, | |
| 7158 | + { | |
| 7159 | + "group": "Query Parameters", | |
| 7160 | + "type": "String", | |
| 7161 | + "allowedValues": [ | |
| 7162 | + "\"G (gerado/interno), R (recebido/externo)\"" | |
| 7163 | + ], | |
| 7164 | + "optional": true, | |
| 7165 | + "field": "origem", | |
| 7166 | + "defaultValue": "null", | |
| 7167 | + "description": "<p>Filtra os documentos por gerados ou recebidos</p>" | |
| 7168 | + }, | |
| 7169 | + { | |
| 7170 | + "group": "Query Parameters", | |
| 7171 | + "type": "boolean", | |
| 7172 | + "optional": true, | |
| 7173 | + "field": "somenteAssinados", | |
| 7174 | + "defaultValue": "false", | |
| 7175 | + "description": "<p>Exibir somente documentos assinados</p>" | |
| 7176 | + } | |
| 7148 | 7177 | ] |
| 7149 | 7178 | } |
| 7150 | 7179 | }, |
| ... | ... | @@ -7174,17 +7203,31 @@ |
| 7174 | 7203 | }, |
| 7175 | 7204 | { |
| 7176 | 7205 | "group": "Sucesso Response Body - 200", |
| 7206 | + "type": "boolean", | |
| 7207 | + "optional": false, | |
| 7208 | + "field": "documentos.documentoResumido.assinado", | |
| 7209 | + "description": "<p>Boolean indicando se o documento foi assinado.</p>" | |
| 7210 | + }, | |
| 7211 | + { | |
| 7212 | + "group": "Sucesso Response Body - 200", | |
| 7177 | 7213 | "type": "String", |
| 7178 | 7214 | "optional": false, |
| 7179 | - "field": "documentos.documentoResumido.numero", | |
| 7180 | - "description": "<p>Número do documento.</p>" | |
| 7215 | + "field": "documentos.documentoResumido.codigoTipo", | |
| 7216 | + "description": "<p>Identificador do tipo do documento.</p>" | |
| 7217 | + }, | |
| 7218 | + { | |
| 7219 | + "group": "Sucesso Response Body - 200", | |
| 7220 | + "type": "Data", | |
| 7221 | + "optional": false, | |
| 7222 | + "field": "documentos.documentoResumido.dataGeracao", | |
| 7223 | + "description": "<p>Data de geração do documento.</p>" | |
| 7181 | 7224 | }, |
| 7182 | 7225 | { |
| 7183 | 7226 | "group": "Sucesso Response Body - 200", |
| 7184 | 7227 | "type": "String", |
| 7185 | 7228 | "optional": false, |
| 7186 | - "field": "documentos.documentoResumido.tipo", | |
| 7187 | - "description": "<p>Tipo do documento.</p>" | |
| 7229 | + "field": "documentos.documentoResumido.numero", | |
| 7230 | + "description": "<p>Número do documento.</p>" | |
| 7188 | 7231 | }, |
| 7189 | 7232 | { |
| 7190 | 7233 | "group": "Sucesso Response Body - 200", |
| ... | ... | @@ -7199,17 +7242,24 @@ |
| 7199 | 7242 | }, |
| 7200 | 7243 | { |
| 7201 | 7244 | "group": "Sucesso Response Body - 200", |
| 7202 | - "type": "Data", | |
| 7245 | + "type": "String", | |
| 7203 | 7246 | "optional": false, |
| 7204 | - "field": "documentos.documentoResumido.dataGeracao", | |
| 7205 | - "description": "<p>Data de geração do documento.</p>" | |
| 7247 | + "field": "documentos.documentoResumido.tipo", | |
| 7248 | + "description": "<p>Tipo do documento.</p>" | |
| 7249 | + }, | |
| 7250 | + { | |
| 7251 | + "group": "Sucesso Response Body - 200", | |
| 7252 | + "type": "String", | |
| 7253 | + "optional": false, | |
| 7254 | + "field": "documentos.documentoResumido.tipoConferencia", | |
| 7255 | + "description": "<p>Tipo de conferência do documento.</p>" | |
| 7206 | 7256 | } |
| 7207 | 7257 | ] |
| 7208 | 7258 | }, |
| 7209 | 7259 | "examples": [ |
| 7210 | 7260 | { |
| 7211 | 7261 | "title": "Success-Response:", |
| 7212 | - "content": "HTTP/1.1 200 OK\n{\n \"dataGeracao\": \"2015-08-10T00:00:00-03:00\",\n \"numero\": \"0670949\",\n \"origem\": \"RECEBIDO\",\n \"tipo\": \"Despacho\"\n}", | |
| 7262 | + "content": "HTTP/1.1 200 OK\n{\n \"assinado\": true,\n \"codigoTipo\": \"5\",\n \"dataGeracao\": \"2015-08-10T00:00:00-03:00\",\n \"numero\": \"0670949\",\n \"origem\": \"RECEBIDO\",\n \"tipo\": \"Despacho\"\n \"tipoConferencia\": \"4\",\n}", | |
| 7213 | 7263 | "type": "json" |
| 7214 | 7264 | } |
| 7215 | 7265 | ] | ... | ... |
src/main/webapp/api-docs/api_project.js
src/main/webapp/api-docs/api_project.json