Commit 70fa9b9b752f22f47bc3f23f27f340db89e9e3eb

Authored by andre guimaraes
1 parent 9b21da0e

Manutenção para evitar a importação de processos em tramite do SIPAR.

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
1   -versao.sistema = V_2.3.2
2 1 \ No newline at end of file
  2 +versao.sistema = V_2.4
3 3 \ No newline at end of file
... ...
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>
... ...