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,7 +4,7 @@ | ||
4 | <modelVersion>4.0.0</modelVersion> | 4 | <modelVersion>4.0.0</modelVersion> |
5 | <groupId>br.gov.ans</groupId> | 5 | <groupId>br.gov.ans</groupId> |
6 | <artifactId>sei-broker</artifactId> | 6 | <artifactId>sei-broker</artifactId> |
7 | - <version>2.3.2</version> | 7 | + <version>2.4</version> |
8 | <packaging>war</packaging> | 8 | <packaging>war</packaging> |
9 | <name>sei-broker</name> | 9 | <name>sei-broker</name> |
10 | <description>Projeto demonstrativo de webservice Rest</description> | 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,7 +16,6 @@ import javax.persistence.Query; | ||
16 | import org.apache.commons.lang3.StringUtils; | 16 | import org.apache.commons.lang3.StringUtils; |
17 | 17 | ||
18 | import br.gov.ans.integracao.sei.modelo.DocumentoResumido; | 18 | import br.gov.ans.integracao.sei.modelo.DocumentoResumido; |
19 | -import br.gov.ans.integracao.sei.modelo.ProcessoResumido; | ||
20 | 19 | ||
21 | public class DocumentoDAO { | 20 | public class DocumentoDAO { |
22 | @PersistenceContext(unitName = "sei_pu", type = PersistenceContextType.EXTENDED) | 21 | @PersistenceContext(unitName = "sei_pu", type = PersistenceContextType.EXTENDED) |
@@ -201,8 +200,7 @@ public class DocumentoDAO { | @@ -201,8 +200,7 @@ public class DocumentoDAO { | ||
201 | results.stream().forEach((record) -> { | 200 | results.stream().forEach((record) -> { |
202 | DocumentoResumido documento = (DocumentoResumido) record[0]; | 201 | DocumentoResumido documento = (DocumentoResumido) record[0]; |
203 | documentos.add(documento); | 202 | documentos.add(documento); |
204 | - }); | ||
205 | - | 203 | + }); |
206 | }catch(NoResultException ex){ | 204 | }catch(NoResultException ex){ |
207 | return documentos; | 205 | return documentos; |
208 | } | 206 | } |
src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java
1 | package br.gov.ans.integracao.sei.dao; | 1 | package br.gov.ans.integracao.sei.dao; |
2 | 2 | ||
3 | +import java.math.BigDecimal; | ||
3 | import java.util.HashMap; | 4 | import java.util.HashMap; |
4 | import java.util.List; | 5 | import java.util.List; |
5 | import java.util.Map; | 6 | import java.util.Map; |
6 | 7 | ||
7 | -import javax.ejb.Stateless; | 8 | +import javax.ejb.Stateful; |
8 | import javax.inject.Inject; | 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 | import br.gov.ans.dao.DAO; | 15 | import br.gov.ans.dao.DAO; |
11 | import br.gov.ans.integracao.sipar.dao.ControleMigracao; | 16 | import br.gov.ans.integracao.sipar.dao.ControleMigracao; |
12 | import br.gov.ans.integracao.sipar.dao.ControleMigracaoId; | 17 | import br.gov.ans.integracao.sipar.dao.ControleMigracaoId; |
13 | import br.gov.ans.integracao.sipar.dao.DocumentoSipar; | 18 | import br.gov.ans.integracao.sipar.dao.DocumentoSipar; |
14 | 19 | ||
15 | -@Stateless | 20 | +@Stateful |
16 | public class SiparDAO { | 21 | public class SiparDAO { |
17 | 22 | ||
23 | + @PersistenceContext(unitName = "sei_broker_pu", type = PersistenceContextType.EXTENDED) | ||
24 | + private EntityManager em; | ||
25 | + | ||
18 | @SuppressWarnings("cdi-ambiguous-dependency") | 26 | @SuppressWarnings("cdi-ambiguous-dependency") |
19 | @Inject | 27 | @Inject |
20 | private DAO<DocumentoSipar> daoDocumento; | 28 | private DAO<DocumentoSipar> daoDocumento; |
@@ -42,6 +50,26 @@ public class SiparDAO { | @@ -42,6 +50,26 @@ public class SiparDAO { | ||
42 | return daoMigracao.findById(id); | 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 | public void merge(ControleMigracao controleMigracao){ | 73 | public void merge(ControleMigracao controleMigracao){ |
46 | daoMigracao.merge(controleMigracao); | 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,8 +47,8 @@ import br.gov.ans.integracao.sei.client.RetornoGeracaoProcedimento; | ||
47 | import br.gov.ans.integracao.sei.client.SeiPortTypeProxy; | 47 | import br.gov.ans.integracao.sei.client.SeiPortTypeProxy; |
48 | import br.gov.ans.integracao.sei.client.TipoProcedimento; | 48 | import br.gov.ans.integracao.sei.client.TipoProcedimento; |
49 | import br.gov.ans.integracao.sei.dao.DocumentoDAO; | 49 | import br.gov.ans.integracao.sei.dao.DocumentoDAO; |
50 | -import br.gov.ans.integracao.sei.dao.SiparDAO; | ||
51 | import br.gov.ans.integracao.sei.dao.ProcessoDAO; | 50 | import br.gov.ans.integracao.sei.dao.ProcessoDAO; |
51 | +import br.gov.ans.integracao.sei.dao.SiparDAO; | ||
52 | import br.gov.ans.integracao.sei.modelo.DocumentoResumido; | 52 | import br.gov.ans.integracao.sei.modelo.DocumentoResumido; |
53 | import br.gov.ans.integracao.sei.modelo.EnvioDeProcesso; | 53 | import br.gov.ans.integracao.sei.modelo.EnvioDeProcesso; |
54 | import br.gov.ans.integracao.sei.modelo.Motivo; | 54 | import br.gov.ans.integracao.sei.modelo.Motivo; |
@@ -1210,7 +1210,7 @@ public class ProcessoResource { | @@ -1210,7 +1210,7 @@ public class ProcessoResource { | ||
1210 | List<DocumentoResumido> documentosProcesso = documentoDAO.getDocumentosProcesso(idProcedimento.toString(), tipo, origem, somenteAssinados); | 1210 | List<DocumentoResumido> documentosProcesso = documentoDAO.getDocumentosProcesso(idProcedimento.toString(), tipo, origem, somenteAssinados); |
1211 | 1211 | ||
1212 | if(documentosProcesso.isEmpty()){ | 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 | return documentosProcesso; | 1216 | return documentosProcesso; |
src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java
@@ -102,10 +102,16 @@ public class SiparResource { | @@ -102,10 +102,16 @@ public class SiparResource { | ||
102 | throw new BusinessException(messages.getMessage("erro.numero.sipar",processo)); | 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 | if(isProcessoImportado(numero, ano)){ | 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 | importarProcesso(numero, ano); | 117 | importarProcesso(numero, ano); |
@@ -221,10 +227,16 @@ public class SiparResource { | @@ -221,10 +227,16 @@ public class SiparResource { | ||
221 | return false; | 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 | if(dao.getDocumento(numeroDocumento, anoDocumento, digitoDocumento) == null){ | 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 | public URI getResourcePath(String resourceId){ | 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,6 +31,7 @@ erro.numero.sipar = Número de processo não corresponde ao padrão do SIPAR. | ||
31 | erro.persistir.confirmacao.inclusao.documento = Ocorreu um erro ao persistir a confirmação de inclusão do documento, número gerado {0}. | 31 | erro.persistir.confirmacao.inclusao.documento = Ocorreu um erro ao persistir a confirmação de inclusão do documento, número gerado {0}. |
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. | 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 | erro.processo.anexado.nao.infomado = Número do processo a anexar não informado. | 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 | erro.processo.incluir.bloco = Não foi possivel incluir o processo no bloco. | 35 | erro.processo.incluir.bloco = Não foi possivel incluir o processo no bloco. |
35 | erro.processo.nao.encontrado = Processo {0} não encontrado. | 36 | erro.processo.nao.encontrado = Processo {0} não encontrado. |
36 | erro.processo.nao.importado = O processo {0} não foi encontrado nos registros de importação. | 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,6 +5,11 @@ | ||
5 | version="3.0"> | 5 | version="3.0"> |
6 | <display-name>sei-broker</display-name> | 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 | <session-config> | 13 | <session-config> |
9 | <session-timeout>10</session-timeout> | 14 | <session-timeout>10</session-timeout> |
10 | </session-config> | 15 | </session-config> |