Commit 70fa9b9b752f22f47bc3f23f27f340db89e9e3eb

Authored by andre guimaraes
1 parent 9b21da0e

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

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