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> | ... | ... |