Commit a77349db47513526b94783bac07f75c308c828ce

Authored by sys jenkins
1 parent d92c249e

Integrated SEI-BROKER_HM #66 (from Jenkins)

http://ansprsvn01.ans.gov.br/03_ARQUITETURA/projetos/sei-broker/Fontes/branches/branch_homologacao@2115
pom.xml
... ... @@ -4,7 +4,7 @@
4 4 <modelVersion>4.0.0</modelVersion>
5 5 <groupId>br.gov.ans</groupId>
6 6 <artifactId>sei-broker</artifactId>
7   - <version>2.4.1</version>
  7 + <version>2.4.2</version>
8 8 <packaging>war</packaging>
9 9 <name>sei-broker</name>
10 10 <description>Projeto demonstrativo de webservice Rest</description>
... ...
src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java
... ... @@ -84,7 +84,7 @@ public class DocumentoDAO {
84 84 parametros.put("codigoTipo", codigoTipo);
85 85 }
86 86  
87   - builder.append("GROUP BY numero ");
  87 + builder.append("GROUP BY pr.protocolo_formatado_pesquisa ");
88 88  
89 89 if(orderByProcesso){
90 90 builder.append("ORDER BY processo ");
... ... @@ -102,6 +102,7 @@ public class DocumentoDAO {
102 102  
103 103 setPaginacaoQuery(query, pagina, qtdRegistros);
104 104  
  105 + @SuppressWarnings("unchecked")
105 106 List<Object[]> results = query.getResultList();
106 107  
107 108 List<DocumentoResumido> documentos = new ArrayList<DocumentoResumido>();
... ... @@ -152,7 +153,8 @@ public class DocumentoDAO {
152 153 }
153 154  
154 155 @SuppressWarnings("unchecked")
155   - public List<DocumentoResumido> getDocumentosProcesso(String idProcedimento, String codigoTipo, String origem, boolean somenteAssinados){
  156 + public List<DocumentoResumido> getDocumentosProcesso(String idProcedimento, String codigoTipo, String origem, boolean somenteAssinados,
  157 + Integer pagina, Integer qtdRegistros){
156 158 HashMap<String, Object> parametros = new HashMap<String, Object>();
157 159  
158 160 StringBuilder builder = new StringBuilder("SELECT pr.protocolo_formatado_pesquisa numero, s.nome tipoNome, s.id_serie tipoCodigo, d.numero numeroInformado, ");
... ... @@ -183,11 +185,12 @@ public class DocumentoDAO {
183 185 parametros.put("origem", origem);
184 186 }
185 187  
186   - builder.append("GROUP BY numero ORDER BY pr.dta_geracao ASC");
  188 + builder.append("GROUP BY pr.protocolo_formatado_pesquisa ORDER BY pr.dta_geracao, pr.protocolo_formatado_pesquisa ASC");
187 189  
188 190 Query query = em.createNativeQuery(builder.toString(), "DocumentoResumidoMapping");
189 191  
190 192 setQueryParameters(query, parametros);
  193 + setPaginacaoQuery(query, pagina, qtdRegistros);
191 194  
192 195 List<Object[]> results = null;
193 196 List<DocumentoResumido> documentos = new ArrayList<DocumentoResumido>();
... ... @@ -205,5 +208,69 @@ public class DocumentoDAO {
205 208  
206 209 return documentos;
207 210 }
  211 +
  212 + public Long countDocumentosProcesso(String idProcedimento, String codigoTipo, String origem, boolean somenteAssinados){
  213 + HashMap<String, Object> parametros = new HashMap<String, Object>();
  214 +
  215 + StringBuilder builder = new StringBuilder("SELECT count(pr.protocolo_formatado_pesquisa) ");
  216 + builder.append("FROM documento AS d ");
  217 +
  218 + if(somenteAssinados){
  219 + builder.append("RIGHT JOIN assinatura AS a ON d.id_documento = a.id_documento ");
  220 + }else{
  221 + builder.append("LEFT JOIN assinatura AS a ON d.id_documento = a.id_documento ");
  222 + }
  223 +
  224 + builder.append("JOIN protocolo AS pr ON pr.id_protocolo = d.id_documento ");
  225 + builder.append("JOIN serie AS s ON d.id_serie = s.id_serie ");
  226 + builder.append("WHERE d.id_procedimento = :idProcedimento ");
208 227  
  228 + parametros.put("idProcedimento", idProcedimento);
  229 +
  230 + if(StringUtils.isNotBlank(codigoTipo)){
  231 + builder.append("AND s.id_serie in (:codigoTipo) ");
  232 + parametros.put("codigoTipo", codigoTipo);
  233 + }
  234 +
  235 + if(StringUtils.isNotBlank(origem)){
  236 + builder.append("AND pr.sta_protocolo = :origem ");
  237 + parametros.put("origem", origem);
  238 + }
  239 +
  240 + Query query = em.createNativeQuery(builder.toString());
  241 +
  242 + setQueryParameters(query, parametros);
  243 +
  244 + try{
  245 + return Long.valueOf(query.getSingleResult().toString());
  246 + }catch(NoResultException ex){
  247 + return 0L;
  248 + }
  249 + }
  250 +
  251 + public DocumentoResumido getDocumentoProcesso(String idProcedimento, String documento){
  252 + HashMap<String, Object> parametros = new HashMap<String, Object>();
  253 +
  254 + StringBuilder builder = new StringBuilder("SELECT pr.protocolo_formatado_pesquisa numero, s.nome tipoNome, s.id_serie tipoCodigo, d.numero numeroInformado, ");
  255 + builder.append("CASE pr.sta_protocolo WHEN 'G' THEN 'GERADO' ELSE 'RECEBIDO' END origem, d.id_tipo_conferencia tipoConferencia, ");
  256 + builder.append("pr.dta_geracao dataGeracao, null as processo, null as unidade, ");
  257 + builder.append("CASE WHEN a.id_assinatura is null THEN false ELSE true END assinado ");
  258 + builder.append("FROM documento AS d ");
  259 + builder.append("LEFT JOIN assinatura AS a ON d.id_documento = a.id_documento ");
  260 + builder.append("JOIN protocolo AS pr ON pr.id_protocolo = d.id_documento ");
  261 + builder.append("JOIN serie AS s ON d.id_serie = s.id_serie ");
  262 + builder.append("WHERE d.id_procedimento = :idProcedimento ");
  263 + builder.append("AND pr.protocolo_formatado_pesquisa = :documento ");
  264 +
  265 + parametros.put("idProcedimento", idProcedimento);
  266 + parametros.put("documento", documento);
  267 +
  268 + Query query = em.createNativeQuery(builder.toString(), "DocumentoResumidoMapping");
  269 +
  270 + setQueryParameters(query, parametros);
  271 +
  272 + Object result = query.getSingleResult();
  273 +
  274 + return (DocumentoResumido) ((Object[]) result)[0];
  275 + }
209 276 }
... ...
src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java
... ... @@ -56,7 +56,10 @@ public class SiparDAO {
56 56 + "WHERE "
57 57 + "TR.DT_RECEBIMENTO IS NULL "
58 58 + "AND TR.CO_DOCUMENTO = :numero "
59   - + "AND TR.NU_ANO_DOCUMENTO = :ano ";
  59 + + "AND TR.NU_ANO_DOCUMENTO = :ano "
  60 + + "AND TR.DT_ENVIO = ("
  61 + + " SELECT MAX(TR2.DT_ENVIO) FROM DBPSIPAR.TB_TRAMITACAO TR2 WHERE TR2.CO_DOCUMENTO = :numero AND TR2.NU_ANO_DOCUMENTO = :ano"
  62 + + ")";
60 63  
61 64 Query query = em.createNativeQuery(sql);
62 65 query.setParameter("numero", numero);
... ...
src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java
... ... @@ -51,6 +51,7 @@ import br.gov.ans.integracao.sei.dao.ProcessoDAO;
51 51 import br.gov.ans.integracao.sei.dao.SiparDAO;
52 52 import br.gov.ans.integracao.sei.modelo.DocumentoResumido;
53 53 import br.gov.ans.integracao.sei.modelo.EnvioDeProcesso;
  54 +import br.gov.ans.integracao.sei.modelo.InclusaoDocumento;
54 55 import br.gov.ans.integracao.sei.modelo.Motivo;
55 56 import br.gov.ans.integracao.sei.modelo.NovoAndamento;
56 57 import br.gov.ans.integracao.sei.modelo.NovoProcesso;
... ... @@ -1165,6 +1166,8 @@ public class ProcessoResource {
1165 1166 * @apiParam (Query Parameters) {String} [tipo=null] Identificador do tipo do documento, caso seja necessário filtrar pelo tipo
1166 1167 * @apiParam (Query Parameters) {String = "G (gerado/interno), R (recebido/externo)"} [origem=null] Filtra os documentos por gerados ou recebidos
1167 1168 * @apiParam (Query Parameters) {boolean} [somenteAssinados=false] Exibir somente documentos assinados
  1169 + * @apiParam (Query Parameters) {String} [pagina=1] Número da página
  1170 + * @apiParam (Query Parameters) {String} [qtdRegistros = 50] Quantidade de registros que serão exibidos por página
1168 1171 *
1169 1172 * @apiExample Exemplo de requisição:
1170 1173 * curl -i https://<host>/sei-broker/service/processos/33910003149201793/documentos
... ... @@ -1181,6 +1184,8 @@ public class ProcessoResource {
1181 1184 * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.tipoConferencia Tipo de conferência do documento.
1182 1185 * @apiSuccess (Sucesso Response Body - 200) {boolean} documentos.documentoResumido.assinado Boolean indicando se o documento foi assinado.
1183 1186 *
  1187 + * @apiSuccess (Sucesso Response Header- 200) {header} total_registros Quantidade de registros que existem para essa consulta
  1188 + *
1184 1189 * @apiSuccessExample {json} Success-Response:
1185 1190 * HTTP/1.1 200 OK
1186 1191 * {
... ... @@ -1206,21 +1211,88 @@ public class ProcessoResource {
1206 1211 @GET
1207 1212 @Path("/processos/{processo:\\d+}/documentos")
1208 1213 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
1209   - public List<DocumentoResumido> listarDocumentosPorProcesso(@PathParam("processo") String processo, @QueryParam("tipo")String tipo,
1210   - @QueryParam("origem") String origem, @QueryParam("somenteAssinados") boolean somenteAssinados) throws RemoteException, Exception{
1211   - try{
1212   - BigInteger idProcedimento = processoDAO.getIdProcedimento(formatarNumeroProcesso(processo));
1213   -
1214   - List<DocumentoResumido> documentosProcesso = documentoDAO.getDocumentosProcesso(idProcedimento.toString(), tipo, origem, somenteAssinados);
1215   -
1216   - if(documentosProcesso.isEmpty()){
1217   - throw new ResourceNotFoundException(messages.getMessage("erro.processo.sem.documentos", formatarNumeroProcesso(processo)));
1218   - }
  1214 + public Response listarDocumentosPorProcesso(@PathParam("processo") String processo, @QueryParam("tipo")String tipo,
  1215 + @QueryParam("origem") String origem, @QueryParam("somenteAssinados") boolean somenteAssinados, @QueryParam("pagina") String pagina,
  1216 + @QueryParam("qtdRegistros") String qtdRegistros)throws RemoteException, Exception{
  1217 +
  1218 + Integer tamanhoPagina = (qtdRegistros == null ? null : parseInt(qtdRegistros));
  1219 +
  1220 + String idProcedimento = consultarIdProcedimento(processo);
1219 1221  
1220   - return documentosProcesso;
1221   - }catch(NoResultException ex){
1222   - throw new BusinessException(messages.getMessage("erro.processo.nao.pertence.sei", formatarNumeroProcesso(processo)));
  1222 + Long totalDocumentosProcesso = documentoDAO.countDocumentosProcesso(idProcedimento, tipo, origem, somenteAssinados);
  1223 +
  1224 + if(totalDocumentosProcesso < 1L){
  1225 + throw new ResourceNotFoundException(messages.getMessage("erro.processo.sem.documentos", formatarNumeroProcesso(processo)));
1223 1226 }
  1227 +
  1228 + List<DocumentoResumido> documentosProcesso = documentoDAO.getDocumentosProcesso(idProcedimento, tipo, origem, somenteAssinados,
  1229 + pagina == null ? null : parseInt(pagina), tamanhoPagina);
  1230 +
  1231 + return Response.status(getStatus(totalDocumentosProcesso.intValue(), tamanhoPagina)).header("total_registros", totalDocumentosProcesso)
  1232 + .entity(new GenericEntity<List<DocumentoResumido>>(documentosProcesso){}).build();
  1233 + }
  1234 +
  1235 + /**
  1236 + * @api {get} /processos/:processo/documentos/:documento Consultar documento
  1237 + * @apiName consultarDocumentoDoProcesso
  1238 + * @apiGroup Processo
  1239 + * @apiVersion 2.0.0
  1240 + *
  1241 + * @apiPermission RO_SEI_BROKER ou RO_SEI_BROKER_CONSULTA
  1242 + *
  1243 + * @apiDescription Consulta um documento de determinado processo.
  1244 + *
  1245 + * @apiParam (Path Parameters) {String} processo Número do processo.
  1246 + * @apiParam (Path Parameters) {String} documento Número do documento.
  1247 + *
  1248 + * @apiExample Exemplo de requisição:
  1249 + * curl -i https://<host>/sei-broker/service/processos/33910002924201874/documentos/55737058
  1250 + *
  1251 + * @apiSuccess (Sucesso Response Body - 200) {DocumentoResumido} documentoResumido Resumo do documento encontrado no SEI.
  1252 + * @apiSuccess (Sucesso Response Body - 200) {String} documentoResumido.numero Número do documento.
  1253 + * @apiSuccess (Sucesso Response Body - 200) {String} documentoResumido.numeroInformado Número informado na inclusão do documento, também conhecido como número de árvore.
  1254 + * @apiSuccess (Sucesso Response Body - 200) {String="GERADO","RECEBIDO"} documentoResumido.origem Origem do documento, se o mesmo é um documento "GERADO" internamente ou "RECEBIDO" de uma fonte externa.
  1255 + * @apiSuccess (Sucesso Response Body - 200) {Data} documentoResumido.dataGeracao Data de geração do documento.
  1256 + * @apiSuccess (Sucesso Response Body - 200) {Tipo} documentoResumido.tipo Objeto representando o tipo do documento.
  1257 + * @apiSuccess (Sucesso Response Body - 200) {String} documentoResumido.tipo.codigo Identificados do tipo do documento, também conhecido como série.
  1258 + * @apiSuccess (Sucesso Response Body - 200) {String} documentoResumido.tipo.nome Nome do tipo do documento.
  1259 + * @apiSuccess (Sucesso Response Body - 200) {String} documentoResumido.tipoConferencia Tipo de conferência do documento.
  1260 + * @apiSuccess (Sucesso Response Body - 200) {boolean} documentoResumido.assinado Boolean indicando se o documento foi assinado.
  1261 + *
  1262 + * @apiSuccessExample {json} Success-Response:
  1263 + * HTTP/1.1 200 OK
  1264 + * {
  1265 + * "numero": "0670949",
  1266 + * "numeroInformado": "594",
  1267 + * "origem": "RECEBIDO",
  1268 + * "dataGeracao": "2015-08-10T00:00:00-03:00",
  1269 + * "tipo": {
  1270 + * "codigo": "629",
  1271 + * "nome": "Relatório de Arquivamento-SIF"
  1272 + * }
  1273 + * "tipoConferencia": "4",
  1274 + * "assinado": true
  1275 + * }
  1276 + *
  1277 + * @apiErrorExample {json} Error-Response:
  1278 + * HTTP/1.1 500 Internal Server Error
  1279 + * {
  1280 + * "error":"Mensagem de erro."
  1281 + * "code":"código do erro"
  1282 + * }
  1283 + */
  1284 + @GET
  1285 + @Path("/processos/{processo:\\d+}/documentos/{documento:\\d+}")
  1286 + @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
  1287 + public DocumentoResumido consultarDocumentoDoProcesso(@PathParam("processo") String processo, @PathParam("documento") String documento)throws RemoteException, Exception{
  1288 + String idProcedimento = consultarIdProcedimento(processo);
  1289 + try {
  1290 + DocumentoResumido documentoProcesso = documentoDAO.getDocumentoProcesso(idProcedimento, documento);
  1291 +
  1292 + return documentoProcesso;
  1293 + } catch (Exception e) {
  1294 + throw new ResourceNotFoundException(messages.getMessage("erro.documento.nao.encontrado", documento, formatarNumeroProcesso(processo)));
  1295 + }
1224 1296 }
1225 1297  
1226 1298 public URI getResourcePath(String resourceId){
... ... @@ -1253,4 +1325,20 @@ public class ProcessoResource {
1253 1325  
1254 1326 return atributos.toArray(new AtributoAndamento[atributos.size()]);
1255 1327 }
  1328 +
  1329 + public String consultarIdProcedimento(String processo) throws Exception{
  1330 + try{
  1331 + return ((BigInteger) processoDAO.getIdProcedimento(formatarNumeroProcesso(processo))).toString();
  1332 + }catch(NoResultException ex){
  1333 + throw new BusinessException(messages.getMessage("erro.processo.nao.pertence.sei", formatarNumeroProcesso(processo)));
  1334 + }
  1335 + }
  1336 +
  1337 + public Status getStatus(Integer quantidadeItens, Integer tamanhoPagina){
  1338 + if(quantidadeItens > (tamanhoPagina == null ? Constantes.TAMANHO_PAGINA_PADRAO : tamanhoPagina )){
  1339 + return Status.PARTIAL_CONTENT;
  1340 + }
  1341 +
  1342 + return Status.OK;
  1343 + }
1256 1344 }
... ...
src/main/resources/config.properties
1   -versao.sistema = V_2.4.1
2 1 \ No newline at end of file
  2 +versao.sistema = V_2.4.2
3 3 \ No newline at end of file
... ...
src/main/resources/messages.properties
... ... @@ -18,6 +18,7 @@ erro.desanexar.processo = Ocorreu um erro ao desanexar o processo.
18 18 erro.desbloquear.processo = Ocorreu um erro ao desbloquear o processo.
19 19 erro.desrelacionar.processo = Ocorreu um erro ao remover o relacionamento.
20 20 erro.documento.incluir.bloco = Não foi possivel incluir o documento no bloco.
  21 +erro.documento.nao.encontrado = Não existe documento com o identificador {0} no processo {1}.
21 22 erro.documento.sem.processo = É necessário informar um número de processo para incluir um documento.
22 23 erro.estado.nao.encontrado = Não foi encontrado um estado para a sigla {0}.
23 24 erro.inesperado = Ocorreu um erro inesperado no SEI-Broker, contacte a equipe responsável.
... ...
src/main/webapp/api-docs/api_data.js
... ... @@ -1330,6 +1330,34 @@ define({ &quot;api&quot;: [
1330 1330 "name": ""
1331 1331 },
1332 1332 {
  1333 + "success": {
  1334 + "fields": {
  1335 + "Success 200": [
  1336 + {
  1337 + "group": "Success 200",
  1338 + "optional": false,
  1339 + "field": "varname1",
  1340 + "description": "<p>No type.</p>"
  1341 + },
  1342 + {
  1343 + "group": "Success 200",
  1344 + "type": "String",
  1345 + "optional": false,
  1346 + "field": "varname2",
  1347 + "description": "<p>With type.</p>"
  1348 + }
  1349 + ]
  1350 + }
  1351 + },
  1352 + "type": "",
  1353 + "url": "",
  1354 + "version": "0.0.0",
  1355 + "filename": "sei-broker/target/sei-broker-2.4.2/api-docs/main.js",
  1356 + "group": "C__ANS_sei_broker_Fontes_branches_desenvolvimento_versao_3_sei_broker_target_sei_broker_2_4_2_api_docs_main_js",
  1357 + "groupTitle": "C__ANS_sei_broker_Fontes_branches_desenvolvimento_versao_3_sei_broker_target_sei_broker_2_4_2_api_docs_main_js",
  1358 + "name": ""
  1359 + },
  1360 + {
1333 1361 "type": "get",
1334 1362 "url": "/:unidade/cargos",
1335 1363 "title": "Listar cargos",
... ... @@ -5772,6 +5800,145 @@ define({ &quot;api&quot;: [
5772 5800 },
5773 5801 {
5774 5802 "type": "get",
  5803 + "url": "/processos/:processo/documentos/:documento",
  5804 + "title": "Consultar documento",
  5805 + "name": "consultarDocumentoDoProcesso",
  5806 + "group": "Processo",
  5807 + "version": "2.0.0",
  5808 + "permission": [
  5809 + {
  5810 + "name": "RO_SEI_BROKER ou RO_SEI_BROKER_CONSULTA"
  5811 + }
  5812 + ],
  5813 + "description": "<p>Consulta um documento de determinado processo.</p>",
  5814 + "parameter": {
  5815 + "fields": {
  5816 + "Path Parameters": [
  5817 + {
  5818 + "group": "Path Parameters",
  5819 + "type": "String",
  5820 + "optional": false,
  5821 + "field": "processo",
  5822 + "description": "<p>Número do processo.</p>"
  5823 + },
  5824 + {
  5825 + "group": "Path Parameters",
  5826 + "type": "String",
  5827 + "optional": false,
  5828 + "field": "documento",
  5829 + "description": "<p>Número do documento.</p>"
  5830 + }
  5831 + ]
  5832 + }
  5833 + },
  5834 + "examples": [
  5835 + {
  5836 + "title": "Exemplo de requisição:\t",
  5837 + "content": "curl -i https://<host>/sei-broker/service/processos/33910002924201874/documentos/55737058",
  5838 + "type": "json"
  5839 + }
  5840 + ],
  5841 + "success": {
  5842 + "fields": {
  5843 + "Sucesso Response Body - 200": [
  5844 + {
  5845 + "group": "Sucesso Response Body - 200",
  5846 + "type": "DocumentoResumido",
  5847 + "optional": false,
  5848 + "field": "documentoResumido",
  5849 + "description": "<p>Resumo do documento encontrado no SEI.</p>"
  5850 + },
  5851 + {
  5852 + "group": "Sucesso Response Body - 200",
  5853 + "type": "String",
  5854 + "optional": false,
  5855 + "field": "documentoResumido.numero",
  5856 + "description": "<p>Número do documento.</p>"
  5857 + },
  5858 + {
  5859 + "group": "Sucesso Response Body - 200",
  5860 + "type": "String",
  5861 + "optional": false,
  5862 + "field": "documentoResumido.numeroInformado",
  5863 + "description": "<p>Número informado na inclusão do documento, também conhecido como número de árvore.</p>"
  5864 + },
  5865 + {
  5866 + "group": "Sucesso Response Body - 200",
  5867 + "type": "String",
  5868 + "allowedValues": [
  5869 + "\"GERADO\"",
  5870 + "\"RECEBIDO\""
  5871 + ],
  5872 + "optional": false,
  5873 + "field": "documentoResumido.origem",
  5874 + "description": "<p>Origem do documento, se o mesmo é um documento &quot;GERADO&quot; internamente ou &quot;RECEBIDO&quot; de uma fonte externa.</p>"
  5875 + },
  5876 + {
  5877 + "group": "Sucesso Response Body - 200",
  5878 + "type": "Data",
  5879 + "optional": false,
  5880 + "field": "documentoResumido.dataGeracao",
  5881 + "description": "<p>Data de geração do documento.</p>"
  5882 + },
  5883 + {
  5884 + "group": "Sucesso Response Body - 200",
  5885 + "type": "Tipo",
  5886 + "optional": false,
  5887 + "field": "documentoResumido.tipo",
  5888 + "description": "<p>Objeto representando o tipo do documento.</p>"
  5889 + },
  5890 + {
  5891 + "group": "Sucesso Response Body - 200",
  5892 + "type": "String",
  5893 + "optional": false,
  5894 + "field": "documentoResumido.tipo.codigo",
  5895 + "description": "<p>Identificados do tipo do documento, também conhecido como série.</p>"
  5896 + },
  5897 + {
  5898 + "group": "Sucesso Response Body - 200",
  5899 + "type": "String",
  5900 + "optional": false,
  5901 + "field": "documentoResumido.tipo.nome",
  5902 + "description": "<p>Nome do tipo do documento.</p>"
  5903 + },
  5904 + {
  5905 + "group": "Sucesso Response Body - 200",
  5906 + "type": "String",
  5907 + "optional": false,
  5908 + "field": "documentoResumido.tipoConferencia",
  5909 + "description": "<p>Tipo de conferência do documento.</p>"
  5910 + },
  5911 + {
  5912 + "group": "Sucesso Response Body - 200",
  5913 + "type": "boolean",
  5914 + "optional": false,
  5915 + "field": "documentoResumido.assinado",
  5916 + "description": "<p>Boolean indicando se o documento foi assinado.</p>"
  5917 + }
  5918 + ]
  5919 + },
  5920 + "examples": [
  5921 + {
  5922 + "title": "Success-Response:",
  5923 + "content": "HTTP/1.1 200 OK\n{\n \"numero\": \"0670949\",\n \"numeroInformado\": \"594\",\n \"origem\": \"RECEBIDO\",\n \"dataGeracao\": \"2015-08-10T00:00:00-03:00\",\n \"tipo\": {\n \t\"codigo\": \"629\",\n \t\"nome\": \"Relatório de Arquivamento-SIF\"\n }\n \"tipoConferencia\": \"4\",\n \"assinado\": true\n}",
  5924 + "type": "json"
  5925 + }
  5926 + ]
  5927 + },
  5928 + "error": {
  5929 + "examples": [
  5930 + {
  5931 + "title": "Error-Response:",
  5932 + "content": "HTTP/1.1 500 Internal Server Error\n{\n\t\"error\":\"Mensagem de erro.\"\n\t\"code\":\"código do erro\"\n}",
  5933 + "type": "json"
  5934 + }
  5935 + ]
  5936 + },
  5937 + "filename": "sei-broker/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java",
  5938 + "groupTitle": "Processo"
  5939 + },
  5940 + {
  5941 + "type": "get",
5775 5942 "url": "/:unidade/processos/:processo",
5776 5943 "title": "Consultar processo",
5777 5944 "name": "consultarProcesso",
... ... @@ -7490,6 +7657,22 @@ define({ &quot;api&quot;: [
7490 7657 "field": "somenteAssinados",
7491 7658 "defaultValue": "false",
7492 7659 "description": "<p>Exibir somente documentos assinados</p>"
  7660 + },
  7661 + {
  7662 + "group": "Query Parameters",
  7663 + "type": "String",
  7664 + "optional": true,
  7665 + "field": "pagina",
  7666 + "defaultValue": "1",
  7667 + "description": "<p>Número da página</p>"
  7668 + },
  7669 + {
  7670 + "group": "Query Parameters",
  7671 + "type": "String",
  7672 + "optional": true,
  7673 + "field": "qtdRegistros",
  7674 + "defaultValue": "50",
  7675 + "description": "<p>Quantidade de registros que serão exibidos por página</p>"
7493 7676 }
7494 7677 ]
7495 7678 }
... ... @@ -7585,6 +7768,15 @@ define({ &quot;api&quot;: [
7585 7768 "field": "documentos.documentoResumido.assinado",
7586 7769 "description": "<p>Boolean indicando se o documento foi assinado.</p>"
7587 7770 }
  7771 + ],
  7772 + "Sucesso Response Header- 200": [
  7773 + {
  7774 + "group": "Sucesso Response Header- 200",
  7775 + "type": "header",
  7776 + "optional": false,
  7777 + "field": "total_registros",
  7778 + "description": "<p>Quantidade de registros que existem para essa consulta</p>"
  7779 + }
7588 7780 ]
7589 7781 },
7590 7782 "examples": [
... ...
src/main/webapp/api-docs/api_data.json
... ... @@ -1330,6 +1330,34 @@
1330 1330 "name": ""
1331 1331 },
1332 1332 {
  1333 + "success": {
  1334 + "fields": {
  1335 + "Success 200": [
  1336 + {
  1337 + "group": "Success 200",
  1338 + "optional": false,
  1339 + "field": "varname1",
  1340 + "description": "<p>No type.</p>"
  1341 + },
  1342 + {
  1343 + "group": "Success 200",
  1344 + "type": "String",
  1345 + "optional": false,
  1346 + "field": "varname2",
  1347 + "description": "<p>With type.</p>"
  1348 + }
  1349 + ]
  1350 + }
  1351 + },
  1352 + "type": "",
  1353 + "url": "",
  1354 + "version": "0.0.0",
  1355 + "filename": "sei-broker/target/sei-broker-2.4.2/api-docs/main.js",
  1356 + "group": "C__ANS_sei_broker_Fontes_branches_desenvolvimento_versao_3_sei_broker_target_sei_broker_2_4_2_api_docs_main_js",
  1357 + "groupTitle": "C__ANS_sei_broker_Fontes_branches_desenvolvimento_versao_3_sei_broker_target_sei_broker_2_4_2_api_docs_main_js",
  1358 + "name": ""
  1359 + },
  1360 + {
1333 1361 "type": "get",
1334 1362 "url": "/:unidade/cargos",
1335 1363 "title": "Listar cargos",
... ... @@ -5772,6 +5800,145 @@
5772 5800 },
5773 5801 {
5774 5802 "type": "get",
  5803 + "url": "/processos/:processo/documentos/:documento",
  5804 + "title": "Consultar documento",
  5805 + "name": "consultarDocumentoDoProcesso",
  5806 + "group": "Processo",
  5807 + "version": "2.0.0",
  5808 + "permission": [
  5809 + {
  5810 + "name": "RO_SEI_BROKER ou RO_SEI_BROKER_CONSULTA"
  5811 + }
  5812 + ],
  5813 + "description": "<p>Consulta um documento de determinado processo.</p>",
  5814 + "parameter": {
  5815 + "fields": {
  5816 + "Path Parameters": [
  5817 + {
  5818 + "group": "Path Parameters",
  5819 + "type": "String",
  5820 + "optional": false,
  5821 + "field": "processo",
  5822 + "description": "<p>Número do processo.</p>"
  5823 + },
  5824 + {
  5825 + "group": "Path Parameters",
  5826 + "type": "String",
  5827 + "optional": false,
  5828 + "field": "documento",
  5829 + "description": "<p>Número do documento.</p>"
  5830 + }
  5831 + ]
  5832 + }
  5833 + },
  5834 + "examples": [
  5835 + {
  5836 + "title": "Exemplo de requisição:\t",
  5837 + "content": "curl -i https://<host>/sei-broker/service/processos/33910002924201874/documentos/55737058",
  5838 + "type": "json"
  5839 + }
  5840 + ],
  5841 + "success": {
  5842 + "fields": {
  5843 + "Sucesso Response Body - 200": [
  5844 + {
  5845 + "group": "Sucesso Response Body - 200",
  5846 + "type": "DocumentoResumido",
  5847 + "optional": false,
  5848 + "field": "documentoResumido",
  5849 + "description": "<p>Resumo do documento encontrado no SEI.</p>"
  5850 + },
  5851 + {
  5852 + "group": "Sucesso Response Body - 200",
  5853 + "type": "String",
  5854 + "optional": false,
  5855 + "field": "documentoResumido.numero",
  5856 + "description": "<p>Número do documento.</p>"
  5857 + },
  5858 + {
  5859 + "group": "Sucesso Response Body - 200",
  5860 + "type": "String",
  5861 + "optional": false,
  5862 + "field": "documentoResumido.numeroInformado",
  5863 + "description": "<p>Número informado na inclusão do documento, também conhecido como número de árvore.</p>"
  5864 + },
  5865 + {
  5866 + "group": "Sucesso Response Body - 200",
  5867 + "type": "String",
  5868 + "allowedValues": [
  5869 + "\"GERADO\"",
  5870 + "\"RECEBIDO\""
  5871 + ],
  5872 + "optional": false,
  5873 + "field": "documentoResumido.origem",
  5874 + "description": "<p>Origem do documento, se o mesmo é um documento &quot;GERADO&quot; internamente ou &quot;RECEBIDO&quot; de uma fonte externa.</p>"
  5875 + },
  5876 + {
  5877 + "group": "Sucesso Response Body - 200",
  5878 + "type": "Data",
  5879 + "optional": false,
  5880 + "field": "documentoResumido.dataGeracao",
  5881 + "description": "<p>Data de geração do documento.</p>"
  5882 + },
  5883 + {
  5884 + "group": "Sucesso Response Body - 200",
  5885 + "type": "Tipo",
  5886 + "optional": false,
  5887 + "field": "documentoResumido.tipo",
  5888 + "description": "<p>Objeto representando o tipo do documento.</p>"
  5889 + },
  5890 + {
  5891 + "group": "Sucesso Response Body - 200",
  5892 + "type": "String",
  5893 + "optional": false,
  5894 + "field": "documentoResumido.tipo.codigo",
  5895 + "description": "<p>Identificados do tipo do documento, também conhecido como série.</p>"
  5896 + },
  5897 + {
  5898 + "group": "Sucesso Response Body - 200",
  5899 + "type": "String",
  5900 + "optional": false,
  5901 + "field": "documentoResumido.tipo.nome",
  5902 + "description": "<p>Nome do tipo do documento.</p>"
  5903 + },
  5904 + {
  5905 + "group": "Sucesso Response Body - 200",
  5906 + "type": "String",
  5907 + "optional": false,
  5908 + "field": "documentoResumido.tipoConferencia",
  5909 + "description": "<p>Tipo de conferência do documento.</p>"
  5910 + },
  5911 + {
  5912 + "group": "Sucesso Response Body - 200",
  5913 + "type": "boolean",
  5914 + "optional": false,
  5915 + "field": "documentoResumido.assinado",
  5916 + "description": "<p>Boolean indicando se o documento foi assinado.</p>"
  5917 + }
  5918 + ]
  5919 + },
  5920 + "examples": [
  5921 + {
  5922 + "title": "Success-Response:",
  5923 + "content": "HTTP/1.1 200 OK\n{\n \"numero\": \"0670949\",\n \"numeroInformado\": \"594\",\n \"origem\": \"RECEBIDO\",\n \"dataGeracao\": \"2015-08-10T00:00:00-03:00\",\n \"tipo\": {\n \t\"codigo\": \"629\",\n \t\"nome\": \"Relatório de Arquivamento-SIF\"\n }\n \"tipoConferencia\": \"4\",\n \"assinado\": true\n}",
  5924 + "type": "json"
  5925 + }
  5926 + ]
  5927 + },
  5928 + "error": {
  5929 + "examples": [
  5930 + {
  5931 + "title": "Error-Response:",
  5932 + "content": "HTTP/1.1 500 Internal Server Error\n{\n\t\"error\":\"Mensagem de erro.\"\n\t\"code\":\"código do erro\"\n}",
  5933 + "type": "json"
  5934 + }
  5935 + ]
  5936 + },
  5937 + "filename": "sei-broker/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java",
  5938 + "groupTitle": "Processo"
  5939 + },
  5940 + {
  5941 + "type": "get",
5775 5942 "url": "/:unidade/processos/:processo",
5776 5943 "title": "Consultar processo",
5777 5944 "name": "consultarProcesso",
... ... @@ -7490,6 +7657,22 @@
7490 7657 "field": "somenteAssinados",
7491 7658 "defaultValue": "false",
7492 7659 "description": "<p>Exibir somente documentos assinados</p>"
  7660 + },
  7661 + {
  7662 + "group": "Query Parameters",
  7663 + "type": "String",
  7664 + "optional": true,
  7665 + "field": "pagina",
  7666 + "defaultValue": "1",
  7667 + "description": "<p>Número da página</p>"
  7668 + },
  7669 + {
  7670 + "group": "Query Parameters",
  7671 + "type": "String",
  7672 + "optional": true,
  7673 + "field": "qtdRegistros",
  7674 + "defaultValue": "50",
  7675 + "description": "<p>Quantidade de registros que serão exibidos por página</p>"
7493 7676 }
7494 7677 ]
7495 7678 }
... ... @@ -7585,6 +7768,15 @@
7585 7768 "field": "documentos.documentoResumido.assinado",
7586 7769 "description": "<p>Boolean indicando se o documento foi assinado.</p>"
7587 7770 }
  7771 + ],
  7772 + "Sucesso Response Header- 200": [
  7773 + {
  7774 + "group": "Sucesso Response Header- 200",
  7775 + "type": "header",
  7776 + "optional": false,
  7777 + "field": "total_registros",
  7778 + "description": "<p>Quantidade de registros que existem para essa consulta</p>"
  7779 + }
7588 7780 ]
7589 7781 },
7590 7782 "examples": [
... ...
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": "2018-03-23T14:42:37.240Z",
  11 + "time": "2018-04-09T12:23:09.782Z",
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": "2018-03-23T14:42:37.240Z",
  11 + "time": "2018-04-09T12:23:09.782Z",
12 12 "url": "http://apidocjs.com",
13 13 "version": "0.15.1"
14 14 }
... ...