From 70fa9b9b752f22f47bc3f23f27f340db89e9e3eb Mon Sep 17 00:00:00 2001 From: andre guimaraes Date: Tue, 20 Mar 2018 17:43:31 +0000 Subject: [PATCH] Manutenção para evitar a importação de processos em tramite do SIPAR. --- pom.xml | 2 +- src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java | 4 +--- src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java | 32 ++++++++++++++++++++++++++++++-- src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java | 4 ++-- src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java | 20 ++++++++++++++++---- src/main/resources/config.properties | 2 +- src/main/resources/messages.properties | 1 + src/main/webapp/WEB-INF/web.xml | 5 +++++ 8 files changed, 57 insertions(+), 13 deletions(-) diff --git a/pom.xml b/pom.xml index c61237b..939e6b9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.gov.ans sei-broker - 2.3.2 + 2.4 war sei-broker Projeto demonstrativo de webservice Rest diff --git a/src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java b/src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java index 8addc25..87ca64c 100644 --- a/src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java +++ b/src/main/java/br/gov/ans/integracao/sei/dao/DocumentoDAO.java @@ -16,7 +16,6 @@ import javax.persistence.Query; import org.apache.commons.lang3.StringUtils; import br.gov.ans.integracao.sei.modelo.DocumentoResumido; -import br.gov.ans.integracao.sei.modelo.ProcessoResumido; public class DocumentoDAO { @PersistenceContext(unitName = "sei_pu", type = PersistenceContextType.EXTENDED) @@ -201,8 +200,7 @@ public class DocumentoDAO { results.stream().forEach((record) -> { DocumentoResumido documento = (DocumentoResumido) record[0]; documentos.add(documento); - }); - + }); }catch(NoResultException ex){ return documentos; } diff --git a/src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java b/src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java index d5fc73a..a5ce6d4 100644 --- a/src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java +++ b/src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java @@ -1,20 +1,28 @@ package br.gov.ans.integracao.sei.dao; +import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.ejb.Stateless; +import javax.ejb.Stateful; import javax.inject.Inject; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.PersistenceContextType; +import javax.persistence.Query; import br.gov.ans.dao.DAO; import br.gov.ans.integracao.sipar.dao.ControleMigracao; import br.gov.ans.integracao.sipar.dao.ControleMigracaoId; import br.gov.ans.integracao.sipar.dao.DocumentoSipar; -@Stateless +@Stateful public class SiparDAO { + @PersistenceContext(unitName = "sei_broker_pu", type = PersistenceContextType.EXTENDED) + private EntityManager em; + @SuppressWarnings("cdi-ambiguous-dependency") @Inject private DAO daoDocumento; @@ -42,6 +50,26 @@ public class SiparDAO { return daoMigracao.findById(id); } + public boolean isProcessoEmTramitacao(String numero, String ano){ + + String sql = "SELECT count(*) FROM DBPSIPAR.TB_TRAMITACAO TR " + + "WHERE " + + "TR.DT_RECEBIMENTO IS NULL " + + "AND TR.CO_DOCUMENTO = :numero " + + "AND TR.NU_ANO_DOCUMENTO = :ano "; + + Query query = em.createNativeQuery(sql); + query.setParameter("numero", numero); + query.setParameter("ano", ano); + + Long count = ((BigDecimal) query.getSingleResult()).longValue(); + + if(count > 0L){ + return true; + } + return false; + } + public void merge(ControleMigracao controleMigracao){ daoMigracao.merge(controleMigracao); } diff --git a/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java b/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java index 4e55a36..ced2e2f 100644 --- a/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java +++ b/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java @@ -47,8 +47,8 @@ import br.gov.ans.integracao.sei.client.RetornoGeracaoProcedimento; import br.gov.ans.integracao.sei.client.SeiPortTypeProxy; import br.gov.ans.integracao.sei.client.TipoProcedimento; import br.gov.ans.integracao.sei.dao.DocumentoDAO; -import br.gov.ans.integracao.sei.dao.SiparDAO; import br.gov.ans.integracao.sei.dao.ProcessoDAO; +import br.gov.ans.integracao.sei.dao.SiparDAO; import br.gov.ans.integracao.sei.modelo.DocumentoResumido; import br.gov.ans.integracao.sei.modelo.EnvioDeProcesso; import br.gov.ans.integracao.sei.modelo.Motivo; @@ -1210,7 +1210,7 @@ public class ProcessoResource { List documentosProcesso = documentoDAO.getDocumentosProcesso(idProcedimento.toString(), tipo, origem, somenteAssinados); if(documentosProcesso.isEmpty()){ - throw new ResourceNotFoundException(messages.getMessage("erro.processo.sem.documentos",formatarNumeroProcesso(processo))); + throw new ResourceNotFoundException(messages.getMessage("erro.processo.sem.documentos", formatarNumeroProcesso(processo))); } return documentosProcesso; diff --git a/src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java b/src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java index 5863a96..7e03b27 100644 --- a/src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java +++ b/src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java @@ -102,10 +102,16 @@ public class SiparResource { throw new BusinessException(messages.getMessage("erro.numero.sipar",processo)); } - isProcessoSipar(numero, ano, digito); + if(!isProcessoSipar(numero, ano, digito)){ + throw new ResourceNotFoundException(messages.getMessage("erro.processo.nao.pertence.sipar", processo)); + } + + if(isProcessoEmTramitacao(numero, ano)){ + throw new BusinessException(messages.getMessage("erro.processo.em.tramitacao.sipar", processo)); + } if(isProcessoImportado(numero, ano)){ - throw new ResourceConflictException(messages.getMessage("erro.processo.sipar.importado",processo)); + throw new ResourceConflictException(messages.getMessage("erro.processo.sipar.importado", processo)); } importarProcesso(numero, ano); @@ -221,10 +227,16 @@ public class SiparResource { return false; } - public void isProcessoSipar(String numeroDocumento, String anoDocumento, String digitoDocumento) throws ResourceNotFoundException{ + public boolean isProcessoSipar(String numeroDocumento, String anoDocumento, String digitoDocumento) throws ResourceNotFoundException{ if(dao.getDocumento(numeroDocumento, anoDocumento, digitoDocumento) == null){ - throw new ResourceNotFoundException(messages.getMessage("erro.processo.nao.pertence.sipar",(numeroDocumento+anoDocumento+digitoDocumento))); + return false; } + + return true; + } + + public boolean isProcessoEmTramitacao(String numero, String ano){ + return dao.isProcessoEmTramitacao(numero, ano); } public URI getResourcePath(String resourceId){ diff --git a/src/main/resources/config.properties b/src/main/resources/config.properties index 9ca47b9..f543f95 100644 --- a/src/main/resources/config.properties +++ b/src/main/resources/config.properties @@ -1 +1 @@ -versao.sistema = V_2.3.2 \ No newline at end of file +versao.sistema = V_2.4 \ No newline at end of file diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index 0733f39..e7bc230 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -31,6 +31,7 @@ erro.numero.sipar = Número de processo não corresponde ao padrão do SIPAR. erro.persistir.confirmacao.inclusao.documento = Ocorreu um erro ao persistir a confirmação de inclusão do documento, número gerado {0}. erro.processar.conteudo.json = Erro ao processar o conteudo JSON, verifique a formação do JSON e se o envio foi realizado em Base64. erro.processo.anexado.nao.infomado = Número do processo a anexar não informado. +erro.processo.em.tramitacao.sipar = O processo {0} está em tramitação no SIPAR e não pode ser importado para o SEI. erro.processo.incluir.bloco = Não foi possivel incluir o processo no bloco. erro.processo.nao.encontrado = Processo {0} não encontrado. erro.processo.nao.importado = O processo {0} não foi encontrado nos registros de importação. diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 67144b0..5a89d85 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -5,6 +5,11 @@ version="3.0"> sei-broker + + timezone + America/Sao_Paulo + + 10 -- libgit2 0.21.2