From accd06327a09fa4865d91a17c6e2ea0d01c48006 Mon Sep 17 00:00:00 2001 From: Guilherme Andrade Del Cantoni Date: Tue, 16 Apr 2019 15:13:53 -0300 Subject: [PATCH] [Fixed #92] Ajuste para não interromper monitoramento de pendências em situações de falha --- rn/PendenciasTramiteRN.php | 25 +++++++++++++++---------- rn/ProcessarPendenciasRN.php | 4 ++-- rn/ReceberComponenteDigitalRN.php | 13 ++++++++----- rn/ReceberProcedimentoRN.php | 2 +- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/rn/PendenciasTramiteRN.php b/rn/PendenciasTramiteRN.php index c2908e6..652f9e4 100644 --- a/rn/PendenciasTramiteRN.php +++ b/rn/PendenciasTramiteRN.php @@ -71,17 +71,22 @@ class PendenciasTramiteRN extends InfraRN { $arrQuantidadeErrosTramite = array(); while (true) { - $this->gravarLogDebug('Recuperando lista de pendências do PEN', 1); - $arrObjPendenciasDTO = $this->obterPendenciasTramite(); - foreach ($arrObjPendenciasDTO as $objPendenciaDTO) { - $mensagemLog = sprintf(">>> Enviando pendência %d (status %s) para fila de processamento", - $objPendenciaDTO->getNumIdentificacaoTramite(), $objPendenciaDTO->getStrStatus()); - $this->gravarLogDebug($mensagemLog, 3, true); - $this->enviarPendenciaFilaProcessamento($objPendenciaDTO); + try { + $this->gravarLogDebug('Recuperando lista de pendências do PEN', 1); + $arrObjPendenciasDTO = $this->obterPendenciasTramite(); + foreach ($arrObjPendenciasDTO as $objPendenciaDTO) { + $mensagemLog = sprintf(">>> Enviando pendência %d (status %s) para fila de processamento", + $objPendenciaDTO->getNumIdentificacaoTramite(), $objPendenciaDTO->getStrStatus()); + $this->gravarLogDebug($mensagemLog, 3, true); + $this->enviarPendenciaFilaProcessamento($objPendenciaDTO); + } + } catch (Exception $e) { + //Apenas registra a falha no log do sistema e reinicia o ciclo de requisição + LogSEI::getInstance()->gravar(InfraException::inspecionar($e)); + } finally { + $this->gravarLogDebug("Reiniciando monitoramento de pendências", 1); + sleep(5); } - - $this->gravarLogDebug("Reiniciando monitoramento de pendências", 1); - sleep(5); } } catch(Exception $e) { diff --git a/rn/ProcessarPendenciasRN.php b/rn/ProcessarPendenciasRN.php index f710341..62dba08 100644 --- a/rn/ProcessarPendenciasRN.php +++ b/rn/ProcessarPendenciasRN.php @@ -33,9 +33,9 @@ class ProcessarPendenciasRN extends InfraAgendamentoTarefa ini_set('max_execution_time','0'); ini_set('memory_limit','-1'); - InfraDebug::getInstance()->setBolLigado(false); + InfraDebug::getInstance()->setBolLigado(true); InfraDebug::getInstance()->setBolDebugInfra(false); - InfraDebug::getInstance()->setBolEcho(false); + InfraDebug::getInstance()->setBolEcho(true); InfraDebug::getInstance()->limpar(); PENIntegracao::validarCompatibilidadeModulo(); diff --git a/rn/ReceberComponenteDigitalRN.php b/rn/ReceberComponenteDigitalRN.php index d05d44f..f73064f 100644 --- a/rn/ReceberComponenteDigitalRN.php +++ b/rn/ReceberComponenteDigitalRN.php @@ -100,11 +100,14 @@ class ReceberComponenteDigitalRN extends InfraRN $strHashDoArquivo = hash_file("sha256", $strCaminhoAnexo, true); if(strcmp($strHashInformado, $strHashDoArquivo) != 0) { - - $this->objProcessoEletronicoRN->recusarTramite($parNumIdentificacaoTramite, "Hash do componente digital não confere com o valor informado pelo remetente.", ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_CORROMPIDO); - - // Adiciono nos detalhes o nome do método para poder manipular o cache - throw new InfraException("Hash do componente digital não confere com o valor informado pelo remetente.", null, __METHOD__); + $strMensagem = "Hash do componente digital não confere com o valor informado pelo remetente."; + $this->objProcessoEletronicoRN->recusarTramite($parNumIdentificacaoTramite, $strMensagem, ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_CORROMPIDO); + + $strHashInformadoBase64 = base64_encode($strHashInformado); + $strHashDoArquivoBase64 = base64_encode($strHashDoArquivo); + $strDetalhes = "Hash do componente digital informado pelo PEN: $strHashInformadoBase64 \n"; + $strDetalhes .= "Hash do componente digital calculado pelo SEI: $strHashDoArquivoBase64 \n"; + throw new InfraException($strMensagem, null, $strDetalhes); } } diff --git a/rn/ReceberProcedimentoRN.php b/rn/ReceberProcedimentoRN.php index 8cd00a9..d21d6e2 100644 --- a/rn/ReceberProcedimentoRN.php +++ b/rn/ReceberProcedimentoRN.php @@ -217,7 +217,7 @@ class ReceberProcedimentoRN extends InfraRN } } } - //$this->fecharProcedimentoEmOutraUnidades($objProcedimentoDTO, $objMetadadosProcedimento); + $this->gravarLogDebug("Enviando recibo de conclusão do trâmite $parNumIdentificacaoTramite", 6); $objEnviarReciboTramiteRN = new EnviarReciboTramiteRN(); $objEnviarReciboTramiteRN->enviarReciboTramiteProcesso($parNumIdentificacaoTramite, $arrayHash); -- libgit2 0.21.2