Commit 70fa9b9b752f22f47bc3f23f27f340db89e9e3eb
1 parent
9b21da0e
Exists in
master
and in
1 other branch
Manutenção para evitar a importação de processos em tramite do SIPAR.
Showing
8 changed files
with
57 additions
and
13 deletions
Show diff stats
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.3.2</version> | |
| 7 | + <version>2.4</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
| ... | ... | @@ -16,7 +16,6 @@ import javax.persistence.Query; |
| 16 | 16 | import org.apache.commons.lang3.StringUtils; |
| 17 | 17 | |
| 18 | 18 | import br.gov.ans.integracao.sei.modelo.DocumentoResumido; |
| 19 | -import br.gov.ans.integracao.sei.modelo.ProcessoResumido; | |
| 20 | 19 | |
| 21 | 20 | public class DocumentoDAO { |
| 22 | 21 | @PersistenceContext(unitName = "sei_pu", type = PersistenceContextType.EXTENDED) |
| ... | ... | @@ -201,8 +200,7 @@ public class DocumentoDAO { |
| 201 | 200 | results.stream().forEach((record) -> { |
| 202 | 201 | DocumentoResumido documento = (DocumentoResumido) record[0]; |
| 203 | 202 | documentos.add(documento); |
| 204 | - }); | |
| 205 | - | |
| 203 | + }); | |
| 206 | 204 | }catch(NoResultException ex){ |
| 207 | 205 | return documentos; |
| 208 | 206 | } | ... | ... |
src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java
| 1 | 1 | package br.gov.ans.integracao.sei.dao; |
| 2 | 2 | |
| 3 | +import java.math.BigDecimal; | |
| 3 | 4 | import java.util.HashMap; |
| 4 | 5 | import java.util.List; |
| 5 | 6 | import java.util.Map; |
| 6 | 7 | |
| 7 | -import javax.ejb.Stateless; | |
| 8 | +import javax.ejb.Stateful; | |
| 8 | 9 | import javax.inject.Inject; |
| 10 | +import javax.persistence.EntityManager; | |
| 11 | +import javax.persistence.PersistenceContext; | |
| 12 | +import javax.persistence.PersistenceContextType; | |
| 13 | +import javax.persistence.Query; | |
| 9 | 14 | |
| 10 | 15 | import br.gov.ans.dao.DAO; |
| 11 | 16 | import br.gov.ans.integracao.sipar.dao.ControleMigracao; |
| 12 | 17 | import br.gov.ans.integracao.sipar.dao.ControleMigracaoId; |
| 13 | 18 | import br.gov.ans.integracao.sipar.dao.DocumentoSipar; |
| 14 | 19 | |
| 15 | -@Stateless | |
| 20 | +@Stateful | |
| 16 | 21 | public class SiparDAO { |
| 17 | 22 | |
| 23 | + @PersistenceContext(unitName = "sei_broker_pu", type = PersistenceContextType.EXTENDED) | |
| 24 | + private EntityManager em; | |
| 25 | + | |
| 18 | 26 | @SuppressWarnings("cdi-ambiguous-dependency") |
| 19 | 27 | @Inject |
| 20 | 28 | private DAO<DocumentoSipar> daoDocumento; |
| ... | ... | @@ -42,6 +50,26 @@ public class SiparDAO { |
| 42 | 50 | return daoMigracao.findById(id); |
| 43 | 51 | } |
| 44 | 52 | |
| 53 | + public boolean isProcessoEmTramitacao(String numero, String ano){ | |
| 54 | + | |
| 55 | + String sql = "SELECT count(*) FROM DBPSIPAR.TB_TRAMITACAO TR " | |
| 56 | + + "WHERE " | |
| 57 | + + "TR.DT_RECEBIMENTO IS NULL " | |
| 58 | + + "AND TR.CO_DOCUMENTO = :numero " | |
| 59 | + + "AND TR.NU_ANO_DOCUMENTO = :ano "; | |
| 60 | + | |
| 61 | + Query query = em.createNativeQuery(sql); | |
| 62 | + query.setParameter("numero", numero); | |
| 63 | + query.setParameter("ano", ano); | |
| 64 | + | |
| 65 | + Long count = ((BigDecimal) query.getSingleResult()).longValue(); | |
| 66 | + | |
| 67 | + if(count > 0L){ | |
| 68 | + return true; | |
| 69 | + } | |
| 70 | + return false; | |
| 71 | + } | |
| 72 | + | |
| 45 | 73 | public void merge(ControleMigracao controleMigracao){ |
| 46 | 74 | daoMigracao.merge(controleMigracao); |
| 47 | 75 | } | ... | ... |
src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java
| ... | ... | @@ -47,8 +47,8 @@ import br.gov.ans.integracao.sei.client.RetornoGeracaoProcedimento; |
| 47 | 47 | import br.gov.ans.integracao.sei.client.SeiPortTypeProxy; |
| 48 | 48 | import br.gov.ans.integracao.sei.client.TipoProcedimento; |
| 49 | 49 | import br.gov.ans.integracao.sei.dao.DocumentoDAO; |
| 50 | -import br.gov.ans.integracao.sei.dao.SiparDAO; | |
| 51 | 50 | import br.gov.ans.integracao.sei.dao.ProcessoDAO; |
| 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 | 54 | import br.gov.ans.integracao.sei.modelo.Motivo; |
| ... | ... | @@ -1210,7 +1210,7 @@ public class ProcessoResource { |
| 1210 | 1210 | List<DocumentoResumido> documentosProcesso = documentoDAO.getDocumentosProcesso(idProcedimento.toString(), tipo, origem, somenteAssinados); |
| 1211 | 1211 | |
| 1212 | 1212 | if(documentosProcesso.isEmpty()){ |
| 1213 | - throw new ResourceNotFoundException(messages.getMessage("erro.processo.sem.documentos",formatarNumeroProcesso(processo))); | |
| 1213 | + throw new ResourceNotFoundException(messages.getMessage("erro.processo.sem.documentos", formatarNumeroProcesso(processo))); | |
| 1214 | 1214 | } |
| 1215 | 1215 | |
| 1216 | 1216 | return documentosProcesso; | ... | ... |
src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java
| ... | ... | @@ -102,10 +102,16 @@ public class SiparResource { |
| 102 | 102 | throw new BusinessException(messages.getMessage("erro.numero.sipar",processo)); |
| 103 | 103 | } |
| 104 | 104 | |
| 105 | - isProcessoSipar(numero, ano, digito); | |
| 105 | + if(!isProcessoSipar(numero, ano, digito)){ | |
| 106 | + throw new ResourceNotFoundException(messages.getMessage("erro.processo.nao.pertence.sipar", processo)); | |
| 107 | + } | |
| 108 | + | |
| 109 | + if(isProcessoEmTramitacao(numero, ano)){ | |
| 110 | + throw new BusinessException(messages.getMessage("erro.processo.em.tramitacao.sipar", processo)); | |
| 111 | + } | |
| 106 | 112 | |
| 107 | 113 | if(isProcessoImportado(numero, ano)){ |
| 108 | - throw new ResourceConflictException(messages.getMessage("erro.processo.sipar.importado",processo)); | |
| 114 | + throw new ResourceConflictException(messages.getMessage("erro.processo.sipar.importado", processo)); | |
| 109 | 115 | } |
| 110 | 116 | |
| 111 | 117 | importarProcesso(numero, ano); |
| ... | ... | @@ -221,10 +227,16 @@ public class SiparResource { |
| 221 | 227 | return false; |
| 222 | 228 | } |
| 223 | 229 | |
| 224 | - public void isProcessoSipar(String numeroDocumento, String anoDocumento, String digitoDocumento) throws ResourceNotFoundException{ | |
| 230 | + public boolean isProcessoSipar(String numeroDocumento, String anoDocumento, String digitoDocumento) throws ResourceNotFoundException{ | |
| 225 | 231 | if(dao.getDocumento(numeroDocumento, anoDocumento, digitoDocumento) == null){ |
| 226 | - throw new ResourceNotFoundException(messages.getMessage("erro.processo.nao.pertence.sipar",(numeroDocumento+anoDocumento+digitoDocumento))); | |
| 232 | + return false; | |
| 227 | 233 | } |
| 234 | + | |
| 235 | + return true; | |
| 236 | + } | |
| 237 | + | |
| 238 | + public boolean isProcessoEmTramitacao(String numero, String ano){ | |
| 239 | + return dao.isProcessoEmTramitacao(numero, ano); | |
| 228 | 240 | } |
| 229 | 241 | |
| 230 | 242 | public URI getResourcePath(String resourceId){ | ... | ... |
src/main/resources/config.properties
src/main/resources/messages.properties
| ... | ... | @@ -31,6 +31,7 @@ erro.numero.sipar = Número de processo não corresponde ao padrão do SIPAR. |
| 31 | 31 | erro.persistir.confirmacao.inclusao.documento = Ocorreu um erro ao persistir a confirmação de inclusão do documento, número gerado {0}. |
| 32 | 32 | erro.processar.conteudo.json = Erro ao processar o conteudo JSON, verifique a formação do JSON e se o envio foi realizado em Base64. |
| 33 | 33 | erro.processo.anexado.nao.infomado = Número do processo a anexar não informado. |
| 34 | +erro.processo.em.tramitacao.sipar = O processo {0} está em tramitação no SIPAR e não pode ser importado para o SEI. | |
| 34 | 35 | erro.processo.incluir.bloco = Não foi possivel incluir o processo no bloco. |
| 35 | 36 | erro.processo.nao.encontrado = Processo {0} não encontrado. |
| 36 | 37 | erro.processo.nao.importado = O processo {0} não foi encontrado nos registros de importação. | ... | ... |
src/main/webapp/WEB-INF/web.xml
| ... | ... | @@ -5,6 +5,11 @@ |
| 5 | 5 | version="3.0"> |
| 6 | 6 | <display-name>sei-broker</display-name> |
| 7 | 7 | |
| 8 | + <context-param> | |
| 9 | + <param-name>timezone</param-name> | |
| 10 | + <param-value>America/Sao_Paulo</param-value> | |
| 11 | + </context-param> | |
| 12 | + | |
| 8 | 13 | <session-config> |
| 9 | 14 | <session-timeout>10</session-timeout> |
| 10 | 15 | </session-config> | ... | ... |