From deaa9f2590782af169f779d76597df9e50f77ec3 Mon Sep 17 00:00:00 2001 From: andre.guimaraes Date: Thu, 20 Sep 2018 14:55:50 -0300 Subject: [PATCH] Valida interessados do processo --- src/main/java/br/gov/ans/integracao/sei/dao/ContatoDAO.java | 10 ++++++++++ src/main/java/br/gov/ans/integracao/sei/modelo/Contato.java | 3 ++- src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java | 8 +++++++- src/main/java/br/gov/ans/integracao/sei/utils/ContatoHelper.java | 15 ++++++++++++++- src/main/java/br/gov/ans/integracao/sei/utils/InteressadoHelper.java | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/main/java/br/gov/ans/integracao/sei/utils/ProcessoHelper.java | 38 ++++++++++++++++++++++++++++++++++++++ src/main/resources/messages.properties | 3 +++ src/test/java/br/gov/ans/integracao/sei/testes/FunctionalTest.java | 4 ++-- 8 files changed, 121 insertions(+), 5 deletions(-) create mode 100644 src/main/java/br/gov/ans/integracao/sei/utils/InteressadoHelper.java create mode 100644 src/main/java/br/gov/ans/integracao/sei/utils/ProcessoHelper.java diff --git a/src/main/java/br/gov/ans/integracao/sei/dao/ContatoDAO.java b/src/main/java/br/gov/ans/integracao/sei/dao/ContatoDAO.java index f4b32e1..8d65310 100644 --- a/src/main/java/br/gov/ans/integracao/sei/dao/ContatoDAO.java +++ b/src/main/java/br/gov/ans/integracao/sei/dao/ContatoDAO.java @@ -1,5 +1,7 @@ package br.gov.ans.integracao.sei.dao; +import java.util.List; + import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContextType; @@ -26,4 +28,12 @@ public class ContatoDAO { return (Contato) query.getSingleResult(); } + + public List getContatosNaoTemporariosPelaSigla(String sigla){ + Query query = em.createNamedQuery("Contato.pesquisarPorSigla",Contato.class); + + query.setParameter("sigla", sigla); + + return query.getResultList(); + } } diff --git a/src/main/java/br/gov/ans/integracao/sei/modelo/Contato.java b/src/main/java/br/gov/ans/integracao/sei/modelo/Contato.java index 992f1b3..972ad3a 100644 --- a/src/main/java/br/gov/ans/integracao/sei/modelo/Contato.java +++ b/src/main/java/br/gov/ans/integracao/sei/modelo/Contato.java @@ -17,7 +17,8 @@ import org.codehaus.jackson.map.annotate.JsonSerialize; @Entity @Table(name="contato") @NamedQueries({@NamedQuery(name="Contato.pesquisarPorID", query="select c from Contato c where c.id = :id"), - @NamedQuery(name="Contato.pesquisarPorSigla", query="select c from Contato c where c.sigla = :sigla")}) + @NamedQuery(name="Contato.pesquisarPorSigla", query="select c from Contato c where c.sigla = :sigla"), + @NamedQuery(name="Contato.pesquisarNaoTemporariosPorSigla", query="select c from Contato c where c.sigla = :sigla and tipo != 4 order by id desc")}) public class Contato{ @Id 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 9669ffa..ae20984 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 @@ -63,6 +63,7 @@ import br.gov.ans.integracao.sei.modelo.ProcessoResumido; import br.gov.ans.integracao.sei.modelo.ResultadoConsultaProcesso; import br.gov.ans.integracao.sei.modelo.SobrestamentoProcesso; import br.gov.ans.integracao.sei.utils.Constantes; +import br.gov.ans.integracao.sei.utils.ProcessoHelper; import br.gov.ans.integracao.sipar.dao.DocumentoSipar; import br.gov.ans.utils.MessageUtils; @@ -92,6 +93,9 @@ public class ProcessoResource { private MessageUtils messages; @Inject + private ProcessoHelper processoHelper; + + @Inject private Logger logger; @Context @@ -555,11 +559,13 @@ public class ProcessoResource { @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public Response abrirProcesso(@PathParam("unidade") String unidade, @QueryParam("auto-formatacao") String autoFormatar, NovoProcesso processo) throws RemoteException, Exception{ + processoHelper.validarNovoProcesso(processo); + if(StringUtils.isNotBlank(processo.getDadosProcesso().getNumeroProtocolo()) && isAutoFormatar(autoFormatar)){ String numeroFormatado = formatarNumeroProcesso(processo.getDadosProcesso().getNumeroProtocolo()); processo.getDadosProcesso().setNumeroProtocolo(numeroFormatado); } - + RetornoGeracaoProcedimento retorno = seiNativeService.gerarProcedimento(Constantes.SEI_BROKER, Operacao.ABRIR_PROCESSO, unidadeResource.consultarCodigo(unidade), processo.getDadosProcesso(), processo.getDocumentos(), processo.getProcessosRelacionados(), unidadeResource.buscarCodigoUnidades(processo.getUnidadesDestino()), getSOuN(processo.isManterAbertoOrigem()), getSOuN(processo.isEnviarEmailNotificacao()), formatarData(processo.getDataRetornoProgramado()), (processo.getQtdDiasAteRetorno() != null ? processo.getQtdDiasAteRetorno().toString() : null), getSOuN(processo.isSomenteDiasUteis()), diff --git a/src/main/java/br/gov/ans/integracao/sei/utils/ContatoHelper.java b/src/main/java/br/gov/ans/integracao/sei/utils/ContatoHelper.java index 26876fb..8d8a82d 100644 --- a/src/main/java/br/gov/ans/integracao/sei/utils/ContatoHelper.java +++ b/src/main/java/br/gov/ans/integracao/sei/utils/ContatoHelper.java @@ -6,6 +6,7 @@ import static br.gov.ans.integracao.sei.utils.Constantes.SIM; import static br.gov.ans.integracao.sei.utils.Util.getSOuN; import java.rmi.RemoteException; +import java.util.List; import javax.inject.Inject; @@ -122,11 +123,23 @@ public class ContatoHelper { } } } - + + public br.gov.ans.integracao.sei.modelo.Contato getContatoNaoTemporarioMaisAntigo(String sigla){ + List contatosNaoTemporariosPelaSigla = contatoDAO.getContatosNaoTemporariosPelaSigla(sigla); + + return contatosNaoTemporariosPelaSigla.get(0); + } + public void preencherIdContato(Contato contato, String sigla){ contato.setIdContato(getIdContato(sigla)+""); } + public Boolean isContatoCadastradoComoNaoTemporario(String sigla){ + List contatosNaoTemporariosPelaSigla = contatoDAO.getContatosNaoTemporariosPelaSigla(sigla); + + return !contatosNaoTemporariosPelaSigla.isEmpty(); + } + private Integer getIdContato(String sigla){ return contatoDAO.getContatoPelaSigla(sigla).getId(); } diff --git a/src/main/java/br/gov/ans/integracao/sei/utils/InteressadoHelper.java b/src/main/java/br/gov/ans/integracao/sei/utils/InteressadoHelper.java new file mode 100644 index 0000000..f953a03 --- /dev/null +++ b/src/main/java/br/gov/ans/integracao/sei/utils/InteressadoHelper.java @@ -0,0 +1,45 @@ +package br.gov.ans.integracao.sei.utils; + +import javax.inject.Inject; + +import br.gov.ans.integracao.sei.client.Interessado; +import br.gov.ans.integracao.sei.modelo.Contato; + +public class InteressadoHelper { + @Inject + private ContatoHelper contatoHelper; + + public void tratarInteressados(Interessado[] interessados){ + for(int i=0; i < interessados.length; i++){ + interessados[i] = tratarInteressado(interessados[i]); + } + } + + public Interessado tratarInteressado(Interessado interessado){ + if(isInteressadoCadastradoComoNaoTemporario(interessado.getSigla())){ + return getRegistroInteressadoNaoTemporarioMaisAntigo(interessado.getSigla()); + } + + return interessado; + } + + private boolean isInteressadoCadastradoComoNaoTemporario(String sigla){ + return contatoHelper.isContatoCadastradoComoNaoTemporario(sigla); + } + + public Interessado getRegistroInteressadoNaoTemporarioMaisAntigo(String sigla){ + Contato contatoNaoTemporarioMaisAntigo = contatoHelper.getContatoNaoTemporarioMaisAntigo(sigla); + + return convertContatoParaInteressado(contatoNaoTemporarioMaisAntigo); + } + + private Interessado convertContatoParaInteressado(Contato contato){ + Interessado interessado = new Interessado(); + + interessado.setNome(contato.getNome()); + interessado.setSigla(contato.getSigla()); + + return interessado; + } + +} diff --git a/src/main/java/br/gov/ans/integracao/sei/utils/ProcessoHelper.java b/src/main/java/br/gov/ans/integracao/sei/utils/ProcessoHelper.java new file mode 100644 index 0000000..5cb34c4 --- /dev/null +++ b/src/main/java/br/gov/ans/integracao/sei/utils/ProcessoHelper.java @@ -0,0 +1,38 @@ +package br.gov.ans.integracao.sei.utils; + +import javax.inject.Inject; + +import org.apache.commons.lang3.ArrayUtils; + +import br.gov.ans.integracao.sei.exceptions.BusinessException; +import br.gov.ans.integracao.sei.modelo.NovoProcesso; +import br.gov.ans.utils.MessageUtils; + +public class ProcessoHelper { + + @Inject + private MessageUtils messages; + + @Inject + private InteressadoHelper interessadoHelper; + + public void validarNovoProcesso(NovoProcesso novoProcesso) throws BusinessException{ + if(novoProcesso == null){ + throw new BusinessException(messages.getMessage("erro.novo.processo.vazio")); + } + + if(novoProcesso.getDadosProcesso() == null){ + throw new BusinessException(messages.getMessage("erro.dados.processo.nao.informados")); + } + + if(isSemInteressados(novoProcesso)){ + throw new BusinessException(messages.getMessage("erro.interessado.nao.informado")); + }else{ + interessadoHelper.tratarInteressados(novoProcesso.getDadosProcesso().getInteressados()); + } + } + + public boolean isSemInteressados(NovoProcesso processo){ + return ArrayUtils.isEmpty(processo.getDadosProcesso().getInteressados()); + } +} diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index c2b8d82..b653eff 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -17,6 +17,7 @@ erro.cidade.nao.encontrada.ibge = Não há cidades para o código do IBGE informado erro.codigo.ibge.invalido = Código do IBGE inválido, não foram encontradas cidades relacionadas ao código {0}. erro.conectar.sei = Ocorreu um erro ao se conectar ao SEI, contate a equipe responsável. erro.contato.nao.encontrado = Nenhum contato foi encontrado para o identificador {0}. +erro.dados.processo.nao.informados = Dados do processo não informados. erro.desanexar.processo = Ocorreu um erro ao desanexar o processo. erro.desbloquear.processo = Ocorreu um erro ao desbloquear o processo. erro.desrelacionar.processo = Ocorreu um erro ao remover o relacionamento. @@ -26,6 +27,7 @@ erro.documento.sem.processo = É necessário informar um número de processo para i erro.estado.nao.encontrado = Não foi encontrado um estado para a sigla {0}. erro.inesperado = Ocorreu um erro inesperado no SEI-Broker, contacte a equipe responsável. erro.informe.processo = É necessário informar o número do processo. +erro.interessado.nao.informado = É necessário informar algum interessado. erro.campos.obrigatorios.sobrestamento.processo = É necessário informar o número do processo e o motivo do sobrestamento. erro.marcar.processo = Ocorreu um erro ao adicionar o marcador ao processo. erro.motivo.cancelamento.obrigatorio = É obrigatório informar o motivo do cancelamento. @@ -34,6 +36,7 @@ erro.nao.unidades.processo.aberto = Não há unidades onde o processo esteja abert erro.nenhum.contato.encontrado = Nenhum contato encontrado. erro.nenhum.documento.encontrado.interessado = Nenhum documento foi encontrado para o interessado {0}. erro.nenhum.processo.encontrado.filtros = Nenhum processo encontrado para os filtros informados. +erro.novo.processo.vazio = Processo vazio. 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. diff --git a/src/test/java/br/gov/ans/integracao/sei/testes/FunctionalTest.java b/src/test/java/br/gov/ans/integracao/sei/testes/FunctionalTest.java index 8bb602b..afe620a 100644 --- a/src/test/java/br/gov/ans/integracao/sei/testes/FunctionalTest.java +++ b/src/test/java/br/gov/ans/integracao/sei/testes/FunctionalTest.java @@ -8,7 +8,7 @@ public class FunctionalTest { protected final String USUARIO = "desenv_integracao_sei"; protected final String SENHA = "integra_sei_2016"; - protected static final Boolean DESENVOLVIMENTO = true; + protected static final Boolean DESENVOLVIMENTO = false; protected static final String BASIC = "Basic ZGVzZW52X2ludGVncmFjYW9fc2VpOmludGVncmFfc2VpXzIwMTY="; @@ -34,7 +34,7 @@ public class FunctionalTest { if(DESENVOLVIMENTO){ baseHost = "http://localhost"; }else{ - baseHost = "http://ansdsjboss01.ans.gov.br"; + baseHost = "http://ansdsjboss01a.ans.gov.br"; } } RestAssured.baseURI = baseHost; -- libgit2 0.21.2