Commit 755238e7213e873f3e8a38ed7b9b87076abf8705

Authored by andre guimaraes
1 parent 9d6d8b01

Alterações no método de consulta a documentos por interessado, query melhorada e…

… retorno com mais informações, novas opções de filtragem adicionadas, documentação atualizada.
src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java
... ... @@ -8,6 +8,7 @@ import java.util.HashMap;
8 8 import java.util.List;
9 9  
10 10 import javax.persistence.EntityManager;
  11 +import javax.persistence.NoResultException;
11 12 import javax.persistence.PersistenceContext;
12 13 import javax.persistence.PersistenceContextType;
13 14 import javax.persistence.Query;
... ... @@ -22,7 +23,7 @@ public class DocumentoDAO {
22 23 private EntityManager em;
23 24  
24 25 @SuppressWarnings("unchecked")
25   - public List<DocumentoResumido> getDocumentos(String interessado, String unidade, Integer pagina, Integer qtdRegistros){
  26 + public List<DocumentoResumido> getDocumentosV1(String interessado, String unidade, Integer pagina, Integer qtdRegistros){
26 27 HashMap<String, Object> parametros = new HashMap<String, Object>();
27 28  
28 29 StringBuilder builder = new StringBuilder("SELECT ");
... ... @@ -54,30 +55,103 @@ public class DocumentoDAO {
54 55 return query.getResultList();
55 56 }
56 57  
57   - public Long countDocumentos(String interessado, String unidade){
  58 + public List<DocumentoResumido> getDocumentos(String interessado, String codigoTipo, Integer pagina, Integer qtdRegistros, boolean somenteAssinados, boolean ordemCrescente,
  59 + boolean orderByProcesso){
58 60 HashMap<String, Object> parametros = new HashMap<String, Object>();
  61 +
  62 + StringBuilder builder = new StringBuilder("SELECT pr.protocolo_formatado_pesquisa numero, s.nome tipoNome, s.id_serie tipoCodigo, d.numero numeroInformado, ");
  63 + builder.append("CASE pr.sta_protocolo WHEN 'G' THEN 'GERADO' ELSE 'RECEBIDO' END origem, d.id_tipo_conferencia tipoConferencia, ");
  64 + builder.append("pr.dta_geracao dataGeracao, pr2.protocolo_formatado as processo, u.sigla as unidade, ");
  65 + builder.append("CASE WHEN a.id_assinatura is null THEN false ELSE true END assinado ");
  66 + builder.append("FROM documento AS d ");
  67 +
59 68  
60   - StringBuilder builder = new StringBuilder("SELECT ");
61   - builder.append("COUNT(*) ");
62   - builder.append("FROM participante p, protocolo pr, documento d, contato c, serie s, unidade u ");
63   - builder.append("WHERE p.id_contato = c.id_contato AND p.id_protocolo = pr.id_protocolo AND p.id_protocolo = d.id_documento ");
64   - builder.append("AND p.id_unidade = u.id_unidade AND d.id_serie = s.id_serie ");
  69 + if(somenteAssinados){
  70 + builder.append("RIGHT JOIN assinatura AS a ON d.id_documento = a.id_documento ");
  71 + }else{
  72 + builder.append("LEFT JOIN assinatura AS a ON d.id_documento = a.id_documento ");
  73 + }
  74 +
  75 + builder.append("JOIN participante p ON p.id_protocolo = d.id_documento ");
  76 + builder.append("JOIN protocolo AS pr ON pr.id_protocolo = d.id_documento ");
  77 + builder.append("JOIN protocolo AS pr2 ON pr2.id_protocolo = d.id_procedimento ");
  78 + builder.append("JOIN serie AS s ON d.id_serie = s.id_serie ");
  79 + builder.append("JOIN unidade AS u ON u.id_unidade = d.id_unidade_responsavel ");
  80 + builder.append("WHERE p.id_contato in (select c.id_contato from contato c where c.sigla = :interessado) ");
  81 + parametros.put("interessado", interessado);
65 82  
66   - if(StringUtils.isNotBlank(interessado)){
67   - builder.append("AND c.sigla = :interessado ");
68   - parametros.put("interessado", interessado);
  83 + if(StringUtils.isNotBlank(codigoTipo)){
  84 + builder.append("AND s.id_serie in (:codigoTipo)");
  85 + parametros.put("codigoTipo", codigoTipo);
  86 + }
  87 +
  88 + builder.append("GROUP BY numero ");
  89 +
  90 + if(orderByProcesso){
  91 + builder.append("ORDER BY processo ");
  92 + }else{
  93 + builder.append("ORDER BY pr.dta_geracao ");
  94 + }
  95 +
  96 + if(!ordemCrescente){
  97 + builder.append("DESC");
69 98 }
70 99  
71   - if(StringUtils.isNotBlank(unidade)){
72   - builder.append("AND u.sigla = :unidade ");
73   - parametros.put("unidade", unidade);
  100 + Query query = em.createNativeQuery(builder.toString(), "DocumentoResumidoMapping");
  101 +
  102 + setQueryParameters(query, parametros);
  103 +
  104 + setPaginacaoQuery(query, pagina, qtdRegistros);
  105 +
  106 + List<Object[]> results = query.getResultList();
  107 +
  108 + List<DocumentoResumido> documentos = new ArrayList<DocumentoResumido>();
  109 +
  110 + results.stream().forEach((record) -> {
  111 + DocumentoResumido documento = (DocumentoResumido) record[0];
  112 + documentos.add(documento);
  113 + });
  114 +
  115 + return documentos;
  116 + }
  117 +
  118 + public Long countDocumentos(String interessado, String codigoTipo, boolean somenteAssinados){
  119 + HashMap<String, Object> parametros = new HashMap<String, Object>();
  120 +
  121 + StringBuilder builder = new StringBuilder("SELECT count(*) ");
  122 + builder.append("FROM documento AS d ");
  123 +
  124 +
  125 + if(somenteAssinados){
  126 + builder.append("RIGHT JOIN assinatura AS a ON d.id_documento = a.id_documento ");
  127 + }else{
  128 + builder.append("LEFT JOIN assinatura AS a ON d.id_documento = a.id_documento ");
74 129 }
  130 +
  131 + builder.append("JOIN participante p ON p.id_protocolo = d.id_documento ");
  132 + builder.append("JOIN protocolo AS pr ON pr.id_protocolo = d.id_documento ");
  133 + builder.append("JOIN protocolo AS pr2 ON pr2.id_protocolo = d.id_procedimento ");
  134 + builder.append("JOIN serie AS s ON d.id_serie = s.id_serie ");
  135 + builder.append("JOIN unidade AS u ON u.id_unidade = d.id_unidade_responsavel ");
  136 + builder.append("WHERE p.id_contato in (select c.id_contato from contato c where c.sigla = :interessado) ");
  137 + parametros.put("interessado", interessado);
  138 +
  139 + if(StringUtils.isNotBlank(codigoTipo)){
  140 + builder.append("AND s.id_serie in (:codigoTipo)");
  141 + parametros.put("codigoTipo", codigoTipo);
  142 + }
  143 +
  144 + builder.append("GROUP BY pr.protocolo_formatado_pesquisa ");
75 145  
76 146 Query query = em.createNativeQuery(builder.toString());
77 147  
78 148 setQueryParameters(query, parametros);
79   -
80   - return Long.valueOf(query.getSingleResult().toString());
  149 +
  150 + try{
  151 + return Long.valueOf(query.getSingleResult().toString());
  152 + }catch(NoResultException ex){
  153 + return 0L;
  154 + }
81 155 }
82 156  
83 157 @SuppressWarnings("unchecked")
... ...
src/main/java/br/gov/ans/integracao/sei/rest/DocumentoResource.java
... ... @@ -503,7 +503,7 @@ public class DocumentoResource {
503 503 }
504 504  
505 505 /**
506   - * @api {get} /:interessado/documentos Consultar por interessados
  506 + * @api {get} interessados/:interessado/documentos Consultar por interessado
507 507 * @apiName consultarDocumentoInteressado
508 508 * @apiGroup Documento
509 509 * @apiVersion 2.0.0
... ... @@ -514,33 +514,47 @@ public class DocumentoResource {
514 514 *
515 515 * @apiParam (Path Parameters) {String} interessado Identificador do interessado
516 516 *
517   - * @apiParam (Query Parameters) {String} [unidade] Unidade da qual deseja filtrar os documentos
  517 + * @apiParam (Query Parameters) {String} [tipo] Tipo/Série do documento
  518 + * @apiParam (Query Parameters) {boolean} [somenteAssinados=false] Exibir somente documentos assinados
  519 + * @apiParam (Query Parameters) {boolean} [orderByProcesso=false] Ordenar pelo número do processo, por padrão o retorno é ordenado pela dataGeracao
  520 + * @apiParam (Query Parameters) {boolean} [crescente=false] Ordenar em ordem crescente
518 521 * @apiParam (Query Parameters) {String} [pagina=1] Número da página
519 522 * @apiParam (Query Parameters) {String} [qtdRegistros=50] Quantidade de registros retornados por página
520 523 *
521 524 * @apiExample Exemplo de requisição:
522   - * curl -i https://<host>/sei-broker/service/363022/documentos
  525 + * curl -i https://<host>/sei-broker/service/interessados/005711/documentos
523 526 *
524   - * @apiSuccess (Sucesso Response Body - 200) {List} documentos Lista com os documentos encontrados
525   - * @apiSuccess (Sucesso Response Body - 200) {DocumentoResumido} documentos.documentoResumido Resumo do documento encontrado no SEI
526   - * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.numero Número do documento
527   - * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.tipo Tipo do documento
528   - * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.processo Processo ao qual o documento pertence
529   - * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.unidade Unidade responsável pelo processo
530   - * @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
531   - * @apiSuccess (Sucesso Response Body - 200) {Data} documentos.documentoResumido.dataGeracao Data de geração do documento
  527 + * @apiSuccess (Sucesso Response Body - 200) {List} documentos Lista com os documentos encontrados.
  528 + * @apiSuccess (Sucesso Response Body - 200) {DocumentoResumido} documentos.documentoResumido Resumo do documento encontrado no SEI.
  529 + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.numero Número do documento.
  530 + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.numeroInformado Número informado na inclusão do documento, também conhecido como número de árvore.
  531 + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.unidade Unidade responsável pelo documento.
  532 + * @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.
  533 + * @apiSuccess (Sucesso Response Body - 200) {Data} documentos.documentoResumido.dataGeracao Data de geração do documento.
  534 + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.processo Processo onde o documento está incluído.
  535 + * @apiSuccess (Sucesso Response Body - 200) {Tipo} documentos.documentoResumido.tipo Objeto representando o tipo do documento.
  536 + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.tipo.codigo Identificados do tipo do documento, também conhecido como série.
  537 + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.tipo.nome Nome do tipo do documento.
  538 + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.tipoConferencia Tipo de conferência do documento.
  539 + * @apiSuccess (Sucesso Response Body - 200) {boolean} documentos.documentoResumido.assinado Boolean indicando se o documento foi assinado.
532 540 *
533 541 * @apiSuccess (Sucesso Response Header - 200) {header} total_registros Quantidade de registros que existem para essa consulta
534 542 *
535 543 * @apiSuccessExample {json} Success-Response:
536 544 * HTTP/1.1 200 OK
537 545 * {
538   - * "dataGeracao": "2015-08-25T00:00:00-03:00",
539   - * "numero": "0057646",
  546 + * "numero": "0670949",
  547 + * "numeroInformado": "594",
  548 + * "unidade": "COSAP",
540 549 * "origem": "RECEBIDO",
541   - * "processo": "33902.554351/2015-16",
542   - * "tipo": "Contrato",
543   - * "unidade": "COAI"
  550 + * "dataGeracao": "2015-08-10T00:00:00-03:00",
  551 + * "processo": "33910.000002/2017-41",
  552 + * "tipo": {
  553 + * "codigo": "629",
  554 + * "nome": "Relatório de Arquivamento-SIF"
  555 + * }
  556 + * "tipoConferencia": "4",
  557 + * "assinado": true
544 558 * }
545 559 *
546 560 * @apiErrorExample {json} Error-Response:
... ... @@ -551,16 +565,18 @@ public class DocumentoResource {
551 565 * }
552 566 */
553 567 @GET
554   - @Path("{interessado}/documentos")
  568 + @Path("interessados/{interessado}/documentos")
555 569 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
556   - public Response consultarDocumentos(@PathParam("interessado") String interessado, @QueryParam("unidade") String unidade, @QueryParam("pagina") String pagina,
557   - @QueryParam("qtdRegistros") String qtdRegistros) throws BusinessException{
  570 + public Response consultarDocumentos(@PathParam("interessado") String interessado, @QueryParam("tipo") String tipo, @QueryParam("pagina") String pagina,
  571 + @QueryParam("qtdRegistros") String qtdRegistros, @QueryParam("somenteAssinados") boolean somenteAssinados, @QueryParam("crescente") boolean ordemCrescente,
  572 + @QueryParam("orderByProcesso") boolean orderByProcesso) throws BusinessException{
558 573  
559   - List<DocumentoResumido> documentos = daoDocumento.getDocumentos(interessado, unidade, pagina == null? null:parseInt(pagina), qtdRegistros == null? null : parseInt(qtdRegistros));
  574 + List<DocumentoResumido> documentos = daoDocumento.getDocumentos(interessado, tipo, pagina == null? null:parseInt(pagina), qtdRegistros == null? null : parseInt(qtdRegistros),
  575 + somenteAssinados, ordemCrescente, orderByProcesso);
560 576  
561 577 GenericEntity<List<DocumentoResumido>> entity = new GenericEntity<List<DocumentoResumido>>(documentos){};
562 578  
563   - Long totalRegistros = daoDocumento.countDocumentos(interessado, unidade);
  579 + Long totalRegistros = daoDocumento.countDocumentos(interessado, tipo, somenteAssinados);
564 580  
565 581 return Response.ok().entity(entity)
566 582 .header("total_registros", totalRegistros).build();
... ...
src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java
... ... @@ -594,6 +594,20 @@ public class ProcessoResource {
594 594 *
595 595 * @apiSuccess (Sucesso Response Header - 200) {header} total_registros quantidade de registros que existem para essa consulta.
596 596 *
  597 + * @apiSuccessExample {json} Success-Response:
  598 + * HTTP/1.1 200 OK
  599 + * {
  600 + * "numero": "33910007118201710",
  601 + * "numeroFormatado": "33910.007118/2017-10",
  602 + * "descricao": "D:2237021 - SUL AMÉRICA SEGURO SAÚDE S/A",
  603 + * "unidade": "NÚCLEO-RJ",
  604 + * "dataGeracao": "2017-10-09T03:00:00.000+0000",
  605 + * "tipo": {
  606 + * "codigo": "100000882",
  607 + * "nome": "Fiscalização: Sancionador"
  608 + * }
  609 + * }
  610 + *
597 611 * @apiErrorExample {json} Error-Response:
598 612 * HTTP/1.1 500 Internal Server Error
599 613 * {
... ... @@ -1147,24 +1161,29 @@ public class ProcessoResource {
1147 1161 *
1148 1162 * @apiSuccess (Sucesso Response Body - 200) {List} documentos Lista com os documentos encontrados.
1149 1163 * @apiSuccess (Sucesso Response Body - 200) {DocumentoResumido} documentos.documentoResumido Resumo do documento encontrado no SEI.
1150   - * @apiSuccess (Sucesso Response Body - 200) {boolean} documentos.documentoResumido.assinado Boolean indicando se o documento foi assinado.
1151   - * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.codigoTipo Identificador do tipo do documento.
1152   - * @apiSuccess (Sucesso Response Body - 200) {Data} documentos.documentoResumido.dataGeracao Data de geração do documento.
1153 1164 * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.numero Número do documento.
  1165 + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.numeroInformado Número informado na inclusão do documento, também conhecido como número de árvore.
1154 1166 * @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.
1155   - * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.tipo Tipo do documento.
  1167 + * @apiSuccess (Sucesso Response Body - 200) {Data} documentos.documentoResumido.dataGeracao Data de geração do documento.
  1168 + * @apiSuccess (Sucesso Response Body - 200) {Tipo} documentos.documentoResumido.tipo Objeto representando o tipo do documento.
  1169 + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.tipo.codigo Identificados do tipo do documento, também conhecido como série.
  1170 + * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.tipo.nome Nome do tipo do documento.
1156 1171 * @apiSuccess (Sucesso Response Body - 200) {String} documentos.documentoResumido.tipoConferencia Tipo de conferência do documento.
  1172 + * @apiSuccess (Sucesso Response Body - 200) {boolean} documentos.documentoResumido.assinado Boolean indicando se o documento foi assinado.
1157 1173 *
1158 1174 * @apiSuccessExample {json} Success-Response:
1159 1175 * HTTP/1.1 200 OK
1160 1176 * {
1161   - * "assinado": true,
1162   - * "codigoTipo": "5",
1163   - * "dataGeracao": "2015-08-10T00:00:00-03:00",
1164 1177 * "numero": "0670949",
  1178 + * "numeroInformado": "594",
1165 1179 * "origem": "RECEBIDO",
1166   - * "tipo": "Despacho"
  1180 + * "dataGeracao": "2015-08-10T00:00:00-03:00",
  1181 + * "tipo": {
  1182 + * "codigo": "629",
  1183 + * "nome": "Relatório de Arquivamento-SIF"
  1184 + * }
1167 1185 * "tipoConferencia": "4",
  1186 + * "assinado": true
1168 1187 * }
1169 1188 *
1170 1189 * @apiErrorExample {json} Error-Response:
... ...
src/main/webapp/api-docs/api_data.js
... ... @@ -3066,8 +3066,8 @@ define({ &quot;api&quot;: [
3066 3066 },
3067 3067 {
3068 3068 "type": "get",
3069   - "url": "/:interessado/documentos",
3070   - "title": "Consultar por interessados",
  3069 + "url": "interessados/:interessado/documentos",
  3070 + "title": "Consultar por interessado",
3071 3071 "name": "consultarDocumentoInteressado",
3072 3072 "group": "Documento",
3073 3073 "version": "2.0.0",
... ... @@ -3093,8 +3093,32 @@ define({ &quot;api&quot;: [
3093 3093 "group": "Query Parameters",
3094 3094 "type": "String",
3095 3095 "optional": true,
3096   - "field": "unidade",
3097   - "description": "<p>Unidade da qual deseja filtrar os documentos</p>"
  3096 + "field": "tipo",
  3097 + "description": "<p>Tipo/Série do documento</p>"
  3098 + },
  3099 + {
  3100 + "group": "Query Parameters",
  3101 + "type": "boolean",
  3102 + "optional": true,
  3103 + "field": "somenteAssinados",
  3104 + "defaultValue": "false",
  3105 + "description": "<p>Exibir somente documentos assinados</p>"
  3106 + },
  3107 + {
  3108 + "group": "Query Parameters",
  3109 + "type": "boolean",
  3110 + "optional": true,
  3111 + "field": "orderByProcesso",
  3112 + "defaultValue": "false",
  3113 + "description": "<p>Ordenar pelo número do processo, por padrão o retorno é ordenado pela dataGeracao</p>"
  3114 + },
  3115 + {
  3116 + "group": "Query Parameters",
  3117 + "type": "boolean",
  3118 + "optional": true,
  3119 + "field": "crescente",
  3120 + "defaultValue": "false",
  3121 + "description": "<p>Ordenar em ordem crescente</p>"
3098 3122 },
3099 3123 {
3100 3124 "group": "Query Parameters",
... ... @@ -3118,7 +3142,7 @@ define({ &quot;api&quot;: [
3118 3142 "examples": [
3119 3143 {
3120 3144 "title": "Exemplo de requisição:\t",
3121   - "content": "curl -i https://<host>/sei-broker/service/363022/documentos",
  3145 + "content": "curl -i https://<host>/sei-broker/service/interessados/005711/documentos",
3122 3146 "type": "json"
3123 3147 }
3124 3148 ],
... ... @@ -3130,42 +3154,35 @@ define({ &quot;api&quot;: [
3130 3154 "type": "List",
3131 3155 "optional": false,
3132 3156 "field": "documentos",
3133   - "description": "<p>Lista com os documentos encontrados</p>"
  3157 + "description": "<p>Lista com os documentos encontrados.</p>"
3134 3158 },
3135 3159 {
3136 3160 "group": "Sucesso Response Body - 200",
3137 3161 "type": "DocumentoResumido",
3138 3162 "optional": false,
3139 3163 "field": "documentos.documentoResumido",
3140   - "description": "<p>Resumo do documento encontrado no SEI</p>"
  3164 + "description": "<p>Resumo do documento encontrado no SEI.</p>"
3141 3165 },
3142 3166 {
3143 3167 "group": "Sucesso Response Body - 200",
3144 3168 "type": "String",
3145 3169 "optional": false,
3146 3170 "field": "documentos.documentoResumido.numero",
3147   - "description": "<p>Número do documento</p>"
3148   - },
3149   - {
3150   - "group": "Sucesso Response Body - 200",
3151   - "type": "String",
3152   - "optional": false,
3153   - "field": "documentos.documentoResumido.tipo",
3154   - "description": "<p>Tipo do documento</p>"
  3171 + "description": "<p>Número do documento.</p>"
3155 3172 },
3156 3173 {
3157 3174 "group": "Sucesso Response Body - 200",
3158 3175 "type": "String",
3159 3176 "optional": false,
3160   - "field": "documentos.documentoResumido.processo",
3161   - "description": "<p>Processo ao qual o documento pertence</p>"
  3177 + "field": "documentos.documentoResumido.numeroInformado",
  3178 + "description": "<p>Número informado na inclusão do documento, também conhecido como número de árvore.</p>"
3162 3179 },
3163 3180 {
3164 3181 "group": "Sucesso Response Body - 200",
3165 3182 "type": "String",
3166 3183 "optional": false,
3167 3184 "field": "documentos.documentoResumido.unidade",
3168   - "description": "<p>Unidade responsável pelo processo</p>"
  3185 + "description": "<p>Unidade responsável pelo documento.</p>"
3169 3186 },
3170 3187 {
3171 3188 "group": "Sucesso Response Body - 200",
... ... @@ -3176,14 +3193,56 @@ define({ &quot;api&quot;: [
3176 3193 ],
3177 3194 "optional": false,
3178 3195 "field": "documentos.documentoResumido.origem",
3179   - "description": "<p>Origem do documento, se o mesmo é um documento &quot;GERADO&quot; internamente ou &quot;RECEBIDO&quot; de uma fonte externa</p>"
  3196 + "description": "<p>Origem do documento, se o mesmo é um documento &quot;GERADO&quot; internamente ou &quot;RECEBIDO&quot; de uma fonte externa.</p>"
3180 3197 },
3181 3198 {
3182 3199 "group": "Sucesso Response Body - 200",
3183 3200 "type": "Data",
3184 3201 "optional": false,
3185 3202 "field": "documentos.documentoResumido.dataGeracao",
3186   - "description": "<p>Data de geração do documento</p>"
  3203 + "description": "<p>Data de geração do documento.</p>"
  3204 + },
  3205 + {
  3206 + "group": "Sucesso Response Body - 200",
  3207 + "type": "String",
  3208 + "optional": false,
  3209 + "field": "documentos.documentoResumido.processo",
  3210 + "description": "<p>Processo onde o documento está incluído.</p>"
  3211 + },
  3212 + {
  3213 + "group": "Sucesso Response Body - 200",
  3214 + "type": "Tipo",
  3215 + "optional": false,
  3216 + "field": "documentos.documentoResumido.tipo",
  3217 + "description": "<p>Objeto representando o tipo do documento.</p>"
  3218 + },
  3219 + {
  3220 + "group": "Sucesso Response Body - 200",
  3221 + "type": "String",
  3222 + "optional": false,
  3223 + "field": "documentos.documentoResumido.tipo.codigo",
  3224 + "description": "<p>Identificados do tipo do documento, também conhecido como série.</p>"
  3225 + },
  3226 + {
  3227 + "group": "Sucesso Response Body - 200",
  3228 + "type": "String",
  3229 + "optional": false,
  3230 + "field": "documentos.documentoResumido.tipo.nome",
  3231 + "description": "<p>Nome do tipo do documento.</p>"
  3232 + },
  3233 + {
  3234 + "group": "Sucesso Response Body - 200",
  3235 + "type": "String",
  3236 + "optional": false,
  3237 + "field": "documentos.documentoResumido.tipoConferencia",
  3238 + "description": "<p>Tipo de conferência do documento.</p>"
  3239 + },
  3240 + {
  3241 + "group": "Sucesso Response Body - 200",
  3242 + "type": "boolean",
  3243 + "optional": false,
  3244 + "field": "documentos.documentoResumido.assinado",
  3245 + "description": "<p>Boolean indicando se o documento foi assinado.</p>"
3187 3246 }
3188 3247 ],
3189 3248 "Sucesso Response Header - 200": [
... ... @@ -3199,7 +3258,7 @@ define({ &quot;api&quot;: [
3199 3258 "examples": [
3200 3259 {
3201 3260 "title": "Success-Response:",
3202   - "content": "HTTP/1.1 200 OK\n{\n \"dataGeracao\": \"2015-08-25T00:00:00-03:00\",\n \"numero\": \"0057646\",\n \"origem\": \"RECEBIDO\",\n \"processo\": \"33902.554351/2015-16\",\n \"tipo\": \"Contrato\",\n \"unidade\": \"COAI\"\n}",
  3261 + "content": "HTTP/1.1 200 OK\n{\n \"numero\": \"0670949\",\n \"numeroInformado\": \"594\",\n \"unidade\": \"COSAP\",\n \"origem\": \"RECEBIDO\",\n \"dataGeracao\": \"2015-08-10T00:00:00-03:00\",\n \"processo\": \"33910.000002/2017-41\",\n \"tipo\": {\n \t\"codigo\": \"629\",\n \t\"nome\": \"Relatório de Arquivamento-SIF\"\n }\n \"tipoConferencia\": \"4\",\n \"assinado\": true\n}",
3203 3262 "type": "json"
3204 3263 }
3205 3264 ]
... ... @@ -6364,7 +6423,14 @@ define({ &quot;api&quot;: [
6364 6423 "description": "<p>quantidade de registros que existem para essa consulta.</p>"
6365 6424 }
6366 6425 ]
6367   - }
  6426 + },
  6427 + "examples": [
  6428 + {
  6429 + "title": "Success-Response:",
  6430 + "content": "HTTP/1.1 200 OK\n{\n \"numero\": \"33910007118201710\",\n \"numeroFormatado\": \"33910.007118/2017-10\",\n \"descricao\": \"D:2237021 - SUL AMÉRICA SEGURO SAÚDE S/A\",\n \"unidade\": \"NÚCLEO-RJ\",\n \"dataGeracao\": \"2017-10-09T03:00:00.000+0000\",\n \"tipo\": {\n \t\"codigo\": \"100000882\",\n \t\"nome\": \"Fiscalização: Sancionador\"\n }\n}",
  6431 + "type": "json"
  6432 + }
  6433 + ]
6368 6434 },
6369 6435 "error": {
6370 6436 "examples": [
... ... @@ -7230,17 +7296,28 @@ define({ &quot;api&quot;: [
7230 7296 },
7231 7297 {
7232 7298 "group": "Sucesso Response Body - 200",
7233   - "type": "boolean",
  7299 + "type": "String",
7234 7300 "optional": false,
7235   - "field": "documentos.documentoResumido.assinado",
7236   - "description": "<p>Boolean indicando se o documento foi assinado.</p>"
  7301 + "field": "documentos.documentoResumido.numero",
  7302 + "description": "<p>Número do documento.</p>"
  7303 + },
  7304 + {
  7305 + "group": "Sucesso Response Body - 200",
  7306 + "type": "String",
  7307 + "optional": false,
  7308 + "field": "documentos.documentoResumido.numeroInformado",
  7309 + "description": "<p>Número informado na inclusão do documento, também conhecido como número de árvore.</p>"
7237 7310 },
7238 7311 {
7239 7312 "group": "Sucesso Response Body - 200",
7240 7313 "type": "String",
  7314 + "allowedValues": [
  7315 + "\"GERADO\"",
  7316 + "\"RECEBIDO\""
  7317 + ],
7241 7318 "optional": false,
7242   - "field": "documentos.documentoResumido.codigoTipo",
7243   - "description": "<p>Identificador do tipo do documento.</p>"
  7319 + "field": "documentos.documentoResumido.origem",
  7320 + "description": "<p>Origem do documento, se o mesmo é um documento &quot;GERADO&quot; internamente ou &quot;RECEBIDO&quot; de uma fonte externa.</p>"
7244 7321 },
7245 7322 {
7246 7323 "group": "Sucesso Response Body - 200",
... ... @@ -7251,28 +7328,24 @@ define({ &quot;api&quot;: [
7251 7328 },
7252 7329 {
7253 7330 "group": "Sucesso Response Body - 200",
7254   - "type": "String",
  7331 + "type": "Tipo",
7255 7332 "optional": false,
7256   - "field": "documentos.documentoResumido.numero",
7257   - "description": "<p>Número do documento.</p>"
  7333 + "field": "documentos.documentoResumido.tipo",
  7334 + "description": "<p>Objeto representando o tipo do documento.</p>"
7258 7335 },
7259 7336 {
7260 7337 "group": "Sucesso Response Body - 200",
7261 7338 "type": "String",
7262   - "allowedValues": [
7263   - "\"GERADO\"",
7264   - "\"RECEBIDO\""
7265   - ],
7266 7339 "optional": false,
7267   - "field": "documentos.documentoResumido.origem",
7268   - "description": "<p>Origem do documento, se o mesmo é um documento &quot;GERADO&quot; internamente ou &quot;RECEBIDO&quot; de uma fonte externa.</p>"
  7340 + "field": "documentos.documentoResumido.tipo.codigo",
  7341 + "description": "<p>Identificados do tipo do documento, também conhecido como série.</p>"
7269 7342 },
7270 7343 {
7271 7344 "group": "Sucesso Response Body - 200",
7272 7345 "type": "String",
7273 7346 "optional": false,
7274   - "field": "documentos.documentoResumido.tipo",
7275   - "description": "<p>Tipo do documento.</p>"
  7347 + "field": "documentos.documentoResumido.tipo.nome",
  7348 + "description": "<p>Nome do tipo do documento.</p>"
7276 7349 },
7277 7350 {
7278 7351 "group": "Sucesso Response Body - 200",
... ... @@ -7280,13 +7353,20 @@ define({ &quot;api&quot;: [
7280 7353 "optional": false,
7281 7354 "field": "documentos.documentoResumido.tipoConferencia",
7282 7355 "description": "<p>Tipo de conferência do documento.</p>"
  7356 + },
  7357 + {
  7358 + "group": "Sucesso Response Body - 200",
  7359 + "type": "boolean",
  7360 + "optional": false,
  7361 + "field": "documentos.documentoResumido.assinado",
  7362 + "description": "<p>Boolean indicando se o documento foi assinado.</p>"
7283 7363 }
7284 7364 ]
7285 7365 },
7286 7366 "examples": [
7287 7367 {
7288 7368 "title": "Success-Response:",
7289   - "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}",
  7369 + "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}",
7290 7370 "type": "json"
7291 7371 }
7292 7372 ]
... ...
src/main/webapp/api-docs/api_data.json
... ... @@ -3066,8 +3066,8 @@
3066 3066 },
3067 3067 {
3068 3068 "type": "get",
3069   - "url": "/:interessado/documentos",
3070   - "title": "Consultar por interessados",
  3069 + "url": "interessados/:interessado/documentos",
  3070 + "title": "Consultar por interessado",
3071 3071 "name": "consultarDocumentoInteressado",
3072 3072 "group": "Documento",
3073 3073 "version": "2.0.0",
... ... @@ -3093,8 +3093,32 @@
3093 3093 "group": "Query Parameters",
3094 3094 "type": "String",
3095 3095 "optional": true,
3096   - "field": "unidade",
3097   - "description": "<p>Unidade da qual deseja filtrar os documentos</p>"
  3096 + "field": "tipo",
  3097 + "description": "<p>Tipo/Série do documento</p>"
  3098 + },
  3099 + {
  3100 + "group": "Query Parameters",
  3101 + "type": "boolean",
  3102 + "optional": true,
  3103 + "field": "somenteAssinados",
  3104 + "defaultValue": "false",
  3105 + "description": "<p>Exibir somente documentos assinados</p>"
  3106 + },
  3107 + {
  3108 + "group": "Query Parameters",
  3109 + "type": "boolean",
  3110 + "optional": true,
  3111 + "field": "orderByProcesso",
  3112 + "defaultValue": "false",
  3113 + "description": "<p>Ordenar pelo número do processo, por padrão o retorno é ordenado pela dataGeracao</p>"
  3114 + },
  3115 + {
  3116 + "group": "Query Parameters",
  3117 + "type": "boolean",
  3118 + "optional": true,
  3119 + "field": "crescente",
  3120 + "defaultValue": "false",
  3121 + "description": "<p>Ordenar em ordem crescente</p>"
3098 3122 },
3099 3123 {
3100 3124 "group": "Query Parameters",
... ... @@ -3118,7 +3142,7 @@
3118 3142 "examples": [
3119 3143 {
3120 3144 "title": "Exemplo de requisição:\t",
3121   - "content": "curl -i https://<host>/sei-broker/service/363022/documentos",
  3145 + "content": "curl -i https://<host>/sei-broker/service/interessados/005711/documentos",
3122 3146 "type": "json"
3123 3147 }
3124 3148 ],
... ... @@ -3130,42 +3154,35 @@
3130 3154 "type": "List",
3131 3155 "optional": false,
3132 3156 "field": "documentos",
3133   - "description": "<p>Lista com os documentos encontrados</p>"
  3157 + "description": "<p>Lista com os documentos encontrados.</p>"
3134 3158 },
3135 3159 {
3136 3160 "group": "Sucesso Response Body - 200",
3137 3161 "type": "DocumentoResumido",
3138 3162 "optional": false,
3139 3163 "field": "documentos.documentoResumido",
3140   - "description": "<p>Resumo do documento encontrado no SEI</p>"
  3164 + "description": "<p>Resumo do documento encontrado no SEI.</p>"
3141 3165 },
3142 3166 {
3143 3167 "group": "Sucesso Response Body - 200",
3144 3168 "type": "String",
3145 3169 "optional": false,
3146 3170 "field": "documentos.documentoResumido.numero",
3147   - "description": "<p>Número do documento</p>"
3148   - },
3149   - {
3150   - "group": "Sucesso Response Body - 200",
3151   - "type": "String",
3152   - "optional": false,
3153   - "field": "documentos.documentoResumido.tipo",
3154   - "description": "<p>Tipo do documento</p>"
  3171 + "description": "<p>Número do documento.</p>"
3155 3172 },
3156 3173 {
3157 3174 "group": "Sucesso Response Body - 200",
3158 3175 "type": "String",
3159 3176 "optional": false,
3160   - "field": "documentos.documentoResumido.processo",
3161   - "description": "<p>Processo ao qual o documento pertence</p>"
  3177 + "field": "documentos.documentoResumido.numeroInformado",
  3178 + "description": "<p>Número informado na inclusão do documento, também conhecido como número de árvore.</p>"
3162 3179 },
3163 3180 {
3164 3181 "group": "Sucesso Response Body - 200",
3165 3182 "type": "String",
3166 3183 "optional": false,
3167 3184 "field": "documentos.documentoResumido.unidade",
3168   - "description": "<p>Unidade responsável pelo processo</p>"
  3185 + "description": "<p>Unidade responsável pelo documento.</p>"
3169 3186 },
3170 3187 {
3171 3188 "group": "Sucesso Response Body - 200",
... ... @@ -3176,14 +3193,56 @@
3176 3193 ],
3177 3194 "optional": false,
3178 3195 "field": "documentos.documentoResumido.origem",
3179   - "description": "<p>Origem do documento, se o mesmo é um documento &quot;GERADO&quot; internamente ou &quot;RECEBIDO&quot; de uma fonte externa</p>"
  3196 + "description": "<p>Origem do documento, se o mesmo é um documento &quot;GERADO&quot; internamente ou &quot;RECEBIDO&quot; de uma fonte externa.</p>"
3180 3197 },
3181 3198 {
3182 3199 "group": "Sucesso Response Body - 200",
3183 3200 "type": "Data",
3184 3201 "optional": false,
3185 3202 "field": "documentos.documentoResumido.dataGeracao",
3186   - "description": "<p>Data de geração do documento</p>"
  3203 + "description": "<p>Data de geração do documento.</p>"
  3204 + },
  3205 + {
  3206 + "group": "Sucesso Response Body - 200",
  3207 + "type": "String",
  3208 + "optional": false,
  3209 + "field": "documentos.documentoResumido.processo",
  3210 + "description": "<p>Processo onde o documento está incluído.</p>"
  3211 + },
  3212 + {
  3213 + "group": "Sucesso Response Body - 200",
  3214 + "type": "Tipo",
  3215 + "optional": false,
  3216 + "field": "documentos.documentoResumido.tipo",
  3217 + "description": "<p>Objeto representando o tipo do documento.</p>"
  3218 + },
  3219 + {
  3220 + "group": "Sucesso Response Body - 200",
  3221 + "type": "String",
  3222 + "optional": false,
  3223 + "field": "documentos.documentoResumido.tipo.codigo",
  3224 + "description": "<p>Identificados do tipo do documento, também conhecido como série.</p>"
  3225 + },
  3226 + {
  3227 + "group": "Sucesso Response Body - 200",
  3228 + "type": "String",
  3229 + "optional": false,
  3230 + "field": "documentos.documentoResumido.tipo.nome",
  3231 + "description": "<p>Nome do tipo do documento.</p>"
  3232 + },
  3233 + {
  3234 + "group": "Sucesso Response Body - 200",
  3235 + "type": "String",
  3236 + "optional": false,
  3237 + "field": "documentos.documentoResumido.tipoConferencia",
  3238 + "description": "<p>Tipo de conferência do documento.</p>"
  3239 + },
  3240 + {
  3241 + "group": "Sucesso Response Body - 200",
  3242 + "type": "boolean",
  3243 + "optional": false,
  3244 + "field": "documentos.documentoResumido.assinado",
  3245 + "description": "<p>Boolean indicando se o documento foi assinado.</p>"
3187 3246 }
3188 3247 ],
3189 3248 "Sucesso Response Header - 200": [
... ... @@ -3199,7 +3258,7 @@
3199 3258 "examples": [
3200 3259 {
3201 3260 "title": "Success-Response:",
3202   - "content": "HTTP/1.1 200 OK\n{\n \"dataGeracao\": \"2015-08-25T00:00:00-03:00\",\n \"numero\": \"0057646\",\n \"origem\": \"RECEBIDO\",\n \"processo\": \"33902.554351/2015-16\",\n \"tipo\": \"Contrato\",\n \"unidade\": \"COAI\"\n}",
  3261 + "content": "HTTP/1.1 200 OK\n{\n \"numero\": \"0670949\",\n \"numeroInformado\": \"594\",\n \"unidade\": \"COSAP\",\n \"origem\": \"RECEBIDO\",\n \"dataGeracao\": \"2015-08-10T00:00:00-03:00\",\n \"processo\": \"33910.000002/2017-41\",\n \"tipo\": {\n \t\"codigo\": \"629\",\n \t\"nome\": \"Relatório de Arquivamento-SIF\"\n }\n \"tipoConferencia\": \"4\",\n \"assinado\": true\n}",
3203 3262 "type": "json"
3204 3263 }
3205 3264 ]
... ... @@ -6364,7 +6423,14 @@
6364 6423 "description": "<p>quantidade de registros que existem para essa consulta.</p>"
6365 6424 }
6366 6425 ]
6367   - }
  6426 + },
  6427 + "examples": [
  6428 + {
  6429 + "title": "Success-Response:",
  6430 + "content": "HTTP/1.1 200 OK\n{\n \"numero\": \"33910007118201710\",\n \"numeroFormatado\": \"33910.007118/2017-10\",\n \"descricao\": \"D:2237021 - SUL AMÉRICA SEGURO SAÚDE S/A\",\n \"unidade\": \"NÚCLEO-RJ\",\n \"dataGeracao\": \"2017-10-09T03:00:00.000+0000\",\n \"tipo\": {\n \t\"codigo\": \"100000882\",\n \t\"nome\": \"Fiscalização: Sancionador\"\n }\n}",
  6431 + "type": "json"
  6432 + }
  6433 + ]
6368 6434 },
6369 6435 "error": {
6370 6436 "examples": [
... ... @@ -7230,17 +7296,28 @@
7230 7296 },
7231 7297 {
7232 7298 "group": "Sucesso Response Body - 200",
7233   - "type": "boolean",
  7299 + "type": "String",
7234 7300 "optional": false,
7235   - "field": "documentos.documentoResumido.assinado",
7236   - "description": "<p>Boolean indicando se o documento foi assinado.</p>"
  7301 + "field": "documentos.documentoResumido.numero",
  7302 + "description": "<p>Número do documento.</p>"
  7303 + },
  7304 + {
  7305 + "group": "Sucesso Response Body - 200",
  7306 + "type": "String",
  7307 + "optional": false,
  7308 + "field": "documentos.documentoResumido.numeroInformado",
  7309 + "description": "<p>Número informado na inclusão do documento, também conhecido como número de árvore.</p>"
7237 7310 },
7238 7311 {
7239 7312 "group": "Sucesso Response Body - 200",
7240 7313 "type": "String",
  7314 + "allowedValues": [
  7315 + "\"GERADO\"",
  7316 + "\"RECEBIDO\""
  7317 + ],
7241 7318 "optional": false,
7242   - "field": "documentos.documentoResumido.codigoTipo",
7243   - "description": "<p>Identificador do tipo do documento.</p>"
  7319 + "field": "documentos.documentoResumido.origem",
  7320 + "description": "<p>Origem do documento, se o mesmo é um documento &quot;GERADO&quot; internamente ou &quot;RECEBIDO&quot; de uma fonte externa.</p>"
7244 7321 },
7245 7322 {
7246 7323 "group": "Sucesso Response Body - 200",
... ... @@ -7251,28 +7328,24 @@
7251 7328 },
7252 7329 {
7253 7330 "group": "Sucesso Response Body - 200",
7254   - "type": "String",
  7331 + "type": "Tipo",
7255 7332 "optional": false,
7256   - "field": "documentos.documentoResumido.numero",
7257   - "description": "<p>Número do documento.</p>"
  7333 + "field": "documentos.documentoResumido.tipo",
  7334 + "description": "<p>Objeto representando o tipo do documento.</p>"
7258 7335 },
7259 7336 {
7260 7337 "group": "Sucesso Response Body - 200",
7261 7338 "type": "String",
7262   - "allowedValues": [
7263   - "\"GERADO\"",
7264   - "\"RECEBIDO\""
7265   - ],
7266 7339 "optional": false,
7267   - "field": "documentos.documentoResumido.origem",
7268   - "description": "<p>Origem do documento, se o mesmo é um documento &quot;GERADO&quot; internamente ou &quot;RECEBIDO&quot; de uma fonte externa.</p>"
  7340 + "field": "documentos.documentoResumido.tipo.codigo",
  7341 + "description": "<p>Identificados do tipo do documento, também conhecido como série.</p>"
7269 7342 },
7270 7343 {
7271 7344 "group": "Sucesso Response Body - 200",
7272 7345 "type": "String",
7273 7346 "optional": false,
7274   - "field": "documentos.documentoResumido.tipo",
7275   - "description": "<p>Tipo do documento.</p>"
  7347 + "field": "documentos.documentoResumido.tipo.nome",
  7348 + "description": "<p>Nome do tipo do documento.</p>"
7276 7349 },
7277 7350 {
7278 7351 "group": "Sucesso Response Body - 200",
... ... @@ -7280,13 +7353,20 @@
7280 7353 "optional": false,
7281 7354 "field": "documentos.documentoResumido.tipoConferencia",
7282 7355 "description": "<p>Tipo de conferência do documento.</p>"
  7356 + },
  7357 + {
  7358 + "group": "Sucesso Response Body - 200",
  7359 + "type": "boolean",
  7360 + "optional": false,
  7361 + "field": "documentos.documentoResumido.assinado",
  7362 + "description": "<p>Boolean indicando se o documento foi assinado.</p>"
7283 7363 }
7284 7364 ]
7285 7365 },
7286 7366 "examples": [
7287 7367 {
7288 7368 "title": "Success-Response:",
7289   - "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}",
  7369 + "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}",
7290 7370 "type": "json"
7291 7371 }
7292 7372 ]
... ...
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-09T13:37:15.818Z",
  11 + "time": "2017-10-10T15:21:17.201Z",
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-09T13:37:15.818Z",
  11 + "time": "2017-10-10T15:21:17.201Z",
12 12 "url": "http://apidocjs.com",
13 13 "version": "0.15.1"
14 14 }
... ...